KURO-BOX/HGではDIAG LEDというのがあって、その点滅状態で各種の状態を報告してくれます。
「DIAG 6回点滅」はHDDの異常を示し、要は「壊れている」という報告のためのもの。・・・・・でも実際は「壊れていない」。ファームウェアの不具合が根本原因なわけです。
直接的にはHDD スピンアップのための待ち時間不足でHDDの認識が正常に行われずにエラーとなっているわけです。 問題は待ち時間の作り方。 単純にループの変数で行っている。 そのこと自体は良い。 でもCPUのクロックなどを無視した実装がNG。 はっきり行って、プロの仕事とは言えない。
今回使用したWD20EARSもDIAG6回点滅問題に遭遇します。
電源投入の工夫で対応は可能ですが、ファームウェアにパッチをあてることにしました。
ファームウェアのパッチのあて方はこちらを参照させていただきましたが、リンクだけだと情報が消えてしまう可能性がありますので、以下のとおり、コピー、再編集させていただきました。オリジナルファイルのバックアップファイル名は私の趣味により変更しました。
- vimをapt-getでインストール
- # cat /dev/mtd1 >bootcode.bin
- # cp -p bootcode.bin bootcode.bin.org
- vim -b bootcode.bin
- vim上で[:%!xxd]でダンプ表示に変更
- vim上で[/03e7]でループ変数999の部分を検索
- vim上で3e7のアドレスが2b96の位置が該当位置
- vim上でアドレス2b96の03e7を07cf(1999)に変更
- vim上で[:%!xxd -r]でバイナリ表示に戻す
- vim上で[:wq]で書き込む。バイナリ表示に戻さないで実施しないように注意
- 編集差分を確認
# cmp -l bootcode.bin.org bootcode.bin
11159 3 7
11160 347 317
- md5sumでバイナリのチェック
# md5sum bootcode*
dedd9d6932a4515f2535cbf7e40bd4e5 bootcode.bin
35d6ffc9f8191181750a8bacba369e3c bootcode.bin.org
- # cat bootcode.bin > /dev/mtdblock1
- 書き込み後のmd5sumチェック
# md5sum /dev/mtd1
dedd9d6932a4515f2535cbf7e40bd4e5 /dev/mtd1
セコメントをする