Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Linux umí nastartovat i ve vašem prohlížeči

Za těch dvacet let už jsme viděli Linux běhat v různých prostředích. Od mobilních telefonů, přes různé tablety, set-top-boxy, až k toustovačům nebo fotoaparátům. Teď si můžete spustit Linux i ve svém prohlížeči. Dokazuje to flexibilitu Linuxu i schopnosti moderních prohlížečů, které dokáží emulovat x86.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Možná vám jméno Fabrice Bellard vůbec nic neříká. Ale vězte, že to je člověk, který je zodpovědný za vznik známého virtualizačního nástroje QEMU. Také je to jeden z lidí, kteří se pokoušejí na desktopových počítačích počítat hodnotu Pí a je zakladatelem projektu FFMPEG. Pokud jeho jméno neznáte, pak určitě znáte jeho projekty.

Fabrice Bellard se snaží posouvat hranice a nutno říct, že mu to jde. Jeho poslední projekt je také takovým posunem hranic – podařilo se mu naprogramovat emulátor procesoru x86 ve webovém prohlížeči. Jeho emulátor je natolik funkční, že se mu na něm podařilo spustit Linux s kompletním funkčním prostředím.

Pokud si to chcete vyzkoušet „na vlastní prohlížeč“, navštivte adresu bellard.org/jsli­nux nebo si klikněte na velké zelené tlačítko napravo. V obou případech vám začne v prohlížeči startovat linuxové jádro s plnohodnotným prostředím. Nakonec skončíte v příkazové řádce přihlášení jako root.

Jak to funguje?

Podobné věci už jsme viděli dřív, ale ty byly buď jen „emulátorem unixového prostředí“ nebo vzdáleným terminálem k serveru, na kterém vše vzdáleně běželo. Bellardův výtvor je ale jiný. Využil svých zkušeností s vývojem QEMU a napsal emulátor architektury x86 přímo v JavaScriptu.

Celý kód je napsán v čistém JavaScriptu využívajícím typová pole podporovaná moderními prohlížeči. Oficiálně emulátor běží ve Firefoxu 4 a Chrome (Chromium) 11. Ve vyvíjeném Chrome 12 je chyba, která způsobuje nefunkčnost emulátoru. Software emuluje následující hardwarové komponenty:

  • 32bitový x86 procesor
  • programovatelný řadič přerušení 8259
  • programovatelný časovač 8254
  • UART 16450

Procesor se podle Bellarda blíží zhruba procesoru 486 bez matematického koprocesoru. To ovšem není pro Linux problém, protože kvůli podpoře starších počítačů obsahuje také vlastní emulátor koprocesoru. Procesor má ještě několik dalších omezení.

  • neumí instrukce MMX ani SSE
  • chybí mu i některé další málo používané instrukce
  • nemá reálný režim
  • nepodporuje 16bitový chráněný režim

Podle Bellarda by nebyl problém schopnosti emulátoru rozšířit, ale stoprocentní podpora všech vlastností procesorů x86 nebyla jeho cílem. Rozhodl jsem se implementovat jen úplné minimum, abych rozběhl Linux a jeho aplikace, říká Bellard.

Také periferiemi se při vývoji nijak nezabýval. Neexistuje tedy žádná synchronizace mezi frekvencí virtuálního procesoru a reálným časem. Čas v emulovaném Linuxu tedy neběží správnou rychlostí. Stejně tak nebyla zatím naprogramována podpora sítě. Z emulovaného stroje si tedy ani nepingnete, ačkoliv síťové příkazy jsou v něm obsaženy. Ping na localhost ale samozřejmě funguje.

Co se bootuje?

V takto připraveném prostředí je už možné nastartovat Linux. Fabrice Bellard zvolil linuxové jádro 2.6.20, ale teoreticky by bylo možné použít libovolné jádro, pokud by v něm byla zakompilována podpora emulovaného matematického koprocesoru. Jedinou úpravou byl prý malý patch, který zabraňuje jádru nadávat na pomalý sériový port. Bellard se rozhodl použít nekomprimované jádro, protože jeho obvykle rozbalování v paměti by na „prohlížečové platformě“ trvalo příliš dlouho.

