玄箱HGにU-Boot導入 July 10, 2008
Rating: 2.5

玄箱HGのブートローダーをU-Bootというものに入れ替えた。

U-Bootは/dev/hda1の/bootディレクトリにあるvmlinux.UBootという名前のkernelファイルを読みに行くプログラム。 (玄箱の通常のブートローダーも同じ方式でブートするものと思い込んでいたが、実は一度FlashROM内のLinux Kernelをブートしているらしい) 無理に導入する必要もないものだが、いざというときには対話ブートで原因追究できるので便利ではある。

U-Bootのインストール

インストール手順じたいはhttp://www.genbako.com/u-boot_loader/How_to_write.txtの説明どおり非常に単純。

オリジナルカーネルで起動します。 機種を確認しましょう。間違えると再起不能です。(JTAG対応可) 玄箱 u-boot-hd.flash.bin 玄箱HG u-boot-hg.flash.bin wgetでu-bootをダウンロードします。 md5sumの確認をします。 書き込みます。 /boot# cat u-boot-hg.flash.bin >/dev/fl2 リブートします。 /boot# reboot

必要なファイルもhttp://www.genbako.com/u-boot_loader/に用意されている。

要するにデバイスファイルにバイナリを書き込むだけだが、ブートローダなので失敗すると終わる。 ハードウェアHackすれば直せるらしいが、そこまで行くと玄人志向ではなく純玄人の領域になってしまう。

今回はレスキュー用の「EMモード」で実施したが、適切なデバイスファイル名を指定すればEMモードでなくても書き込めるようだ。

U-Boot対応Kernelのインストール

http://www.genbako.com/uImage/にkernelファイルがあるので機種別に1つ選択して、/dev/hda1の/bootディレクトリでtarで解凍する(だけ)。 kernelモジュールはhttp://www.genbako.com/にある同バージョンのものを利用すれば良いようだ(/lib/modulesディレクトリでtarで解凍)。

準備ができたら、 # echo -n 'OKOK' > /dev/fl3 などで、EMモードを抜ける設定にしておく(重要)。 これを忘れるとブート途中で止まり、コンセントを抜いて停止するしかなくなる(致命的に壊れる可能性は低いが面倒)。

参考:EM モードにする/戻す(LinkStation/玄箱 Tips)

U-Boot画面へのネットワーク接続

U-Boot導入後にうまく起動できなかった場合、Linuxカーネル起動前のU-Boot画面にネットワーク接続して設定を見直す必要がある。

Windowsパソコンからhttp://www.genbako.com/u-boot_loader/nc111nt.zipを使用することで接続できる。 まず、玄箱とパソコンを物理的にLAN接続できるように接続して、パソコン側のIPアドレスを198.168.11.149に設定しておく。 コマンドプロンプトからzipを解凍したフォルダに移動して、以下のコマンドを実行してnc.exeを起動する(http://www.genbako.com/u-boot_loader/readme.txtの末尾に書いてある)。 nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666

これで192.168.11.150をウォッチする状態になるので、玄箱を起動する。 設定が正しい場合は放っておけば/dev/hda1のカーネルで通常通りブートする。

このnc接続以外にもhttp://www.genbako.com/u-boot_loader/select_mode.txtで紹介されている電源ボタンによる切り替えも可能だ。

分かりにくいトラブルとして、通常のカーネルを読み込むところまで行って無応答になるパターンがあるが、その場合は非EMモードへの切り替えを忘れているパターンが考えられる。 U-boot メニューから EM モードでの起動(うぇぶ道らく)の手順でEMモードを切り替えられる。

感想

nc接続が面倒なので、U-Bootのメニューからオプション指定する気になれないのだが、いちおうU-Bootをインストールすればネットワークブートなどの多彩なブート手段を利用できるようになる。 U-Bootのオプションについてはuloaderとu-bootにヘルプコマンドの出力が掲載されている。

One Comments

玄箱DebianをLennyにアップグレード…

玄箱にDebianインストールするための手順はわりと知られているが、EtchからLennyにアップグレードする手順は今のところあまり知られていない。 まず、U-BootをEtchの環境で事前にインストー….