JSLinux
(bellard.org)- JSLinux propose une liste de VM permettant d’exécuter directement Linux et d’autres systèmes d’exploitation dans le navigateur, avec possibilité de consulter aussi le CPU, l’UI, VFsync et les fichiers de configuration
- Les éléments disponibles sont répartis entre x86_64, x86 et riscv64, et incluent Alpine Linux, Buildroot, Fedora 33, Windows 2000 et FreeDOS
- La console x86_64 Alpine Linux 3.23.2 inclut la prise en charge de AVX-512 et APX, tandis que x86 Alpine Linux 3.12.0 est proposé séparément en versions console et X Window
- Un environnement graphique ou X Window est disponible pour Windows 2000, FreeDOS, Alpine Linux, Buildroot et Fedora 33, et certains menus X Window s’ouvrent avec le bouton droit de la souris
- L’entrée riscv64 Fedora 33 affiche un avertissement indiquant que le démarrage est plus long, et Windows 2000 renvoie vers une clause de non-responsabilité distincte sans accès VFsync
Liste des VM exécutables dans le navigateur
- JSLinux fournit une liste de systèmes émulés permettant d’exécuter Linux ou d’autres systèmes d’exploitation dans le navigateur
- Chaque entrée comprend le CPU, le système d’exploitation, l’interface utilisateur, la disponibilité de l’accès à VFsync, un lien de démarrage, le fichier de configuration et des remarques
- Le tableau indique également la disponibilité de l’accès à VFsync ainsi que des liens de configuration liés à TEMU
Éléments disponibles par CPU et système d’exploitation
-
x86_64
- Alpine Linux 3.23.2 Console
- Accès VFsync disponible
- Fichier de configuration : alpine-x86_64.cfg
- Inclut la prise en charge de AVX-512 et de APX
- Alpine Linux 3.23.2 Console
-
x86
- Alpine Linux 3.12.0 Console
- Accès VFsync disponible
- Fichier de configuration : alpine-x86.cfg
- Alpine Linux 3.12.0 X Window
- Accès VFsync disponible
- Fichier de configuration : alpine-x86-xwin.cfg
- Les menus s’utilisent avec le bouton droit de la souris
- Windows 2000 Graphical
- Pas d’accès VFsync
- Fichier de configuration : win2k.cfg
- Une clause de non-responsabilité est liée
- FreeDOS VGA Text
- Pas d’accès VFsync
- Fichier de configuration : freedos.cfg
- Alpine Linux 3.12.0 Console
-
riscv64
- Buildroot Linux Console
- Accès VFsync disponible
- Fichier de configuration : buildroot-riscv64.cfg
- Buildroot Linux X Window
- Accès VFsync disponible
- Fichier de configuration : buildroot-riscv64-xwin.cfg
- Les menus s’utilisent avec le bouton droit de la souris
- Fedora 33 Linux Console
- Accès VFsync disponible
- Fichier de configuration : fedora33-riscv.cfg
- Un avertissement indique que le démarrage est plus long
- Fedora 33 Linux X Window
- Accès VFsync disponible
- Fichier de configuration : fedora33-riscv-xwin.cfg
- Un avertissement indique que le démarrage est plus long, et les menus s’utilisent avec le bouton droit de la souris
- Buildroot Linux Console
2 commentaires
Commentaires sur Hacker News
Fabrice est vraiment doué pour créer des logiciels autosuffisants, et il arrive souvent que le résultat acquière une vie propre.
Exemple moins connu : l’émulateur de terminal de JSLinux a été forké plusieurs fois et est aujourd’hui connu sous le nom de xterm.js, devenu l’émulateur de terminal de référence intégrable dans le Web.
Je travaille maintenant sur un véritable successeur de JSLinux : le noyau et l’espace utilisateur sont compilés nativement en Wasm, ce qui le rend beaucoup plus rapide, et pour l’émulation de terminal il utilise évidemment xterm.js.
Si vous aimez les démos pleines de bugs qu’on ne devrait sans doute pas encore partager, https://linux.tombl.dev vaut le détour, mais pour l’instant il n’y a qu’un shell busybox, donc il faut être habitué à
echo *plutôt qu’àls.Je connaissais QEMU, ffmpeg, ses travaux liés au LTE et QuickJS, mais je ne savais pas que xterm.js venait aussi de lui.
attempted to munmapet un avertissement du noyau comme ci-dessous.Une stack trace apparaît avec des lignes comme
WARNING: CPU: 3 PID: 36 at kernel/exit.c:812 0x00000000,Comm: sh Not tainted 6.1.132, puis elle remonte versvmlinux-NLTKI6YG.wasmetworker-MHWHWELT.js.On dirait que la majeure partie a été réécrite, et c’est probablement mieux ainsi.
https://github.com/xtermjs/xterm.js
https://github.com/chjj/term.js
J’ai essayé sur un MacBook, mais les frappes au clavier n’étaient pas prises en compte.
ps,cat,vi,edplantent toutes.Je ne connais pas bien l’intégration de busybox, donc je ne sais pas quoi faire.
Fabrice est impressionnant. La quantité de choses qu’il a créées est tout simplement incroyable.
Si j’avais créé ne serait-ce qu’une seule de ses réalisations, par exemple ffmpeg, QEMU ou tinyc, je m’en serais vanté toute ma vie, mais lui continue simplement à hacker d’autres trucs géniaux.
Les téléphones, les systèmes d’exploitation, les environnements de bureau, les pays, les app stores, tout.
Il n’y a pas tant de machines virtuelles qui tournent dans le navigateur.
https://copy.sh/v86/
https://webvm.io/
https://bellard.org/jslinux/
https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce)
https://www.pcjs.org/ prend en charge beaucoup de matériel et de systèmes d’exploitation (https://github.com/jeffpar/pcjs)
Côté Mac OS, il y a aussi https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...), https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo..., https://jamesfriend.com.au/pce-js/pce-js-apps/
https://amiga.oszx.co/
https://www.file-hunter.com/AMIGA/
https://www.file-hunter.com/MSX/ est du MSX via WebMSX.
Quand on regarde l’extrême des développeurs incroyablement productifs, cela contraste de façon intéressante avec des dogmes du type « une fonction ou un fichier ne doit jamais dépasser x lignes »
quickjs.cfait 50 000 lignes et contient aussi des fonctions de plusieurs centaines de ligneshttps://github.com/bellard/quickjs/blob/master/quickjs.c
Bien sûr, selon le contexte, d’autres approches peuvent être les bonnes
J’ai moi aussi une mémoire de travail assez grande, et ce n’est que plus tard que j’ai compris que mes limites de taille de fichiers et de fonctions étaient bien plus élevées que celles des autres
Ce genre de dogme devient nécessaire quand plusieurs personnes doivent lire et écrire dans le même fichier
Au début, c’est intimidant, mais avec le bon éditeur, c’est étonnamment facile d’y travailler. Cela dit, beaucoup d’éditeurs rament avec des fichiers aussi gros
Le fichier est très volumineux, mais il est organisé plus ou moins par signification, si bien que, par exemple, quand on ajoute une nouvelle méthode d’itérateur, le code pertinent est regroupé à proximité et le travail est facilité
Cela dépend aussi du langage utilisé. Par exemple, la JVM peut refuser d’inliner une fonction si le nombre d’instructions bytecode dépasse un certain seuil
Les programmeurs qui appliquent les dogmes à la lettre peuvent être nuisibles
Kohei Tokunaga est en train de construire la génération suivante de cette lignée
https://ktock.github.io/container2wasm-demo/
Il utilise le réseau dans le navigateur basé sur
fetchd’Emscripten ou un proxy WebSocket compatible POSIXhttps://ktock.github.io/container2wasm-demo/amd64-debian-was...
https://github.com/container2wasm/container2wasm?tab=readme-...
J’ai touché à Windows 2000 pour la première fois en 20 ans. Je sais que la nostalgie peut brouiller le jugement, mais avec cette UI, j’y retournerais tout de suite
J’ai vraiment apprécié la barre des tâches sans bazar et le menu Démarrer simple, pas rempli de recommandations inutiles et de pubs
Aujourd’hui, c’est un méli-mélo de quatre générations de toolkits GUI, avec certaines interfaces dans un style et d’autres dans un autre
“Windows 2000 Server named peak Microsoft. Readers say it's all been downhill since Clippy”
https://www.theregister.com/2025/04/11/windows_2000_best_mic...
https://news.ycombinator.com/item?id=43653421
J’ai le sentiment que l’open source est par nature aligné avec les intérêts des utilisateurs, et qu’il dispose de mécanismes pour empêcher l’enshittification
Quelqu’un sait-il comment Fabrice Bellard gagne sa vie ? Ses productions open source sont vraiment stupéfiantes
Il est même difficile de savoir s’il existe des gens d’un niveau comparable. J’imagine que VMware a dû essayer de le recruter, ou que Google a voulu l’attirer du côté des codecs vidéo, de V8, du rendu de Chromium ou de ffmpeg
Il semble qu’il sorte de France pas mal d’artistes logiciels ou de contributeurs individuels extrêmement talentueux, créatifs et productifs
Je ne sais pas si c’est un facteur spécifiquement français, le système éducatif des Écoles, ou autre chose, mais cela se remarque
La technologie française avait une réputation comparable à la qualité des vieilles Renault, mais en pratique je ne l’ai pas constaté ainsi. Renault et Citroën m’ont même plutôt impressionné
À l’inverse, travailler avec des ingénieurs logiciel allemands a été difficile : l’attitude « si ce n’est pas fait chez nous, ça ne va pas » y était très forte. Ce n’est bien sûr que ma généralisation
Le problème de l’écosystème tech européen est simple : nous ne savons pas vendre et nous optimisons pour l’efficacité des ressources. « Salaire compétitif » signifie souvent qu’on ne paiera en aucun cas au-dessus du prix du marché
Les États-Unis optimisent pour la croissance et acceptent des salaires plus élevés, en cherchant à amortir le coût par cette croissance
Enfin, là d’où je viens, beaucoup se moquent de la France en disant qu’elle a été ruinée par l’immigration. On peut avoir ce point de vue, mais il est aussi vrai que la France a attiré une fuite des cerveaux venue de ses anciennes colonies, obtenant ainsi des personnes très compétentes et productives
Mon directeur de master venait lui aussi de Côte d’Ivoire, et chez Bootlin j’ai travaillé avec des ingénieurs de tout premier plan dont les noms n’étaient pas francophones
Sur https://barebox.org/webdemo, JSLinux est utilisé pour permettre aux utilisateurs potentiels de voir la commodité du shell du bootloader sans avoir à le flasher sur du matériel réel
Content de voir les différents forks mentionnés ici ; il faudra vérifier lequel fait le mieux tourner bareDOOM, et s’il y en a un où le son fonctionne
JSLinux a inspiré la création d’Endor (https://endor.dev), et son travail sur QEMU sert aussi de base à de nombreux projets navigateur liés à Wasm
La configuration CORS est incorrecte, donc pour que cela fonctionne correctement, il faut accéder à
https://bellard.org/jslinux/et non au lienhttps://www.bellard.org/jslinux/.