2011年05月19日 09:00 [Edit]

javascript - jslinuxをローカルで

先週末から体調不良なので、今話題のjslinuxと戯れてみた。


ブラウザでJavaScriptが動く時代がやってきた! - 葉っぱ日記
もとのディスク容量が少ないので、適当な母艦を用意して、こんな感じ で新しいディスクイメージ作って、CocProxy や Fiddler の AutoResponder を使って root.bin へのリクエストをローカルのファイルに差し替えてやれば、好きなファイルも入れられますね。

それだと環境を整えるのが面倒なので、以下のようにして必要なファイルを全てローカルにもってきてもOKだった。

あとは root.bin をカスタマイズして楽しむのだが、基本的には

の方法でOK。ただしroot.binのサイズは4096k bytesより大きくできないみたいで、それより大きいとKernelがPanicする。

ブラウザでJavaScriptが動く時代がやってきた! - 葉っぱ日記
手順としては、コンパイルの簡単な SpiderMonkey 1.7 を x86 の32ビットマシンで -static 付きでビルドして、root.bin の適当なところに置くだけです。

js on jslinux は無事再現できたのだが、

は、システムコールが足りないのか以下のとおり動かない。残念。

smallperl

この Illegal instruction が出るまで10秒以上かかった。まあ、以下を見れば無理もない。

/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

ちなみに Ubuntu on VMWare Fusion の bogomips は 5892.68 だった。

これを見てわかるとおり、実践的とはいいがたい。が、実に面白い試みでもある。拙作LLEvalを含め、クラウドコンピューティングというのは「手前側」のCPUを有効活用していないだけに、JSに限らず OS on Browser の可能性はもっと訴求されてよいだろう。

Dan the Man with too Many Platforms to Emulate

追記:

Perlうごいた。@tokuhirom++;

microperl

この記事へのトラックバックURL

この記事へのコメント
linuxstart.bin にカーネル起動オプションが文字列で書いてあるので、おもむろに vim で開いて ramdisx_max=n な感じでオプションを渡せば RAMDISK のサイズを増やせます。
Posted by iyappo at 2011年05月19日 09:15