MBRは、ハードディスク等の記憶装置において一番初めに読み込まれるものです。
従って、MBRに異常があると、Windowsを起動できなくなります。
起動ディスクじゃなかったとしても、パーティションを正しく認識できなくなったり、
その記憶装置に対して致命的な影響をもたらします。
でも実は、MBRだけのトラブルであれば、これほど短時間であっさり復旧できるものもありません。
なにしろ、1セクタ分のデータサイズしかありませんから、
特別複雑な仕組みになっているわけでもなく、データの書き換えも瞬時に完了してしまうからです。
ただ問題は、普段MBRを何も意識しなくてもパソコンを使えてしまうので、
MBRでトラブルが発生すると、その原因箇所に気がつきにくいということ。
さらに、慣れていないと復旧方法がわかりにくいことです。
ちなみに、勝手に再起動したり、再起動を繰り返すような症状の場合は、
MBRやブートセクタの問題ではないはずです。
MBRとは何か
マスターブートレコード。
ハードディスク等、記憶装置の最初の1セクタです。
ちょっと誤解されがちですが、MBRはファイルではありません。
ブートセクタの一種です。
ブートセクタは文字通り「セクタ」で、ハードディスク内のデータの最小単位1つ分です。※基本的に、512バイト。
ハードディスク内のデータで、最も原始的なものです。
パソコンの電源が入ると、まずマザーボードのBIOSが起動します。
その後、BIOSに設定されている起動順に、各種接続デバイスが読み込まれていきます。
そしてハードディスクにアクセスがあったとき、最初にハードディスクの先頭セクタを読み込みます。
つまり、起動時に最初に読み込まれるのがMBRです。
MBR内のデータ
MBRには、ハードディスクを起動していくうえで必要な情報が収められています。
主要なデータは、以下の2つです。
ブートストラップローダ | プログラム部分。 ハードディスクの中で、一番初めに読み込まれるプログラム。 ブートストラップローダは、パーティションテーブルの情報をもとに、 起動するパーティションを特定し、ブートセクタに処理を引き渡します。 |
---|---|
パーティションテーブル | パーティションに関する情報。 各パーティションがどこからどこまでといった範囲の指定から、 パーティションのファイルシステム、拡張パーティションかどうか、 アクティブなパーティションはどれかといったことが記載されています。 全体で64バイトの領域に対して、1つのパーティションにつき16バイト使用するため、 プライマリパーティションは4つまでしか作成できないという制約があります。 |
以上の内容でわかると思いますが、
MBRに異常があるだけで、Windowsは簡単に起動できなくなります。
だから、MBRを操作するのは危険だという認識があるかもしれませんが、
前述のとおり、MBRは1セクタ分のデータの中だけの話なので、
もし操作した結果が間違っていたとしても、修正し直したらいいのです。
過度に恐れる必要はありません。
それよりも重要なのは、どこに問題があり、どう対処すべきなのかという理解です。
以下、MBRの修復作業を、
に分けて説明していきます。
ブートストラップローダの修復
ブートストラップローダは、起動ディスクに必要なものです。
OSを起動するためのプログラムだからです。
たとえば、OSがインストールされている内蔵ハードディスクには必要ですが、
データ保存用の外付けハードディスクには必要ありません。
実際に、外付けハードディスクのMBRにはブートストラップローダが記述されていないことがあります。
「Windows XP」時代には、
回復コンソールから「fixmbr」コマンドを使うことで、ブートストラップローダを修復することができました。
※参考: Microsoftサポート
ただし、この方法にはWindowsのインストール用ディスクが必要です。
通常、Windowsがプリインストールされているパソコンがほとんどのはずですから、
Windowsのインストール用ディスクなんて手元にないのが当たり前。
代わりに付いてるリカバリディスクでは代用できません。
つまり、実際には「fixmbr」を使えないケースがあまりに多かったのです。
でも現在では、「Windows PE」という便利なものをMicrosoftが使えるようにしてくれたおかげで、
ある程度環境を選ばず、ブートストラップローダを修復できます。※「Windows XP」でも大丈夫。
「Windows PE」起動ディスクを作成するには、「WinPe-tch Direct」を使うと便利です。
「Windows PE」が何かよくわからなくても、
「Windows 7」で作成できるようになった「システム修復ディスク」なら、少しは身近に感じると思います。
「システム修復ディスク」は「Windows RE」を提供しているもので、
「Windows RE」は「Windows PE」をもとに成り立っています。
早い話が、「Windows PE」にできることは、「システム修復ディスク」でもできます。
MBRのブートストラップローダを修復するには、
「Windows PE」上コマンドプロンプト(「システム修復ディスク」上コマンドプロンプトでも一緒)にて、
bootsect /nt60 sys /mbr
と入力します。
「bootsect」というのは、ブートセクタを修復するためのコマンドです。※参考: Microsoft TechNet
後に続くオプションの意味は以下のとおり。
/nt60 | ブートセクタに「BOOTMGR」用のブートストラップローダを書き込む。 同様、「/nt52」とすれば、「NTLDR」用のブートストラップローダを書き込む。 |
---|---|
sys | ブートセクタに関して、アクティブパーティションを対象とする。 ドライブレターの代わり。※ドライブレターを入力してもいいが、通常とは違うので注意が必要。 |
/mbr | MBRにブートストラップローダを書き込む。 |
正直、ここで重要なのは「/mbr」だけなんですが、
「bootsect」コマンドの仕様上、MBRのみを単独で書き換えることはできないため、
その前にブートセクタに関して指定する必要があるのです。
「bootsect」コマンドでは、
MBRのブートストラップローダは、ブートセクタのブートストラップローダと必ずセットで書き換えられます。
従って、Vista以降であれば先の内容でいいんですが、
XP以前のNT系OSであれば、
bootsect /nt52 sys /mbr
とする必要があります。
ただ、ブートセクタにも後方互換性があるようで、XPに対して先の内容を実行しても正常動作するんですけどね。
ちなみに、「Windows PE」や「システム修復ディスク」には32ビット版と64ビット版がありますが、 「bootsect」に似たコマンドで、「bootrec」というものがあります。 ただし、「bootrec」コマンドは「Windows RE」でしか使えない、
ブートセクタに32ビットと64ビットの違いはないので、「bootsect」コマンドが使えればそれでいいです。
どーでもいーはなし
こちらは、「/fixmbr」オプションを指定すると、MBRのブートストラップローダのみを書き換えることができます。
つまり「Windows PE」では使うことができず、汎用性に劣るため、
ここでは「bootsect」コマンドを主体に話をしています。
パーティションテーブルの修復
上記「bootsect」コマンドや「fixmbr」コマンドで書き換えが行われるのは、ブートストラップローダのみです。
パーティションテーブルはそのまま保持されています。
MBRのパーティションテーブルに異常があり、起動できない、パーティションが認識されない等の場合は、
以上の操作を行なっても復旧できません。
パーティションテーブルの修復に便利なツールとして、「TestDisk」があります。
名前からは想像しにくいんですが、ブートセクタの修復に関して、かなり万能なソフトです。
パーティションテーブルはもちろん、先のブートストラップローダもあわせて修復することが可能です。
「TestDisk」の詳細については下記ページにて。
こちらは主に、「TestDisk」で一番使用頻度が高いと思われる、パーティションの復旧方法についてまとめたものです。
つまり、MBRにおいてはパーティションテーブルの修復ということになります。