2010年07月04日

玄箱HGのEtch→lenny化その1 u-boot導入

玄箱HGをこれまでも使っていたのですが、放置してたため、思い立ってアップデートすることにしました。

さてはて、どこから手をつけたものか。
Etchのまま、面倒で放置していたんですが、セキュリティアップデートができなくなり、ますます重い腰をあげようかとブログに残しつつ、早速開始。

何はともあれ、とにかくバックアップ。
もしものことがあってもデータだけは大丈夫なようにしましょ!

まずは、lenny化したときに真っ先にブート不可となるという情報から、u-boot化必須と考えました。
失敗すると、シリアルコンソールを持っていないため、それこそ単なる黒い箱になってしまい、泣くに泣けません。
なので、無理に導入する必要もないけど、いざというときには対話ブートで原因追究できるので便利なのでチャレンジ
U-Bootは/dev/hda1の/bootディレクトリにあるvmlinux.UBootという名前のkernelファイルを読みに行くプログラム。(玄箱HGの通常のブートローダーも同じ方式でブートしていると考えていたが、実は一度FlashROM内のLinux Kernelをブートして、その後Debianのカーネルをロードしている?)

手順は次の通りです.この流れにそって説明します.ただし,玄箱HGはDebian化が完了ものとします(私の環境を前提にしてます)

1. カーネル更新:ターゲット玄箱での作業
2. 監視側マシン準備:監視側マシンでの作業
3. U-Boot化:ターゲット玄箱での作業

ちなみに当方の玄箱HGのカーネルはhttp://www.genbako.com/にて提供されている、kernelimage-2.6.25.1-kuroBOX.tgzとmodules-2.6.25.1-kuroBOX.tgzを導入済みです。

早速書き変えと行きたいのですが、確認用コマンドを使って、確認を行うための準備。コマンドは、netcatを使います。うちにはubuntu君がいるので、それを監視用として理容します。次の手順でインストールし,監視状態にします.Winでやる場合はhttp://www.genbako.com/u-boot_loader/にnc111nt.zipが準備してあるので、そちらをご覧あれ。
---
 sudo apt-get install netcat
 netcat はすでに最新バージョンです。
---
あれ、既に最新版だった(^^

続いて、ネットワークIFの設定
---
sudo vi /etc/network/interfaces
---
内容は以下を追加
---
iface eth0:0 inet static
address 192.168.11.149
network 192.168.11.0
netmask 255.255.255.0
broadcast 192.168.11.255
auto eth0:0
---

ネットワークインタフェースの再起動
これでIP 192.168.11.149 が追加されます.
---
sudo /etc/init.d/networking force-reload
---

確認
---
ifconfig -a
eth0 Link encap:イーサネット ハードウェアアドレス 00:XX:XX:XX:XX:XX
inetアドレス:192.168.11.100 ブロードキャスト:192.168.11.255 マスク:255.255.255.0
inet6アドレス: feXX::XX7:XXXX:fXX1:1XXX/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:76825 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:60332 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:75896163 (75.8 MB) TXバイト:11462232 (11.4 MB)
割り込み:16

eth0:0 Link encap:イーサネット ハードウェアアドレス 00:XX:XX:XX:XX:XX
inetアドレス:192.168.11.149 ブロードキャスト:192.168.11.255 マスク:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
割り込み:16
---
うん、eth0:0が追加された!
さて、監視開始っ
---
nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666

ここからは玄箱HGのほうで作業だよ。
必要なファイルを入手。
u-bootのローダたち
http://www.genbako.com/u-boot_loader/
wgetにてファイル入手。チェックサム確認用のファイルも忘れずに。
---
wget http://www.genbako.com/u-boot_loader/u-boot-hg.flash.bin
wget http://www.genbako.com/u-boot_loader/u-boot-hg.flash.md5
---

次にmd5sumコマンドでファイルが正常か確認
---
md5sum -c u-boot-hg.flash.md5
u-boot-hg.flash.bin: 完了
---
大丈夫っぽい

次に,玄箱HGをEMモードで起動します.
カーネルバージョンの確認
---
# uname -a
---

カーネル2.4の場合
---
# echo -n "NGNG" > /dev/fl3
---

カーネル2.6の場合
---
# echo -n "NGNG" > /dev/mtdblock2
---

再起動
---
# shutdown -r now
---
起動後のアドレスはDHCP配下であれば、ルータの管理画面で確認してくださいね。


EMモードの玄箱HGにログインし、コマンドでフラッシュROMにu-bootを書き込みます。

ここでは/dev/hda1のrootディレクトリにファイルがあるとします.
u-bootを保存したパーティションをマウント
---
# mount /dev/hda1 /mnt
# cd /mnt/tmp
---

念にも念を入れて確認します.
---
# ls -l u-boot-hg.flash.bin
---

フラッシュROM書書き換え
---
# cat u-boot-hg.flash.bin >/dev/fl2
---

/bootにシンボリックリンク作成
---
cd /boot
ln -s uImage vmlinux.UBoot
---

EMモード解除
---
# /usr/bin/write_ok
---

(5)再起動
---
# reboot
---

祈りながらncコマンドの監視ログを確認(><)
---
U-Boot 1.1.4 LiSt 2.1.0 (Sep 21 2006 - 00:14:53) LinkStation HG / KuroBox HG
stdin : nc
stdout: nc
stderr: nc
IDE: Bus 0: OK
Device 0: Model: WDC WD10EADS-00L5B1 Firm: 01.01A01 Ser#: WD-WCAU42916269
Type: Hard Disk
Supports 48-bit addressing
Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)
Boot in 01 seconds ('s' to stop)...
Loading 0:1:boot/vmlinux.UBoot

1422555 bytes read
## Booting image at 00800000 ...
Image Name: Linux-2.6.25.1-kuroboxHG
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1422491 Bytes = 1.4 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
---

おぉ、起動したっ!よかったぁ〜
ここまでが、u-boot化の道のりでした。お疲れさまでした。
posted by じゅん at 00:00| Comment(0) | 玄箱HG | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。