Kør Linux i browseren: Franskmand emulerer Linux-kerne med Javascript

19. maj 2011 kl. 14:5015
Kør Linux i browseren: Franskmand emulerer Linux-kerne med Javascript
Illustration: Larry Ewing.
Javascript kan køre så hurtigt i browseren nu, at det er lykkedes at emulere en hel Linux-kerne med Javascript. Resultatet svarer til en 486-processor.
Artiklen er ældre end 30 dage

Om en Linux-kerne i browseren bliver et hit, der kan bruges på mange måder, eller om det mest er et 'fordi jeg kan'-projekt, vil tiden vise.

For den franske udvikler Fabrice Bellard var det først og fremmest en måde at vise på, at der er sket en hel del med Javascript i browseren de seneste år, skriver The Register.

»Jeg gjorde det for sjov, fordi nye Javascript-motorer er hurtige nok til at gøre komplicerede ting,« skriver Fabrice Bellard til det britiske it-site.

Med Javascript PC Emulator kan man køre Linux-kernen 2.6.20 fra 2007 i de nyeste browsere fra Mozilla og Google. Tilsammen svarer emulatoren omtrent til en gammel 486-processor, bortset fra at der mangler en floating point-unit, som franskmanden så har emuleret ved siden af.

Artiklen fortsætter efter annoncen

Han peger på kryptografiske funktioner direkte i browseren som en mulig fremtid for emulatoren, men foreløbigt er den i hvert fald blevet brugt i det evige kapløb mellem de forskellige browserproducenters Javascript-motorer.

Emulatoren kørte nemlig cirka dobbelt så hurtigt i Firefox 4 som i Chrome 11, og det er straks blevet brugt af Firefox-folkene som bevis på, hvor overlegen deres Jaeger Monkey-maskine er.

PC Emulatoren er skrevet i rent Javascript med hjælp fra et API, der gør det nemmere at tilgå binære data lokalt. Den er testet i browsere på både Windows, Mac og Linux-platforme.

15 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
1
19. maj 2011 kl. 15:12

http://bellard.org/jslinux/

Rimeligt imponerende:

uname -a

Linux (none) 2.6.20 #1 Wed May 18 23:22:20 CEST 2011 i586 GNU/Linux
~ #

~ # cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 5
model : 4
model name : Pentium MMX
stepping : 3
cache size : 0 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
coma_bug : no
fpu : no
fpu_exception : no
cpuid level : 1
wp : yes
flags :
bogomips : 20.22
clflush size : 32

~ #

2
19. maj 2011 kl. 15:17

Lidt misvisende overskrift. Det er nu ikke selve Linux-kernen han har kodet i javascript (ville være et stort og fjollet projekt), blot emulatoren.

11
20. maj 2011 kl. 09:25

Yes, scriptet emulerer en pc med x486 processor, og ikke en linuxkerne. Stadig meget misvisende overskrift. Gad vide, om emulatoren også kan boote med Dos?

12
20. maj 2011 kl. 11:42

Det kan den ikke, han har ikke implementeret real mode eller 16 bit protected mode, kun 32 bit protected mode, mao. virker ingen legacy OS'er på den CPU.

Han har heller ikke implementeret en BIOS, end ikke EFI, så faktisk kan hans maskine kun boote Linux fordi hans maskine er hardcodet til det.

Ikke at det er mindre imponerende af den grund, det er stadig en voldsom bedrift.

3
19. maj 2011 kl. 15:37

Ja, han har også lagt en lille hello.c som man kan kompilere med tcc -o hello hello.c

4
19. maj 2011 kl. 15:53

Man kan køre top, og måden den gentegner skærmen på, bringer mig lige tilbage til dengang man kørte på en seriel skærm med en 1200 - 2400 baud!

7
19. maj 2011 kl. 17:53

Og vi' og emacs' (qemacs vist). Og stort set alt som BusyBox multi-call binarien kan levere. Endda wget, netstat osv. selvom der ingen netforbindelse er.

8
19. maj 2011 kl. 18:08

Endda wget, netstat osv. selvom der ingen netforbindelse er.

Trist. Ellers kunne man more sig med at bygge en browser med javascript support, og så lade den pege på http://bellard.org/jslinux/. :-)

9
19. maj 2011 kl. 18:14

Hvis vi skal brainstorme lidt, så kan man jo downloade jslinux + de 3 .bin filer, mounte root.bin og kopiere over i en større 'container' med en browser og en simpel HTTP server ;)

Hvis du kan indbygge noget js i Lynx/Links, så kan det vel godt virke :p Givet, hvis en Core 2 Duo bliver til en 486'er i Chrome, hvad bliver en 486'er så...? :(