HDD を接続し、RESET SW を押したときの動き

FlashBoot 玄箱/Pro

Flash boot モード時、 HDD を接続してリアパネルの RESET SW を押したときの動きを トレースする。

/usr/local/sbin/Keventd

/proc/buffalo/kernevnt が読出せる度に、 その内容を引数に /usr/local/bin/KeventHandller.sh を呼び出す。
/proc/buffalo/kernevnt には、
・LAN がアクティブになったときには "lanact" が出力される
・定期的に "micon_interrupts" が出力される

リアパネルの RESET SW を押したときは、後者に該当する。

/usr/local/bin/KeventHandller.sh

引数が "micon_interrupts" の場合は、 スイッチのステータスを読出す
"init_sw_front" であれば、/usr/local/bin/InitDisk1.sh を呼び出す。
正しくは "reset_sw_rear" である(笑)

/usr/local/bin/InitDisk1.sh

・/dev/sda, /dev/sda1, /dev/sda4 のいずれかが マウントされていればエラー
・/dev/sda, /dev/sda1, /dev/sda4 のいずれかが xfs にフォーマットされていればエラー
・INFO LED で 28 を示す
・ピッとブザーを鳴す

ここからが、/mnt/mtd/ChangeMeDevHDD の有無によって変ってくる

/mnt/mtd/ChangeMeDevHDD が無い場合

製品仕様書の 7.1 で説明されている share を作る場合。
・プライマリパーティションを1つだけ作成(/dev/sda1)
・/dev/sda1 を xfs でフォーマット
・/dev/sda1 を /mnt/disk1 にマウント
・INFO LED を消す

/mnt/mtd/ChangeMeDevHDD がある場合

製品仕様書の Appendix B で説明されている hdd ブート環境をつくる場合。
・パーティションを4つ作る
・/dev/sda1 を ext3 でフォーマット
・/dev/sda2 を xfs でフォーマット
・/dev/sda4 を xfs でフォーマット
・/dev/sda3 を swap に
・/usr/local/sbin/SetupDevEnv.sh を呼び出す
・INFO LED を消す

/usr/local/sbin/SetupDevEnv.sh

/dev/sda がパーティションが切られ、フォーマットされていることを 大前提としている。

・/mnt/root, /mnt/boot を作成する
・/dev/sda1 を /mnt/boot にマウントする
・/dev/sda3 を /mnt/root にマウントする
・uImage.buffalo を /mnt/boot にコピー
・hddrootfs.tar.gz を /mnt/root に展開
・/usr/local/bin/kuro_lib を /mnt/root/usr/local/bin/kuro_lib に コピー

もし、/mnt/mtd/ChangeMyUbootEnv が存在すれば、
・nvram コマンドを使用して U-Boot 環境変数を変更

考察

hddrootfs.tar.gz を展開した後は、 /usr/local/bin/kuro_lib をコピーしている程度で、 特に悪さはしていない。

ということは debian のディレクトリツリーを hddrootfs.tar.gz という名前で mtd device に置けば 簡単インストールができそう。
ファームの吸い上げ、ファンコントロール、電源ボタンコントロールは rc を作れば何とかなるだろうし。




KURO-BOX/PRO
玄人志向
楽天市場
TSUKUMO ネットショップ
Yahoo!ショッピング
Sofmap
クレバリー
TwoTop New!


外付 HDD からのブート/ Boot up from external hard drive
ハックの記録
LinkStation/玄箱 をハックしよう

Muvo^2 を刺す

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市