D'abord Tetris, puis Doom, maintenant Linux – quelle est la prochaine étape?
Résumer: Au début du mois dernier, quelqu'un a utilisé le support JavaScript du format PDF pour exécuter Tetris à l'intérieur de ce qui devrait normalement être un document texte statique. Comme on pouvait s'y attendre, en quelques jours, un élève du secondaire a amélioré le piratage pour exécuter DOOM dans un fichier PDF. Le même développeur a maintenant amélioré le code pour exécuter l'intégralité du système d'exploitation Linux.
À peine un mois après avoir dévoilé un port de Doom en cours d'exécution dans un PDF, un étudiant du secondaire et un programmeur « Ading2210 » a réussi Linux dans le format de fichier populaire. Bien que les performances soient limitées, le projet redéfinit ce qui est possible avec les outils JavaScript PDF. Les utilisateurs peuvent l'essayer ici à l'aide de navigateurs de chrome comme Chrome, Edge et Opera. Le code source est disponible sur la page GitHub du développeur.
LinuxPDF fonctionne dans un émulateur RISC-V basé sur TinyEmu. Son fonctionnement intérieur ressemble étroitement à ceux de DoMPDF d'Ading2210. Par exemple, les entrées répètent l'astuce lancée par le piratage Tetris PDF précédent, réutilisant le code du port Doom. Les utilisateurs peuvent cliquer sur les touches virtuelles sous l'écran principal, mais la plupart préféreront probablement les contrôles du clavier direct, qui fonctionnent en interprétant les entrées dans un champ de texte.
Bien que le format PDF ait été principalement conçu pour afficher du texte et des images, il peut également exécuter le code JavaScript. Adobe Acrobat comprend l'intégralité des spécifications JavaScript, permettant des fonctionnalités telles que le rendu 3D, la détection de moniteur et les demandes HTTP.
Les PDF fonctionnant dans les navigateurs utilisent une version plus limitée, mais c'est assez bon pour exécuter des jeux et des systèmes d'exploitation. Ading2210 a découvert qu'une ancienne version d'Emscripten qui cible ASM.JS au lieu de WebAssembly peut compiler le code C pour s'exécuter dans le format de fichier.
Comme DoMPDF, l'émulation Linux souffre de performances lentes. Le démarrage du noyau prend une minute complète – environ 100 fois plus long qu'un système Linux traditionnel. Selon Ading2210, cela ne peut malheureusement pas être corrigé car Chromium utilise une version de V8 qui ne prend pas en charge le compilateur JIT.
Le système de fichiers est 32 bits par défaut. Cependant, les utilisateurs peuvent créer une version 64 bits à partir du code source en clonage le référentiel dans un système Linux réel, en modifiant la ligne « bits » et en téléchargeant EMScripten version 1.39.20. Malheureusement, l'exécution de la version 64 bits double le déficit de performance.
Les utilisateurs intéressés par une application Linux plus pratique pour le matériel bas de gamme peuvent essayer le chromeos RMA Shim Bootloader d'Ading2210. La collection de scripts permet à une distribution de Debian complète de s'exécuter sur un Chromebook sans modifier le firmware. Le projet prend également en charge les appareils d'entreprise inscrits.