Un jeune développeur a réalisé l’exploit d’émuler le système d’exploitation Linux au sein d’un fichier PDF, repoussant les limites de ce format traditionnel. Bien que les performances soient limitées, cette innovation ouvre la voie à des expériences surprenantes et soulève des questions sur l’utilisation des fonctionnalités JavaScript dans les documents.
À peine un mois après avoir dévoilé un port de Doom fonctionnant dans un fichier PDF, un lycéen et programmeur, « Ading2210 », a réussi à émuler Linux au sein de ce format de fichier populaire. Bien que les performances soient limitées, le projet redéfinit ce qui est possible avec les outils JavaScript des PDF. Les utilisateurs peuvent l’essayer ici en utilisant des navigateurs Chromium 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 ressemble de près à celui de DoomPDF d’Ading2210. Par exemple, les entrées réutilisent l’astuce du hack Tetris PDF précédemment mise au point, réutilisant le code du port Doom. Les utilisateurs peuvent cliquer sur des touches virtuelles sous l’écran principal, mais la plupart préféreront probablement les contrôles au clavier, qui interprètent 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 du code JavaScript. Adobe Acrobat inclut l’ensemble de la caractéristique JavaScript, permettant des fonctionnalités telles que le rendu 3D, la détection de moniteurs et les requêtes HTTP.
Les PDF exécutés dans les navigateurs utilisent une version plus limitée de cela, mais elle est suffisante pour faire fonctionner des jeux et des systèmes d’exploitation. Ading2210 a découvert qu’une ancienne version d’Emscripten ciblant asm.js au lieu de WebAssembly peut compiler du code C pour fonctionner dans ce format de fichier.
Comme DoomPDF, l’émulation de Linux souffre d’une performance lente. Le démarrage du Core prend jusqu’à une minute entière – 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 par défaut en 32 bits. Cependant, les utilisateurs peuvent construire une version 64 bits à partir du code source en clonant le dépôt au sein d’un véritable système Linux, en modifiant la ligne « BITS » et en téléchargeant la version Emscripten 1.39.20. Malheureusement, faire fonctionner la version 64 bits double l’handicap de performance.
Les utilisateurs intéressés par une application Linux plus pratique pour les matériels modestes peuvent essayer le ChromeOS RMA Shim Bootloader d’Ading2210. La collection de scripts permet à une distribution complète de Debian de fonctionner sur un Chromebook sans modifier le firmware. Le projet supporte également les appareils d’entreprise enregistrés.
