libstand

某チャットで色々話しているうちに調べていて、ちょっと感動した事。 FreeBSDでは、ブートブロックから/boot/loaderというブートブロックとしては でかい、コマンドインタプリタを持ったスタンドアロンプログラムを ブートしますが、そいつの機能にファイルシステム上に置いた様々なモジュール (最終的にブートするカーネルもその一つ)をロードすると言う物があります。 それがサポートするファイルシステムは実はUFSだけではなかったと言うお話。 それらのサポートコードはNetBSDのlib_sa由来のlibstandにあります。で、 やってみました。にしても、そんなもんさりげなくsrc/libに置いとくなよな。 (NetBSDはsyssrc/libの下)

まずFreeMWareのいろんなテスト用カーネルをWindows98のパーティション /dos/nullk/*に置いて/boot/loaderのコマンドラインで

boot disk1s1:/nullk/paging
ブートしてみると動く様子。それで、本物のカーネルを/dos/FreeBSDの下に 置いて同じようにブートしたところ、 kern.bootfile=/FreeBSD/kernel となった以外は全く普通通りに動く。と言う事でほとんど支障なく 使えると言う事です。ちょっとルートパーティションを間違って切っちゃったから 今度からはDOSパーティションに実験用カーネル置いて試そうかな。あ、 ひょっとしてルートパーティション以外のUFSパーティションに置いてもOK だったりして.....うみゅう。さすがに駄目だった。