JavaScriptだけで動くLinux、jslinuxを今さら使ってみる

1年半ほど前に話題になった
[jslinux](http://bellard.org/jslinux/) (JavaScriptだけで動くLinux)を
今さらながら動かしてみました。

実は地味に進化していて、IDEドライブのエミュレーションが出来るようになっているし、
「4MB以下のRAMディスクしか使えない」という制限もなくなってます。

– [Javascript PC Emulator – News](http://bellard.org/jslinux/news.html)

実際、今のjslinuxのディスクイメージは57MBほどあり、
なんと gcc 4.3.5 が入ってたりします!

サイズの制限などもあり、libcには[uClibc](http://www.uclibc.org/)、
コマンド類には[BusyBox](http://www.busybox.net/)
が使われてますが、これを GNU libc や GNU coreutils に置き換えることも出来そう。
実用化への期待が持てそうです!(何に使うんだよという話はさて置き…)

とりあえずソースやディスクイメージを取得して、
中身を入れ替える方法を書いてみます。

## ソースとディスクイメージの取得
ディスクイメージは64KBごとに分割されて hdaXXXXXXXXX.bin という名前で置いてあるので、
これらをすべて持って来ないといけません。
1つ1つ落としてると時間がかかるので、
wgetをバックグラウンドジョブとして起動して並列ダウンロードしてます。

#!/bin/bash
host=http://bellard.org/jslinux/

wget $host/cpux86-ta.js
wget $host/cpux86.js
wget $host/jslinux.js
wget $host/term.js
wget $host/utils.js

wget $host/linuxstart.bin
wget $host/vmlinux-2.6.20.bin

i=0
while [ $i -le 999 ]; do
hda=$(printf ‘hda%09d.bin’ $i)
if [ ! -f $hda ]; then
wget $host/$hda &
fi

i=$(( $i + 1 ))
done

## ディスクイメージの編集
まずは分割されているディスクイメージをくっつけて1つにします。

cat hda000000*.bin > hda.bin

出来た hda.bin を loopback mount。

sudo mount -t ext2 -o loop hda.bin /mnt

これでディスクイメージの中身が /mnt にマウントされたので、
あとは /mnt の下を好きなようにいじります。

終わった後はディスクイメージのマウントを解除し、

sudo umount /mnt

hda.bin を再び 64KBごとに分割しておきます。

#!/bin/bash
rm hda000000.bin

split -a 9 -d -b 65536 hda.bin hda
for f in hda000000*.bin; do
mv $f $f.bin
done

これで終了。ちなみに glibc と GNU coreutils の cat を入れてみたところ、
ちゃんと動くことを確認しました。

## 参考
– [ブラウザでJavaScriptが動く時代がやってきた! – 葉っぱ日記](http://d.hatena.ne.jp/hasegawayosuke/20110518/p1)
– [jslinuxで遊んでみる – file-glob こと k.daibaの日記](http://d.hatena.ne.jp/kdaiba/20110613/p1)
– [javascript – jslinuxをローカルで – 404 Blog Not Found](http://blog.livedoor.jp/dankogai/archives/51683749.html)
– [Perl5 works on browser!](http://blog.64p.org/entry/20110519/1305779739)

スポンサーリンク
スポンサーリンク:

フォローする