mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

玄箱HG - U-Boot 化!

[ サーバ構築, 玄箱 ] [ ]

こんばんは。

今日は、とうとううちの玄箱HG(Debian 4.0(etch))を「U-Boot」化しました。 (玄箱HG - Debian 5.0(lenny) 化の前準備として)

通常、「U−Boot」化するにはシリアルコンソールが必要のようですが、玄箱にそのような細工をするのは怖いし面倒なので、シリアルコンソールを使用しない方法、また「U-Boot」の起動確認は「netcat」を使用する方法をとりました。

作業記録

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ 失敗すると、玄 箱が単なるゴミになります。 個人の記録です。この記事を参考に作業される方は自己責任でお願いします。 当方も、十分に下調べした上での作業です。 当記事を参考にされてもよいですが、 実際に作業される場合は、自分で十分に調査して手順を整理してから行ってください。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

■前提条件

  • 玄箱HGにはDebian 4.0(etch) がインストール済み。
  • 玄箱HGにはシリアルコンソールを取り付けていない(シリアルコンソールは使用しない)。
  • クライアント側は WindowsXP マシンで、U-Boot の起動確認は「netcat」を使用。

1.必要なファイルを準備

GenBako Kernel Collectionから、uImage のカーネルイメージ(2.6.20)、U-Boot Loader、U-Boot Loaderのmd5をダウンロードする。

1
2
3
4
# cd /tmp  <span style="color: #ff0000;">← ダウンロードするファイルを置くディレクトリへ移動。(どこでもOK)</span>
# wget http://www.genbako.com/uImage/kernelimage-2.6.20-kuroHG-uImage.tgz
# 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

※ちなみに、u-boot-hg.serial.flash.bin, u-boot-hg.serial.flash.md5 は標準でシリアルを使って出力するためのもののようです。(今回はシリアル出力しないので[serial]のないバージョン)

2.「mtdblock1」の確認

「/dev」に「mtdblock1」があるのを確認。なければ以下のコマンドでデバイスを作っておく。 (当方は、「/dev」に「mtdblock1」があったので、この項は不実施)

1
2
# cd /dev
# ./MAKEDEV mtd

3.システムマップの退避

念のため、「/boot」のシステムマップを退避。

1
2
# cd /boot
# cp -p System.map System.map.orig

4.「uImage」を展開

「uImage」のアーカイブを展開。(「/boot」に)

1
# tar zxvf /tmp/kernelimage-2.6.20-kuroHG-uImage.tgz

5.「U-Boot Loader」のチェックサム確認

「U-Boot Loader」が壊れているとフラッシュに書き込んでも取り返しのつかないことになるので、md5ファイルで「U-Boot Loader」のチェックサムを確認する。

1
2
3
# cd /tmp
# md5sum -c u-boot-hg.flash.md5
u-boot-hg.flash.bin: OK  <span style="color: #ff0000;">← このように表示されればOK</span>

6.「U-Boot Loader」の書き込み

ここで、フラッシュに「U-Boot Loader」を書き込む。 ※ここで失敗すると玄箱がお亡くなりになります。

1
2
3
4
# dd if=u-boot-hg.flash.bin of=/dev/mtdblock1 bs=1k
170+1 records in
170+1 records out
174668 bytes (175 kB) copied, 3.09891 seconds, 56.4 kB/s

※上記のコマンドの代わりに以下のコマンドでもOK。 “cat u-boot-hg.flash.bin > /dev/mtdblock1”

7.書き込み確認

フラッシュに書き込んだ「U-Boot Loader」がもとのファイルが同一か(ちゃんと書き込まれたか)を確認する。

1
2
# cmp u-boot-hg.flash.bin /dev/mtdblock1
cmp: EOF on u-boot-hg.flash.bin <span style="color: #ff0000;">← これでOK(最後までエラーが無かったということ</span>

8.「netcat」インストール(玄箱HG側)

当方の玄箱HGにはシリアルコンソールをつけていないので、シリアルコンソールの代わりに「netcat」を使います。

1
# apt-get install netcat

9.「netcat」インストール(WindowsXP側)

http://www.genbako.com/u-boot_loader/」に 「nc111nt.zip」が置かれているので、ダウンロード・展開し、WindowsマシンのIPアドレスを「192.168.11.149」に設定する。 ※U-Boot起動時、IPアドレスが以下のように固定されているようです。

  • 玄箱側のIPアドレス 192.168.11.150
  • クライアント側 192.168.11.149

10.「netcat」監視開始

Windows マシンのコマンドプロンプトで「netcat」のフォルダへ移動後、以下のコマンドを実行すると監視が開始されます。

1
2
> nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666
(UNKNOWN) [192.168.11.150] 6666 (?) open

11.玄箱リブート

ここで、玄箱を再起動する。

1
# reboot

12.確認

玄箱起動時に、Windows 側の「netcat」(コマンドプロンプト)で以下のような出力がされれば、大成功!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 WD3200JB-22KFA0 Firm: 08.05J08 Ser#: WD-WCAMR1323445
Type: Hard Disk
Supports 48-bit addressing
Capacity: 305245.3 MB = 298.0 GB (625142448 x 512)
Boot in 01 seconds ('s' to stop)...
Loading 0:1:boot/vmlinux.UBoot

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

「U-Boot」化の作業は以上です。

もしも、このようにならなければ、「U-Boot」化失敗です。 玄箱はゴミになってしまったことになります。 ※でも、ハードハックできれば再起可能のようですが。。。(よくわかりませんが、超超玄人でないとできないと思います)

あと、「U-Boot」化したら、玄箱は今までどおりの方法でのEMモードでの起動はできません。

以下のようにするようです。

  • EM モードでの起動したい場合

  • Boot 待ちの時に s でストップ

  • run writeng
  • run emboot

  • EMモードの状態から通常モードで起動したい場合

  • Boot 待ちの時に s でストップ

  • run writeok
  • boot

※fl3(mtdblock2) に echo -n “NGNG” しただけで再起動すると HDD にある 「/boot/vmlinux.UBoot」 で起動してしまうのでカーネルパニックになるようです。

玄箱HGが「U-Boot」化できたので、次回はいよいよ「Debian 5.0(lenny)」化ですかね~。

では、また。

Comments