ブートセクタとは、パーティションの先頭セクタのことです。
これにはいくつか別称があり、
PBS、PBR、VBS、VBR、とも呼ばれます。※参考: Wikipedia(英語)
というのも、ブートセクタの本来の意味はもっと広く、MBRもブートセクタの一種ととらえることができるので、
これらを区別するための呼び名です。
ただ、GPTが普及し、拡張パーティションの必要性も低下してきたので、
ブートセクタと言えばPBS(パーティションブートセクタ)のみを指すのが一般的になってきました。
PBS以外のブートセクタの重要度が相対的に低下してきたというか。
以後、ここで述べるブートセクタは、基本的にPBSのことだと思ってください。
ブートセクタに問題があると、そのパーティション全体に対してアクセスできなくなります。
結果として、Windowsが起動できなくなることもあります。
ブートセクタという言葉を初めて耳にする人でも、フォーマットという単語なら知っていると思います。
ブートセクタは、パーティションの論理フォーマットと直接関係しています。
パーティションをフォーマットすると、データが完全に消えてしまうと誤解されることもありますが、
論理フォーマットの前後において、パーティション内のほとんどの領域はデータの書き換えがありません。
論理フォーマットで上書きされているのは、ブートセクタやファイルシステムの管理情報です。
つまり、ブートセクタはパーティションのフォーマットを規定するものでもあるため、
ブートセクタが破損していれば、そのパーティションはフォーマットされていないとみなされてしまいます。
アクセスできなくなるのも当たり前です。
ブートセクタとは何か
パーティションブートセクタ。
MBRと同じ、ブートセクタの一種です。
各パーティションの最初の1セクタが、ブートセクタです。
ブートセクタには、ブートセクタが属するパーティションに必要な情報が収められています。
パーティションがパーティションとしてふるまうために、必要不可欠なものです。
ブートセクタが正常でないと、そのパーティション全体に対してアクセスできなくなります。
Windowsは「フォーマットしますか?」とか聞いてきます。
ちなみに、「フォーマットしますか?」と聞いてくるのは、
フォーマット完了時にブートセクタが作られるからです。
論理フォーマットは、新たにブートセクタを作る作業でもあります。
ブートセクタが正常でないため、ブートセクタを新たに作り直そう、ということです。
新しくパーティションを利用するのであれば、それでまったく問題ありません。
もちろん、過去に保存されていたファイルは使えなくなりますが。
ブートセクタ内のデータ
MBRと同じく、ブートセクタも1セクタ分のデータしかありません。
ブートセクタ内に書かれている情報も、MBRと似た部分があり、大きく以下の2つに分けられます。
ディスクパラメータ | そのパーティションに固有の情報。 セクタサイズ、クラスタサイズ、総セクタ数、 MFT(マスターファイルテーブル)の位置等が書かれています。 |
---|---|
ブートストラップローダ | プログラム部分。 「Windows NT」系のOSだと、 ブートローダ本体である「NTLDR」や「BOOTMGR」を読みに行き、 Windowsを起動していく引き金となるものです。 |
ディスクパラメータには、
そのブートセクタが属するパーティションのファイルシステムに関するルールが書かれているので、
これを読み込まないことには、後に続くパーティション内のファイルを認識することができません。
また、ブートストラップローダは、OSの起動に必要なものです。
アクティブパーティションのブートストラップローダが正しくないと、それより先の起動処理が行われません。
以下、ブートセクタの修復について、
と、対象を分けて説明していきます。
ディスクパラメータの修復
ディスクパラメータの修復は、一般に困難な作業になることが多いです。
ただ、パーティションのフォーマット完了時に、ブートセクタのバックアップが同時に作られているので、
これを利用して復旧を試みることができます。※参考: Microsoftサポート
とはいえ、そのためにはセクタエディタを使う必要があり、操作が簡単ではありません。
そこで、「TestDisk」というツールを使うと、ブートセクタを半自動的に復旧することができます。
半自動とはいえ、ユーザーによる判断が多く求められる部分でもあります。
実際にデータを書き込む前に、現状を正しく把握することが何より重要です。
ブートストラップローダの修復
ブートセクタに関して、「TestDisk」で唯一修正できないのが、ブートセクタのブートストラップローダです。
ブートストラップローダはOSのブートローダと対になって意味を成すもの、つまりOSの一部でもあるため、
OSによって書き込まれるべきものです。※もちろん、一番大きいのはライセンスの問題だと思います。
最初に断りを入れておきますが、
ブートストラップローダは、すべてのパーティションに必要なものではありません。
パーティションを認識する、しないという問題とは無関係です。
前述のとおり、ブートストラップローダはOSの起動に必要なプログラムなので、
OSがインストールされているディスクの、さらにアクティブパーティションのブートセクタにのみ必要です。
たとえば、データ保存用として使われることがほとんどのSDカード等では、
ブートセクタにブートストラップローダがない場合があります。
それでも正常動作しますし、データ保存用であれば何の問題もありません。
「Windows XP」時代には、
回復コンソールから「fixboot」コマンドを使うことで、ブートストラップローダを修復することができました。
※参考: Microsoftサポート
ただ、これには「Windows XP」のインストール用ディスクが必要で、
誰でも「fixboot」を使える環境にはなかったのが実情です。
「Windows 7」が普及するにつれ、ユーザーにもいろんな選択肢が与えられるようになりました。
特に、「Windows PE」と「システム修復ディスク」の存在は大きいです。※「Windows XP」でも「Windows PE」を作成できます。
これらを使えば、
Windowsのインストール用ディスクがなくても、ブートセクタのブートストラップローダを修復することは可能です。
具体的に、ブートセクタのブートストラップローダを修復するには、
「Windows PE」上コマンドプロンプト(「システム修復ディスク」上コマンドプロンプトでも一緒)にて、
bootsect /nt60 sys
と入力します。
「bootsect」というのは、ブートセクタを修復するためのコマンドです。※参考: Microsoft TechNet
以下、オプションについて補足します。
/nt60 | ブートセクタに「BOOTMGR」用のブートストラップローダを書き込む。 つまり、Vista以降の起動パーティション用。 |
---|---|
/nt52 | ブートセクタに「NTLDR」用のブートストラップローダを書き込む。 つまり、XP以前の起動パーティション用。 |
sys | ブートセクタに関して、アクティブパーティションを対象とする。 その他のパーティションのブートセクタには変更を加えない。 |
「sys」というのは、ドライブレターの代わりです。
ドライブレターを直接指定してもいいんですが、
ブートストラップローダが影響するのはアクティブパーティションのみなので
「sys」としておけばいいと思います。
しかも、「Windows PE」から起動すると、ドライブレターが普段とは変わることがありますので。
「Windows PE」は、基本的にVista以降のWindowsを対象としていますが、
「bootsect」コマンドではXP以前に対応したブートストラップローダを書き込むこともできるので、重宝します。
たとえば、
bootsect /nt52 sys
とか入力すればいいわけです。
どーでもいーはなし
「bootsect」に似たコマンドで、「bootrec」というものがあります。
「/fixboot」オプションを指定することで、ブートセクタにブートストラップローダを書き込むことができます。
ただし、「bootrec」コマンドはVista以降のWindowsを対象としているため、
「/fixboot」オプションで書き込まれるブートストラップローダも、「BOOTMGR」用のものに限定されます。
さらに、「bootrec」コマンドは「Windows RE」でしか使えません。
つまり、「システム修復ディスク」では使えても、「Windows PE」では使えないのです。
以上の理由から、ここでは「bootsect」コマンドを中心に説明しています。