Après, entre autre, Qemu, Ffmpeg, Tcc et après avoir calculé le plus grand nombre de décimales de Pi, Fabrice Bellard nous livre cette fois-ci, un émulateur x86 tournant dans un navigateur web. Pour tester, il vous faudra utiliser soit FF4 soit Chromium. (A noter: l'exécution dans FF est environ 2 fois plus rapide.)
L'image disque est un ramfs qui contient un système de fichiers créé avec buildroot contenant busybox. Le noyau est un 2.6.20. Pour l'instant, il n'y a pas d'émulation réseau. Par contre le compilateur tcc est disponible ainsi que emacs (et vi). Il y a d'ailleurs un fichier hello.c que l'on peut compiler.
Il y a plus d'info disponible ici.
Comme vu dans un commentaire sur un autre site, il ne manque plus qu'à faire tourner X et on pourra alors faire tourner FF qui tourne sur un Linux qui tourne sur FF qui tourne sur Linux qui...
# liens pas bons
Posté par Christophe Turbout . Évalué à 8.
http://www.ffmpeg.org/ pour ffmpeg
http://bellard.org/tcc/ avec un d et non un g
http://bellard.org/jslinux/tech.html pareil pour le dernier ...
[^] # Re: liens pas bons
Posté par jiyuu . Évalué à 2.
Arg, désolé, si un modo pouvait corriger cela, je lui serais bien reconnaissant. D'ailleurs je ne comprends pas pourquoi j'ai mis un 'g' dans les liens alors que j'ai écris son nom correctement. :\
Merci pour avoir relevé ces erreurs et, promis, la prochaine fois je vérifierai que les urls soient correctes.
[^] # Re: liens pas bons
Posté par patrick_g (site web personnel) . Évalué à 4.
Corrigé.
[^] # Re: liens pas bons
Posté par jiyuu . Évalué à 1.
Merci
# Explication
Posté par Alex . Évalué à 0.
Pour une raison inconnue, je n'arrive pas à acceder à bellarg.org
Quelqu'un pourrait m'expliquer le fonctionnement
c'est une applet/du code js qui tourne sur le navigateur ? L'affichage d'une machine distante ?
[^] # Re: Explication
Posté par Alex . Évalué à 2.
Oubliez, le commentaire au dessus corrige le problème
[^] # Re: Explication
Posté par ymorin . Évalué à 3.
C'est du code Javascript qui s'exécute dans ton navigateur.
Ce code interprète les opcodes x86.
Les opcodes x86 qui sont passés à l'interpréteur sont le code d'un noyau Linux et d'un système minimal.
Bref, Qemu In Da Browser ! :-)
[^] # Re: Explication
Posté par Psychofox (Mastodon) . Évalué à -1.
/.ed
# Pas libre
Posté par GnunuX (site web personnel) . Évalué à 10.
Le code n'est pas libre (peut pas distribuer).
# et avec le réseau ...
Posté par vincent LECOQ (site web personnel) . Évalué à 6.
Ou alors avec du réseau il n'y a plus qu'a y lancer un apache pour heberger la bete
[^] # Re: et avec le réseau ...
Posté par cosmocat . Évalué à 3.
En tout cas, il ne faut pas rafraichir la page....
# Pour moi c'est un peu magique ...
Posté par sifu . Évalué à 2.
Est-ce qu'il s'agit d'un émulateur complet (on peux y faire tourner d'autre OS) ?
Dommage que le code ne soit pas libre ...
[^] # Re: Pour moi c'est un peu magique ...
Posté par _alex . Évalué à 5.
Voir http://bellard.org/jslinux/tech.html
Il y a le strict minimum pour faire fonctionner Linux, mais ce n'est pas un "PC" complet:
Tout le reste il n'y a pas : pas de disque dur, pas de réseau, pas de carte graphique, pas de carte son.
Traduction à l'arache sur la partie abordant le CPU :
Perso, je me demande comment la partie réseau peut être implémentée, vu les restrictions des navigateurs pour tout ce qui est réseau.
C'est assez bluffant en tout cas.
[^] # Re: Pour moi c'est un peu magique ...
Posté par ymorin . Évalué à 5.
Tu as fait un contre-sens ici : "The x86 emulator of QEMU has the same restriction" veut bien dire que QEMU fait pareil.
[^] # Re: Pour moi c'est un peu magique ...
Posté par B16F4RV4RD1N . Évalué à 3.
je n'ai pas compris non plus comment ça fonctionne.
Où sont hébergés le noyau, le système ?
Dans la source HTML je ne vois que deux fichiers javascript que j'ai recopié avec l'index, et ça ne fonctionne pas en local.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: Pour moi c'est un peu magique ...
Posté par Alex . Évalué à 6.
Dans la fonction load_binary il fait un appel ajax qui télecharge le noyau. Il faut donc surement que tu télecharges vmlinux26.bin et root.bin
[^] # Re: Pour moi c'est un peu magique ...
Posté par B16F4RV4RD1N . Évalué à 3.
bien vu, maintenant je comprends mieux merci.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
# Le premier
Posté par Philippe M (site web personnel) . Évalué à 10.
Et dans quelques années on se posera la question : "Qui était le premier, l'œuf ou la poule ?"
Born to Kill EndUser !
# linux kernel module
Posté par Nicolas Boulay (site web personnel) . Évalué à 5.
Combien de temps avant que des gens s'amusent avec des modules kernel pour cette cible ? (webgl, carte son...)
"La première sécurité est la liberté"
# Super
Posté par jigso . Évalué à 10.
Aaahh, pouvoir tester l'effet d'un rm -rf / en étant root, autant de fois qu'on veut... priceless !
[^] # Re: Super
Posté par jigso . Évalué à 4.
Taper "exit" aprés, c'est encore plus drôle.
[^] # Re: Super
Posté par Étienne . Évalué à 6.
Surtout pouvoir jouer à la kmem russian roulette...
[^] # Re: Super
Posté par ziliss . Évalué à 2.
Ce serait plus facile si on pouvait copier-coller du texte dans la console.
[^] # Re: Super
Posté par Rémy Hubscher (site web personnel) . Évalué à 2.
Effectivement j'ai tout retapé pour tester et boom :
C'est beau quand même !
[^] # Re: Super
Posté par Michaël (site web personnel) . Évalué à 1.
Dans ton script RANDOM vaut toujours zéro, donc tu passes ton temps à réécrire le premier octet de la mémoire qui contient un bout de l'adresse du gestionnaire d'interruption 01 … il ne doit pas se passer grand chose!
[^] # Re: Super
Posté par Marc Dauwn . Évalué à 6.
La variable $RANDOM est une variable shell qui retourne un nombre aléatoire. (par ex. echo $RANDOM $RANDOM)
Donc ça marche!
[^] # Re: Super
Posté par Michaël (site web personnel) . Évalué à 4.
Le shell en question n'est certainement pas sh comme tu l'as écrit dans ton programme, peut-être est-ce bash?
# Magic keys
Posté par ziliss . Évalué à 5.
Est-ce que vous avez testé les Magic SysRq key ? Le fameux REISUB ;)
# chromebook
Posté par bubar🦥 (Mastodon) . Évalué à 3.
Et béh, malgré la différence de perfomances (qui doit avoir ses raisons) entre Firefox4 et Chrome pour cet exploit, ce nouveau coup de force de Mr Bellard tombe à point nommé avec l'apparition des ChromeBooks ... Si, un exemple, une partie de la pile réseau devient fonctionnelle dans les prochaines releases, ça risque fort d'être très sympathique tout ça. Non ?
[^] # Re: chromebook
Posté par Sytoka Modon (site web personnel) . Évalué à 10.
En tout cas, ce fameux Mr Bellard nous étonnera toujours ;-)
# pas besoin
Posté par Alex . Évalué à 9.
il ne manque plus qu'à faire tourner X et on pourra alors faire tourner FF
ya déjà emacs, autant dire qu'il n'est pas nécessaire de rajouter quoique ce soit
[^] # Re: pas besoin
Posté par totof2000 . Évalué à 10.
l ne manque plus qu'à faire tourner X
Du X dans un navigateur ? Ca existe depuis longtemps.
# Aller on compile Qt ?
Posté par wxuserbrest . Évalué à 0.
ça serait cool non :-)
[^] # Re: Aller on compile Qt ?
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
Il "suffirait" de faire un driver framebuffer qui attaque du webgl ou un canvas.
"La première sécurité est la liberté"
[^] # Re: Aller on compile Qt ?
Posté par superna (site web personnel) . Évalué à 1.
Mais pour ça il faudrait avoir le droit de modifier et redistribuer la bête avec l'accord de son auteur !
Mais si tu veux remettre en forme le javascript et coder des périphériques et tenter quand même la redistribution, je te suis !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.