Po natažení jádra se do vašeho prohlížeče stáhne 2MB ramdisk, který obsahuje samotnou „distribuci“. Jedná se o miniaturní systém postavený na BusyBoxu a doplněný o kompilátor TinyCC a nedokončený editor QEmacs.

V domovském adresáři leží i zdrojový kód jednoduché aplikace „Hello world!“, kterou si pomocí TCC můžete v emulovaném počítači skutečně zkompilovat a poté i spustit. Protože máte k dispozici editor, můžete začít libovolně experimentovat. Samozřejmě funguje i klasické rm -rf /, které ale nikde venku nic nezničí. Vše běží skutečně u vás v prohlížeči.

K čemu je to dobré?

K reálnému nasazení se (zatím?) takový emulátor příliš nehodí, ale je dobrou ukázkou možností dnešních prohlížečů. Zároveň může sloužit jako výukový kód pro někoho, kdo se chce naučit pokročilým kouskům v JavaScriptu­. Kromě toho ale může posloužit třeba jako test výkonu dnešních prohlížečů.

Fabrice Bellard uvádí i některé teoretické možnosti praktického využití. Při mírném vylepšení by například bylo možné propojit API některé z knihoven do vnějšího JavaScriptového světa a využívat pak jejich schopností. Hodit by se to mohlo například při kvalitním šifrování s využitím linuxových knihoven.

Stejně tak by podle Bellarda bylo možné po vylepšení emulátoru nastartovat například DOS a hrát v něm originální hry. Záleží jen na tom, jestli má o toto vylepšení někdo zájem.

Mikrorozhovor s autorem

Oslovili jsme Fabrice Bellarda a položili mu několik rychlých otázek ohledně jeho projektu.

Co bylo cílem emulátoru? Je to ukázka kvality Linuxu nebo prohlížečů?

Je to spíš demo prohlížečů. Od té doby, co jsem před několika lety zkoušel JS/UIX, jsem měl ten nápad v hlavě. Musel jsem nedávno pracovat na jednom embedded javascriptovém engine, takže jsem se k původní myšlence vrátil.

Jak dlouho vám vývoj emulátoru trval?

Asi dva týdny.

Budete jej ještě nějak rozvíjet?

Chci dát uživatelům možnost vkládat (copy/paste) do něj soubory. U dalšího vývoje je otázka, jestli existuje reálné využití takového emulátoru. Problém je, že je poměrně pomalý, což jeho využití značně omezuje.

davame_internetu_obsah
       

Takže je to vlastně jen demo, které je hotové?

Nemám už v plánu žádné velké změny. Samozřejmě by bylo možné takto udělat plnohodnotný emulátor PC s VGA výstupem i zvukem, ale to už jsem udělal v QEMU.

Petr Krčmář

Petr Krčmář

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Vystudoval elektroniku se zaměřením na počítačové systémy, nyní se zabývá médii, především těmi elektronickými.

Školení: Linux – Firewall, Samba, VPN

Na třídenním školení se naučíte nainstalovat a spravovat Firewall a Router, SAMBA Doménový a Souborový server. Dále si zprovozníte vlastní, zabezpečený VPN server.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 1,10

Přehled názorů

ufff
naiive 19. 5. 2011 00:20
Nový
├ 
Re: ufff
ptr 19. 5. 2011 01:47
Nový
│
├ 
Re: ufff
alblaho 19. 5. 2011 08:36
Nový
│
├ 
Re: ufff
Pribinacik 19. 5. 2011 09:25
Nový
│
└ 
Re: ufff
Olda Vetešník 19. 5. 2011 09:47
Nový
├ 
Re: ufff
Martin Soušek 19. 5. 2011 09:20
Nový
└ 
Re: ufff
adsfasdf 19. 5. 2011 09:48
Nový
 
└ 
Re: ufff
Aya 19. 5. 2011 13:01
Nový
 
 
├ 
Re: ufff
marwyn 19. 5. 2011 13:37
Nový
 
 
└ 
Re: ufff
Kexo 19. 5. 2011 18:10
Nový
 
 
 
