玄箱をfsck(解決編)
こちらのエントリの続きです。
なんとかfsck完了。コメントなどでアドバイスをいただいた方々、ありがとうございました。以下作業メモです。
それにしてもあんまりよくない環境(昼間はエアコン無し) + 18時間/1日の起動、を丸一年続けていても元気に動いているってなかなかいい感じ。玄箱がエラいのか、バルクのHDDの運がよかったのか。
基本方針
起動後にHDDを"ro"でリマウントできないならはじめからマウントしなきゃいいじゃない。
宴の支度
そういえばセットアップしたときなんか緊急起動モードなんかがあったなぁ、と言うことで、内蔵ROMから起動する方法が会ったことを思い出しました。
まずは制御用フラッシュメモリ/dev/fl3に緊急起動モードで起動するという旨を書き込みます。
$ mount // して、出力結果を覚えておく。 $ sudo sh -c "/usr/sbin/write_ng > /dev/fl3 // 確認。私の環境ではこれをやるとtelnetコネクションが切れたのでその後再ログインをしました # cat /dev/fl3 NGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNGNG... $ sudo shutdown -h now
すると次に起動したときには緊急起動モードで起動してくるので、telnetでログイン。
IPアドレス | 192.168.11.150 |
ログインユーザ | root |
パスワード | kuroadmin |
# クライアントマシンにて
## クライアントマシンのIPアドレスを変えて同じサブネットへ $ sudo ifconfig eth0 192.168.11.2 ## とりあえずtelnetでログイン $ telnet 192.168.11.150 KURO-BOX-EM login: root Password: (kuroadmin)
うまくrootで緊急起動モードの玄箱へログインできると、プロンプトは"#"に変わります。てかrootログイン中だし。
この状態では内蔵のフラッシュメモリから起動してるので、HDDには触り放題。デバイス名は通常起動時と同じく /dev/hda* なのでそれぞれ fsck しまくります。
f_ck
// HDDの既mount状況を確認 # tune2fs -l /dev/hda1 | grep -i mount // fsckをかける。とりあえずチェックのみ。 # fsck /dev/hda1 ... // チェック結果を確認 # echo $? 0 #
チェック結果というか、fsckの戻り値が"0"ならとりあえずチェック異常はないということで。これを普段マウントしていてチェックできないファイルシステム分繰り返します。
もしも異常が見付かったら直す。ただ、私はこれ(fsck -y)で一度coLinux用のファイルシステムを全滅させた*1ので、バックアップその他の備えをしてからやったほうがいいかと。
// fsck -y だと勝手に直してくれます。 # fsck -C /dev/hda1
宴の始末
fsckが終わったらあとは通常起動モードに戻して再起動してやればOK。
# /usr/sbin/write_ok // 確認。私の環境ではこれをやるとtelnetコネクションが切れたのでその後再ログインをしました # cat /dev/fl3 OKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOK... // 再ログイン後 # /sbin/shutdown -r now
再起動すれば、普段用のIPアドレスで起動してくるはずなので、クライアントも普段のIPアドレスに戻します。
# クライアントマシンで
$ sudo /etc/init.d/net.eth0 restart
ここまでやれば、あとは玄箱側の再起動完了を待って通常どおり使えるはず。我が家のも元気に動いてます。よかった。
とはいってもいろいろな環境があるでしょうから同じようなことではまってる方々は自己責任でどうぞ。いろいろヒントやインスピレーションをくださった方々、ありがとうございました。