1FD Linux
作ってみました。1FD Linux。
以前にも何回も挑戦していたのですが、bvmlinuxをそのままフロッピーに書き込んでいたのが敗因のようです。bzImageをそのままフロッピーに書き込んだらブートしました。知らないことが多いなぁ・・。ちなみにlinux2.6からはbzImageからは起動できなくなっています。というわけで削れるオプションは完全に削ったlinux2.4.28を使います。64ビットコードということを加味しても、bzip2圧縮で477KBほどでした。まだ削れそうなオプションが結構あるため、400KBはきれそうです。リファクタリングすれば300KBはいけるかな?
とりあえず起動したあとは、起動後のことを考えないといけません。とりあえずフロッピーにext2ファイルシステムを作って、以下のようにしました。
/bin /boot /boot/bzImage <- linux 2.4.28 for x86_64 /dev /dev/console <- SuSEからcp -Rでコピペ /dev/fd0 <- SuSEからcp -Rでコピペ /dev/null <- SuSEからcp -Rでコピペ /etc /lib /proc /var
あとはフロッピーにブートローダをインストールしなければなりません。SuSEはGRUBを使っていますがあまりにも大きいので即却下。最新のLILOはbzImageもブートできるらしいので、lilo.confを苦心して書いてインストール。ここまで進むとinitがないよ、というエラーがでて起動がストップ。
起動時にカーネルは/bin/init、/sbin/init、/etc/init、/bin/sh のどれかがないか探しに行くようです。といってもこれらはいずれも超巨大なglibcが必要です。そもそもSuSEのものをそのままコピペしても動くかどうかわかりません。とりあえずコンパクトなbusyboxをインストールする方針でいきます。
ところで/bin/shはLinuxでは実際にはbashへのシンボリックリンクになっています。オリジナルなshを一生懸命探したら、FreeBSD ports の osh が一番近そうです。