Emulare linux via web, tramite un browser e JavaScript. L'ultima fatica di un celebre hacker francese, Fabrice Bellard permette a Linux di girare all'interno di un browser moderno come Firefox o Chrome.
Riuscire ad emulare un sistema operativo all'interno di un browser non è certo cosa da tutti. Un Hacker francese di nome Fabrice Bellard ha dimostrato come il Java Script possa fare molto di più di quello a cui siamo solitamente abituati, di solito lo vediamo applicato semplicemente a dei siti web animati. L'hacker francese invece è riuscito in un'opera strabiliante come quella di far elaborare dati del server mediante la creazione di un emulatore per PC scritto in linguaggio di scripting.
Emulatore linux via browser
Nel realizzare l'attuale emulatore Bellard ha preso ispirazione dal suo QEMU emulatore/virtualiser. L'emulatore può essere utilizzato nella maggior parte dei moderni browser web come Firefox 4 o Google Chrome 11 e le successive versioni. Il progetto fa ampio uso di matrici tipizzate le quali sono disponibili solo nelle ultime implementazioni di JavaScript, questo permette ai dati binari di essere letti e scritti direttamente in del codice JS. Il "peso" di JS/Linux è di soli 90 Kbyte ed è in grado di emulalare una CPU x86 a 32bit. Così come un kernel Linux, l'emulatore JS contiene anche un piccolo clone di Emacs e un compilatore C (Tiny C Compiler) il quale è significativamente più piccolo e più veloce del compilatore GNU.
Le capacità dell'emulatore linux via browser possono essere paragonate a quelle di uno storico processore Intel 80486SX. Tra i vari test condotti da Bellard uno sembra davvero interessante: il web-emulatore di CPU x86 risulta due volte più lento con l'engine V8 di Google Chrome rispetto all'engine Jaeger Monkey di Firefox.
Altri emulatori via browser:
Già in passato avevamo assistito a progetti simili come l'emulazione di Windows 3.1 sempre via browser. Tramite un progetto chiamato michaelv.org è infatti possibile utilizzare Windows 3.1 direttamente nel nostro browser. Ovviamente si tratta di una riproduzione non proprio perfetta, ma perfettamente funzionante e con la presenza di tutti i vecchi strumenti che caratterizzarono il famoso Windows 3.1 a partire dal mitico campo minato. In michaelv.org sono presenti la versione 3.1 di Internet Explorer, calcolatrice, blocco note, MS-DOS, un media player, un file readme e tanti altri strumenti perfettamente funzionanti. Anche questo progetto è scritto in JavaScript,PHP e XTML.
Chi è Fabrice Bellard?
Bellard, chiamato il "coder extraordinaire" è famoso anche per la creazione di LZEXE , uno dei programmi zip eseguibili per DOS, inoltre ha anche fondato la FFmpeg project che oggi costituisce il nucleo di molti video open source nei più diffusi lettori compresi MPlayer e VLC Media Player. Tra le sue opere figura anche l'emulatore x86 QEMU. Fabrice Bellard è anche stato vincitore per ben due volte dell' International Obfuscated C Code Contest (IOCCC). Sicuramente l'utilità di un emulatore linux come questo può essere messa facilmente in discussione.
Se non altro JS/Linux ha il merito di mettere ancora una volta in risalto le abilità di Fabrice Bellard e mostrare le potenzialità del Java Script. Se volete approfondire il discorso o se volete semplicemente dare un'occhiata alle creazioni del francese vi segnalo il link diretto al sito web di Fabrice Bellard: http://bellard.org/ Qui potete trovare tutti i suoi progetti mentre nella sezione "Old project" potete trovare anche le vecchie glorie di Bellard. Per testare l'emulatore invece cliccate qui e attendete il boot del sistema: http://bellard.org/jslinux/
E voi che ne pensate? Chissà se un giorno anche i moderni sistemi operativi potranno essere emulati in maniera efficiente come il progetto di Bellard.
Fantastico. Io ho sempre stimato gli hacker al punto che sono arrivato a dire che loro meriterebbero una medaglia per l’ingegno e per la capacità di fare cose che spesso vanno davvero l’immaginario umano. Questo perché loro fanno dell’hacking, no del cracking. La seconda attività sarebbe da condannare anche se non voglio fare il finto moralista, spesso ci torno più comodo il lavoro del cracker che non quello dell’hacker. Una volta ho letto su un forum che quella dell’hacker è un’arte nobile! 😉 …complimenti a tutta questa gente e alla loro capacità di mettere su dal niente cose davvero strabilianti, come è strabiliante questo emulatore Linux via browser. Praticamente, se ho capito bene, adoperando il JS è possibile far partire su un qualunque browser web nelle ultime versioni (perché tali browser devono garantire il supporto con la nuova versione di JS), una distribuzione Linux, ovviamente una base con solo prompt dei comandi, perché dubito che ci si possa far partire ubuntu 10 con tanto di interfacci grafica…a quel punto non sarebbe più un emulatore ma una vera e propria macchina virtuale! E’ vero che di queste cose ne capisco poco e niente, ma un minimo di sensibilità su le risorse che occorrono per far partire una distribuzione linux e le risorse gestibili da un codice JS mi rendo conto che quello che ho detto pocanzi è davvero un’impossibilità!. L’emulatore emulerebbe la capacità di un vecchio processore 8086, antecedente addirittura ai processori 2836 e 486, quindi la potenza di calcolo, se confrontata con il processori moderni, è davvero irrisoria. Mi piace seriamente come progetto…è un valido sequel dell’altro emulatore via web per sistemi operativi window 3.1 del quale solo ho oggi è il primo giorno che ne sento parlare. Purtroppo non è il mio principale ambito di interesse, quindi non me ne voglia nessuno se in questo commento sono tanto vago nel tecnico e tanto propenso a complimentarmi con il creatore del progetto, segno questo che a me sembra davvero un qualcosa di cmplicato mentre ad un programmatore di java/JS potrebbe sembrare abbastanza semplice o meglio ancora banale. Non essendo nell’ambito non posso dare un giudizio di complessità, anche se pure questo è appunto soggettivo e dipende dalle capacità e dalle competenze di chi avanza il giudizio! 😉 Bel progetto comunque e complimenti davvero al creatore!! 😉
rileggendo mi sono accorto di alcune parole mancanti qua e là nell’articolo ma il senso è comprensibilissimo…mi sono appena svegliato e spero che questo mi giustifichi!! …scusate!!!
Rimango sempre sorpreso dal lavoro che alle volte riescono a compiere questi hacker: conoscono talmente tanto bene il codice di un determinato software che riescono a eseguire il cracking (alle volte è necessario modificare direttamente l’assempler). Per non parlare poi di quei hacker che riescono ad eseguire il cracking di qualche sistema crittografico…robe da pazzi!
Comunque tornando al progetto di Bellard devo dire che è molto interessante, non tanto sulla sua utilità (sinceramente credo che abbia più successo windows emulato su un browser!!!…magari!) ma piuttosto per le potenzialità del JavaScript!
Sono sempre più convinto che i PC del futuro saranno composti da un semplice monitor, tastiera e mouse e un collegamento ad internet: il sistema operativo e tutti i dati si trovano su un server remoto e in questo credo che le potenzialità dei linguaggi di scripting come il JavaScript siano di grande aiuto. Certo questa scelta darà non pochi problemi soprattutto per quanto riguarda la sicurezza e la riservatezza dei dati ma credo che i vantaggi siano notevoli: oltre allo spazio occupato dai PC che sarà ulteriormente ridotto (forse su questo la Apple ha già provveduto) non si avranno più problemi di spazio su hard disk oltre che di sicurezza contro i virus!
così bene all’interno di un semplicissimo Browser… Il lavoro di Fabrice Bellard è da sempre apprezzato, non è infatti la prima volta che si cimenta in progetti simili. Come vi ho segnalato nell’articolo vi consiglio vivamente di dare un’occhiata alla sua pagina online dove potete trovare delle chicce davvero interessanti.
Ottimo lavoro! Segnalo anche un emulatore C64 http://codeazur.com.br/stuff/fc64_final/