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 を作れば何とかなるだろうし。
Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市