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

あとはフロッピーにブートローダをインストールしなければなりません。SuSEGRUBを使っていますがあまりにも大きいので即却下。最新のLILOはbzImageもブートできるらしいので、lilo.confを苦心して書いてインストール。ここまで進むとinitがないよ、というエラーがでて起動がストップ。


起動時にカーネルは/bin/init、/sbin/init、/etc/init、/bin/sh のどれかがないか探しに行くようです。といってもこれらはいずれも超巨大なglibcが必要です。そもそもSuSEのものをそのままコピペしても動くかどうかわかりません。とりあえずコンパクトなbusyboxをインストールする方針でいきます。


ところで/bin/shLinuxでは実際にはbashへのシンボリックリンクになっています。オリジナルなshを一生懸命探したら、FreeBSD ports の osh が一番近そうです。