玄箱HGにU-Boot導入

2008年7月10日(Thursday) 12:20am
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にヘルプコマンドの出力が掲載されている。

“玄箱HGにU-Boot導入”へのトラックバック

  1. うるめねっと技研 - Linux派 - Says:

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

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