玄箱/LinkStation/TeraStation用 nbloader 2006-10-14版 (version 3.1) ライセンスはGPLです。同梱のCOPYING.txtを参照してください。 使い方: Linux上で以下を実行します。(root権限が必要です) insmod nbloader_v3.o [kernel=カーネルファイル] [startaddr=ロード&スタートアドレス] [cmdline=カーネル引数文字列] もしくは(過去互換モードで)、 insmod nbloader_v3.o [kernel=カーネルファイル] [startaddr=ロード&スタートアドレス] [bootdev=ブートデバイス指定値] [boothowto=ブートフラグ指定値] kernel= ロードするカーネルを指定します。デフォルトは netbsd.bin です。 startaddr= カーネルをロード&実行するアドレスを指定します。デフォルトは 0x90000 です。(* 変更しないで下さい *) cmdline= カーネルに渡す引数を文字列で指定します。デフォルトは空です。 文字列はカーネルに依存します。 私のパッチを当てたカーネルでは次のものを受け付けます。 例: cmdline=bootdev=sd0a (ブートデバイスとしてsd0aを指定します) cmdline=bootdev=wd0a,boothowto=-s (ブートデバイスとしてwd0aを指定し、シングルユーザモードで ブートします。) その他の文字列は黙って無視します。 (過去互換モード) bootdev= ブートデバイスの指定値です。デフォルトは 0 です。16進で指定す るために "0x" をつけます。 カーネルソースのsys/sys/reboot.hのMAKEBOOTDEVマクロで生成され る値と同じです。 先頭3桁は "a00"固定です。これ以外の値を受けると全体を0として 扱います。 次の1桁はユニット番号です。sd1やwd1ならば"1"となります。 次の2桁はパーティション番号です。aパーティションならば "00", bならば"01",という具合で、pパーティションならば"0f"となります。 次の2桁はブートデバイス種別です。ブートするブロックデバイスの メジャー番号を指定します。sandpointの場合、wdは"00", sdは"04" となります。 例として wd0aからブートする場合は 0xa0000000, wd1aからなら 0xa0010000, sd0aなら 0xa0000004, sd1aなら 0xa0010004, wd0fなら 0xa0000500 となります。 (過去互換モード) boothowto= ブート方法フラグの指定値です。デフォルトは 0 です。16進で指定 するために "0x" をつけます。 先頭の3桁は"a00"固定です。これ以外の値を受けると全体を0として 扱います。 続く5桁はブートフラグです。詳細はカーネルのsys/reboot.hで定義 されている RB_* や AB_* マクロを参照してください。 シングルユーザでブートさせるには 0xa0000002と指定します。 ---- 2006-09-12版からの変更点: - カーネル呼び出し時のr6レジスタに文字列を渡せるようにしました。 (文字列の解釈はカーネル側で行います。) 2006-02-25版からの変更点: - カーネルサイズの制限を緩和し、約28MBまでロード可能としました。 LOW_MEMの定義を修正し、再コンパイルすることでこれ以上のサイズもロード可能 と思われます。 2006-02-05版からの変更点: - "2.4.20_mvl31-ppc_terastation"のバイナリを追加しました。 - (ソースには変更ありません) 2005-10-24版からの変更点: - バイナリの格納ディレクトリ名を変更しました。uname -rの名前にしてあります。 - "2.4.17_mvl21-sandpoint"のバイナリを追加しました。 - ご本家loader.oの各機種用バイナリも同梱しました。 - (ソースには変更ありません) 2005-08-26版からの変更点: - カーネルのロード&実行アドレスを渡せるようにしました(startaddr)。 デフォルト値は0x00090000です。 カーネル側のアドレスと合わせないと容易にハングアップしますので注意して ください。 - ブートデバイスの指定が出来るようになりました(bootdev)。 与える値はsys/sys/reboot.hに書かれている通りです。以下に一例を示します。 - wd0a: 0xa0000000 - wd1a: 0xa0010000 - wd0e: 0xa0000400 - wd1e: 0xa0010400 - sd0a: 0xa0000004 - sd1a: 0xa0010004 - sd0e: 0xa0000404 - sd1e: 0xa0010404 デフォルト値は0x00000000で、(カーネル側での指定が無ければ)プロンプトで 問い合わせます。また、先頭の4ビットが"a"で無いと無効と判断し、同様にプ ロンプトで聞いてきます。 - ブート方法の指定が出来るようになりました(boothowto)。 与える値(フラグ)はsys/sys/reboot.hに書かれているとおりです。加えて、 先頭の12ビットが"a00"で無い場合は全体を無効として0として扱います。 シングルユーザモードでの起動は、0xa0000002を指定してください。 デフォルト値は0です。この場合はマルチユーザで通常ブートとなります。 - 以前から指定できるようにしていたcmdlineは、依然として指定可能ですが 内容は全て無視します。(スクリプトの互換性のために残してあります) - 新しく追加されたオプションは、新カーネル(2005-10-24版以降)でのみ有効です。 - ファイル名をnbloader_v2.oとしました。 2005-08-16版からの変更点: - insmod前にsync()システムコール相当を実行するようにしました。 - insmod前にリブート時のシーケンス相当を実行するようにしました。 - バイナリを同梱しました。binary/KUROBOX/nbloader.oが初代玄箱用、 binary/KUROBOX_HG/nbloader.oが玄箱/HG用です。 (うまくいかない場合は再コンパイルしてみてください) Modifier: E.Kawauchi@gmail.com