玄箱HGにU-Boot導入 July 10, 2008
玄箱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にヘルプコマンドの出力が掲載されている。
玄箱DebianをLennyにアップグレード…
玄箱にDebianインストールするための手順はわりと知られているが、EtchからLennyにアップグレードする手順は今のところあまり知られていない。 まず、U-BootをEtchの環境で事前にインストー….