タイトルの通りやらかした。
ddコマンドでブートローダを上書きしようとして間違えてMBR(Master Boot Record)全体を上書きしてしまった。
# dd if=/dev/zero of=/dev/sda count=1 bs=512
気がついた時には手遅れでfdiskコマンドを実行してもエラーしか帰ってこない。MBRにはブートローダやパーティションテーブル、シグネチャ等が含まれており、パーティションテーブルが吹き飛ぶとHDDへアクセスが出来なくなる。
ちなみに、過去にはこのMBRを破壊する手法によって韓国の銀行を標的にしたサイバー攻撃も起きている。
韓国の銀行、メディアに対するサイバー攻撃事件について : マカフィー株式会社 公式ブログ
TestDiskで修復を試みた
ネットで真っ青になりながら調べるとTestDiskというツールを見つけた。これを使えばMBRから失われたパーティションテーブルのデータを復元できるらしい。
これを実行するためにライブデスクトップが利用可能なLinuxをUSBからブートする。今回はXubuntuをインストールした直後ということもあり、Xubuntuを使った。こういった時のためにもUSBにrescueCDを入れておくべきだと思った。
ダウンロード・起動
OSが立ち上がったらrootに昇格してダウンロードページからLinux版(今回はx86_64)をダウンロードして展開する。
# sudo -i # wget https://www.cgsecurity.org/testdisk-7.0.linux26-x86_64.tar.bz2 # tar xvfj testdisk-7.0.linux26-x86_64.tar.bz2
展開したディレクトリに移動してtestdisk_staticを実行する。
# cd testdisk-7.0 # ./testdisk_static
日本語のドキュメントは無かったが次のサイトを参考にした。
修復作業
[ No Log ]を選択した。
対象となるストレージデバイスを選択する。
大方の場合はEFI GPTかIntelを選択する。今回はEFI GPTを選択した。
(後々、Intelだと気づいて作業が終わってからやり直した)
分析[Analyse]を選択した。
[Enter]を押下してquick searchを実行し終わるとパーティション情報が表示される。左右キーとショートカット(画面下部に表示)を使ってパーティションの取捨選択をする。
Pを押下すると指定したパーティションのファイル一覧を表示できる。
ファイル一覧で[Enter]を押下すると以下の画面となり[Write]を選択してYキーを押下するとMBRにテーブル情報が書き込まれる。
書き込み終わったらTestDiskを終了して、秘密の呪文(違)を入力してシャットダウンする。
# sync # sync # sync # shutdon -h now
ブートローダのインストール
これで起動すればよいが大方は起動しないと思われる。というのも復元したのはパーティションテーブルであり、ブートローダは復元できていない。
ブートローダを復元するにはWindowsならインストールディスクから「システムの修復」を選択してブートローダを復元すればよい。
Linux系の場合はUSBやCDで起動したLinuxからgrub-installを実行するのが早いと思う。今回は、Linuxのパーティションも吹き飛ばしたので再インストールするついでにgrubもインストールした。
最後に
MBRを含めてバックアップはちゃんと別のドライブに残しておく。間違えても同じドライブに残すような馬鹿な真似はしないように(ブーメラン。あと、fdiskの実行結果をテキストに保存しておくと非常時にとても役立つからバックアップファイルと一緒に保存しておくと良い。
コメントを残す