└ 
Re: ufff
sdfgsdfgsdf 19. 5. 2011 20:10
Nový
k vyuce js?
merlyn 19. 5. 2011 08:08
Nový
├ 
Re: k vyuce js?
Honza 19. 5. 2011 08:27
Nový
│
└ 
Re: k vyuce js?
Bystroushaak 19. 5. 2011 23:12
Nový
└ 
Re: k vyuce js?
ByCzech 21. 5. 2011 10:51
Nový
Smekam
Honza Vrana 19. 5. 2011 08:51
Nový
tleskám
Roman 19. 5. 2011 09:24
Nový
└ 
Re: tleskám
Tomáš 19. 5. 2011 09:46
Nový
 
└ 
Re: tleskám
snehuliak 19. 5. 2011 10:01
Nový
 
 
└ 
Re: tleskám
P_V 19. 5. 2011 11:47
Nový
 
 
 
└ 
qemu -> os -> browser -> os -> qemu -> os -> browser -> os -> browser -> os ->…
Leonardo C 19. 5. 2011 23:18
Nový
yo dawg
mato 19. 5. 2011 10:15
Nový
EyeOS
marek 19. 5. 2011 12:03
Nový
└ 
Re: EyeOS
Ficik 19. 5. 2011 15:59
Nový
Rychlost
Petr Sedláček 19. 5. 2011 12:15
Nový
kompilace
Mordae 19. 5. 2011 12:34
Nový
Titulek clanku je spatne
Tomas Matejicek 19. 5. 2011 13:02
Nový
└ 
Re: Titulek clanku je spatne
Mi. Chal. 19. 5. 2011 19:19
Nový
 
└ 
Re: Titulek clanku je spatne
ajne 26. 5. 2011 12:05
Nový
 
 
└ 
Re: Titulek clanku je spatne
Mi. Chal. 26. 5. 2011 20:06
Nový
Pdobny projekt JPC jen pro pripomenuti
Gloslyk 19. 5. 2011 13:24
Nový
├ 
Re: Pdobny projekt JPC jen pro pripomenuti
marwyn 19. 5. 2011 13:45
Nový
└ 
Re: Pdobny projekt JPC jen pro pripomenuti
jamie 19. 5. 2011 14:32
Nový
 
└ 
Re: Pdobny projekt JPC jen pro pripomenuti
Lukas 19. 5. 2011 19:45
Nový
 
 
└ 
Re: Pdobny projekt JPC jen pro pripomenuti
Jenda 19. 5. 2011 23:37
Nový
rm -rf /
Michal Strba 19. 5. 2011 14:16
Nový
Také je to jeden z lidí, kteří se pokoušejí na desktopových počítačích počítat…
mat 19. 5. 2011 14:47
Nový
└ 
Re: Také je to jeden z lidí, kteří se pokoušejí na desktopových počítačích…
Michal Strba 19. 5. 2011 19:21
Nový
pěkně
KapitánRUM 19. 5. 2011 19:00
Nový
Re: Linux umí nastartovat i ve vašem prohlížeči
robinw 19. 5. 2011 19:38
Nový
Flexibilita linuxu ?
Lukas 19. 5. 2011 19:49
Nový
├ 
Re: Flexibilita linuxu ?
loki 19. 5. 2011 20:09
Nový
└ 
Re: Flexibilita linuxu ?
gadsgsdfgsdfg 19. 5. 2011 20:14
Nový
 
└ 
Re: Flexibilita linuxu ?
rewa 20. 5. 2011 19:24
Nový
Dalsi vychytavky bellarda
therap1st@hushmail.com 20. 5. 2011 13:42
Nový
Fabrice je fakt borec...
Atrament 20. 5. 2011 17:30
Nový
trochu zabavneji
Petr 20. 5. 2011 22:18
Nový
Za 2 týdny?
Jan 21. 5. 2011 00:24
Nový
└ 
Re: Za 2 týdny?
mhi 21. 5. 2011 14:32
Nový
to je fakt síla
Mirda66 24. 5. 2011 17:15
Nový
bckuper
Bystroushaak 27. 5. 2011 23:51
Nový
ide aj na ipade
mato 19. 6. 2011 21:06
Nový
Je to strasne pomale
Clock 20. 7. 2011 11:21
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem