« インターネットラジオを録音してオフライン再生 | トップページ | Windowsの共有フォルダを開けない時の対処 »

2010年1月25日 (月)

OSごとのブートセクタ復元方法

アルファ版のUbuntuを使っていて、内蔵ドライブのブートセクタを飛ばしてしまいました。
復元方法を記事にしたのですが、急いで公開しようと思い慌てて書いたら読みにくかったので、改めてOSごとにまとめてみした。





外部デバイスの修復

このトラブルの多くは、外部デバイスに書き込まれるべきブートローダが内蔵ドライブに書かれてしまうパターンだと思います。
両方接続しているなら起動できる状況です。
その場合、慌てず外部デバイスから修復しましょう。
※外部デバイスにはgrubで起動するLinux系OSを想定しています。

まず内蔵デバイスから起動する設定にしつつ、両方接続して起動してください。
システム・モニタ等で外部デバイスのドライブ番号(ここでは /dev/sdd とします)を確認しておき、grubのインストールを行ってください。
Ubuntuなら次のコマンドになります。

sudo grub-install --root-directory=/ --force /dev/sdd

※Ubuntu10.04の時のコマンドで、恐らく9.10でも同様です。9.04以前なら force オプションはありません。

blocklistsへの書き込み警告が表示されますが、問題はありません。
書き込みに成功したら、外部デバイスから起動してください。
sudo update-grub で外部デバイス起動時の設定に更新すれば完了です。




内蔵デバイス - Windowsの修復

次に多いのはマルチブート環境でLinuxのパーティションを消してしまい、grubのファイルが無くなってしまったパターンかと思います。
前述の方法で別のパーティションにgrubだけインストールし直すのも手ですが、ここは綺麗にWindowsのブートローダを修復します。

Windows 7・Vistaの場合、インストールディスクから起動してシステムの回復を用います。
メニューの中にコマンドプロンプトがあるので、起動してください。
次に下記のコマンドで、ブートセクタの再作成と書き込みを行ってください。

bootrec /fixboot
bootrec /fixmbr


Windows XPの場合はコマンドがfixbootとfixmbrになるそうですが、未確認です。
format /mbrコマンドも使えたように記憶しています。
使えるなら外部デバイスのgrubからWindowsを起動し、コマンドプロンプトから修復できるのでインストールディスクが不要になります。




内蔵デバイス - Linux系OSの修復

この状況はインストールの失敗や、何らかの障害の場合が多いと思います。
直し方は基本的に外部デバイスと同じ手段を用いますが、こちらは同じOS・バージョンのLiveイメージから作業します。
Liveイメージの起動後にddコマンドを使いますが、あらかじめbootフォルダのあるパーティションをマウントしておき、システム・モニタ等でgrubをインストールするドライブ番号を調べておく必要があります。
ここでは最もシンプルに最初の内蔵HDDから起動して、先頭のパーティションにUbuntuのルートフォルダがあるとして、マウントした場所を /media/disk 、ドライブ番号を /dev/sda とした場合のコマンドです。

sudo grub-install --root-directory=/media/disk /dev/sda

※9.04のコマンドのつもりなので、force オプションは省いてあります。

なおgrubのバージョンは元通りにする必要はありませんので、同じバージョンのLiveイメージが入手できないのであれば、こだわらなくても大丈夫です。

(2010/03/13追記)
Liveイメージで起動しているとNautilusからワンクリックでマウントという訳にはいかなかったので、マウントコマンドも書いておきます。
フォルダやファイルフォーマットは環境によりますので、参考程度にしてください。
sudo mkdir /media/disk
sudo mount -t ext3 /media/disk /dev/sda




転ばぬ先のバックアップ

管理人のようにOSを取っ替え引っ替えしてる人はブートセクタを破損する確率も高くなるので、バックアップしておいた方が良いでしょう。
わずか32kbのバックアップで安心できます(ただしLinux限定)。

下記は内蔵HDDを /dev/sda 、バックアップ先のUSBメモリを /media/USB とした場合のコマンドです。

sudo dd if=/dev/sda of=/media/USB/mbr.bak bs=512 count=63

リストアする時はifとofのパスを逆にしてください。
また /dev/sda に書き込む際にはマウントを解除しておく必要があります。


なお全てのディスクのセクタサイズが512bという訳ではありませんし、必ず63セクタなのかというと疑問があります。
でも管理人はディスクの物理フォーマットに詳しくない上にUbuntuのWikiに書いてあるので、よしとしておきます!
少なくても管理人のTypePでは、無事に復活できました。

バックアップするOSがWindows系の場合は色々と難しそうなので、素直にインストールディスクを使うか、バックアップソフトを使った方が無難っぽいです。





にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

WWW を検索 ブログ内検索




« インターネットラジオを録音してオフライン再生 | トップページ | Windowsの共有フォルダを開けない時の対処 »

VAIO TypeP雑記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1302387/37586394

この記事へのトラックバック一覧です: OSごとのブートセクタ復元方法:

« インターネットラジオを録音してオフライン再生 | トップページ | Windowsの共有フォルダを開けない時の対処 »