badsect

こんなコマンド使う機会は滅多にないな、今時だと。だいたいHDDの調子が 悪くなったら買っちゃうもんな。

ノートPCのHDDの調子が悪くなって、NetBSDが固まった。こんなログを吐いた。

May  1 02:33:15 jog /netbsd: wd0e: uncorrectable data error reading fsbn 6199888 of 6199888-6199891 (wd0 bn 7031488; cn 7440 tn 10 sn 58), retrying

でたとえば、最初のエラーは 6199888-6199891 のブロックで起きている。 で、このブロックを全部badsect登録すべきなのかな−。不明。だけど、 どうせ隣接しているところは全部だめだろうからこの範囲を全てbadsectに いれよう。その他たくさんのブロックがエラーを吐いているので、こういうとき はzshの力を借りよう。

zsh# echo {6199888..6199891} > /root/bad

などとしてブロック番号を全部 /root/bad ファイルに落としておく。

次、取り敢えずエラーの出たパーティション(今回の場合 /usr)を mountできるように fsck する。で、mountして、トップディレクトリに BADディレクトリを作成する。

# fsck -y /usr
# mount /usr
# cd /usr
# mkdir BAD

続いて badsect を起動。さっき保存した /root/bad をいじって

badsect BAD 6199888 6199889 6199890 6199891

てな感じにする。そして

# sh /root/bad

みたいな感じ。すると、/usr/BAD/ に指定したブロックを含むファイルが わらわらとできる。そしたら、fsckする。

# cd /
# umount /usr
# fsck /usr

"HOLD BAD BLOCK" という問いには y と答えるのだが、 /BAD/ブロック番号 というファイルを「消すか?」と聞かれたときには y を押してはイカン。それ消したら不良ブロックを含んだファイルが抹消されちゃ うから。

てなわけで不良ブロックを badsect で避けるとそこそこ使えるようになるが、 fsck -y ができなくなるのでやっぱ不便だな。


Generated with mkdiary.rb
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]