玄箱でNetBSDを動かす manual > boot-loader

ブートローダーの説明

ブートローダはChih-Chung Chang氏によるloader.oを改造したものです。
オリジナルとの相違点は、
  • NetBSDカーネル用に、0x90000からロード&実行する
  • カーネルのデフォルト文字列が"netbsd.bin"になっている
  • initrdのサポートが無い
  • カーネル起動オプション文字列のデフォルトが""(空)
となっています。

中がどうなっているか、等々技術的な話は別文書で解説しています。

注意事項

(オリジナルのドキュメントには書かれていませんが)オリジナル同様、大きな制限として
  • カーネルサイズは最大4190208バイト(4*1024*1024 - 4096)まで
があります。ご注意ください。

更新に伴う警告

以下の文章は古くなっています。現時点でベストな方法は『なんちゃってブートセレクタ』を使う方法です。こちらをお試し下さい。(2005-09-02)

基本的な使い方

nbloader.oとnetbsd.binを同じ所に置き、Linux上からrootユーザにて
# insmod nbloader.o kernel=netbsd.bin[ret]
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
とコマンドを入力すると、いきなりNetBSDのブートが始まります。

(比較的)安全な使い方

まず、カーネルの置き場としてLinuxのルートパーティションにディレクトリを準備します。
/usr/tmpでも良いでしょう。
ここに、nbloader.oとnetbsd.binをおきます。

次に、Linuxをシングルユーザモードにします。シリアルコンソールが必須です。
# shutdown now[ret]
  ^^^^^^^^^^^^^^^^^
次に、必要に応じてルートのパスワードを入れてシングルユーザモードのプロンプトを出します。

先ほどnbloader.oとnetbsd.binを置いたところへ移動します。
# cd /usr/tmp[ret]
  ^^^^^^^^^^^^^^^^
ディスクをアンマウントします。
# umount -a[ret]
  ^^^^^^^^^^^^^^
ローダはルートパーティションに置いてあるので、まだ見えると思います。
(この時点でルートパーティションもリードオンリーマウントになって いるようです います。)

最後に、おもむろに実行します。 念のためsyncも同時に実行します。(本当にリードオンリーマウントになっていればsyncは不要です)
# insmod nbloader.o kernel=netbsd.bin[ret] 
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
これでブートするはずです。


ご連絡先: E.Kawauchi atto gmail dotto com