«前の日記(2005-06-11) 最新 次の日記(2005-06-18)»

cheep, cheep, cheep...


2005-06-16

_ 自宅サーバ復旧

不良セクタの発生したディスク上で作業しては、傷が広がってしまう。 そこで、生きている debian マシンに壊れた HDD を繋いで、 dd で吸い出そうとしたのだが、 dd conv=noerror を実行したら、エラーになったブロックが、出力で詰められてしまい、ファイルシステムとしての意味のないデータになってしまった。 そして無駄に読み込みを行って傷を広げてしまう。

dd のソースを変更して、ブロックを詰めないようにしたもので吸い出したが、あとから ddrescue という存在を教えてもらった。 最初からこっちを使っとくべきだった。

吸い出したイメージを、更に別の HDD にコピーしてから fsck をかけたあと、 lost+found の中を頑張って探す。 並列に、fsck をかけていない方のディスクイメージから、 debugfs で dump を行う。 どうやら fsck の方で大方のデータが救出できそうなので、 debugfs の出力は捨てた。

あとは、吸い出したシステムを修復して動かすか、新規にインストールするかの二択。 今回は派手に壊れたので、修復した場合には、設定ファイルが壊れているのに気付かない可能性があり、少し恐い。 ちょうど sarge がリリースされた直後でもあるので、クリーンインストールの道を選んだ。

しかし、インストールのために CD を焼くのは面倒だし、どうせ debian マシンに HDD を繋いでいるのだから、このままインストール作業を行ってから元のマシンに戻すことにした。

potato の頃は、 base.tar.gz を展開することで基本となるシステムをインストールしていたように記憶している。 sarge にも同じようなファイルが無いか探してみたが、見付からない。 少し調べてみたところ、 cdebootstrap というコマンドで基本となるパッケージを展開できるらしいので、さくっと実行。 あとは展開した環境に chroot して、 fstab を作り、 kernel と grub をインストール。 実際の動作環境と異なる (hda になるべきディスクが hdd になっている) 状態で grub のインストールを行うので、 device map を使って胡麻化す。

HDD を元のマシンに戻して無事起動。 あとは使いながら必要なパッケージをインストールしていけば良いや。