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

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

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

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

サイズの制限などもあり、libcにはuClibc、 コマンド類にはBusyBox が使われてますが、これを 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 を入れてみたところ、 ちゃんと動くことを確認しました。

参考

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

フォローする