ブートセクタ
ブートセクタ(英: Boot sector)は、ハードディスクドライブやフロッピーディスクなどの補助記憶装置のディスクセクタの一種で、ブートプログラムのコードなどを格納している部分である。ブートブロック(Boot block)とも。一般に、PC/AT互換機ではブートセクタと呼び、他のコンピュータではブートブロックと呼ぶことが多い。
BIOSがブートデバイスを選択すると、そのデバイスの第一セクタ(後述するMBRまたはPBR)をコピーし、0x7C00 番地に配置して実行する。
種類
[編集]ブートセクタには、主に以下の2種類がある。
- パーティションブートレコード(PBR)は、パーティションのない記憶媒体の第一セクタか、または個々のパーティションの第一セクタである。そこには、その媒体(またはパーティション)にインストールされたオペレーティングシステム(またはその他のスタンドアロンのプログラム)をロードして起動するコードが格納されている。ブートセクタであることを示すため、2バイトの16進数 0xAA55 で表されるブートセクタ・シグニチャをそのセクタの最後尾に書き込まれている。もしこれが無い場合、BIOSやMBRコードはエラーメッセージを表示し、ブート処理を中断する。
- マスターブートレコード(MBR)は、パーティションのある記憶媒体の第一セクタである。多くのBIOSコードは、MBRにもブートセクタ・シグニチャ(0xAA55)があることを要求する。MBRセクタには、どのパーティションがアクティブであるかを判断して、PBRコードを起動するコードが格納されている。
運用
[編集]PC/AT互換機では、BIOSはPBRとMBRを区別せず、パーティションも認識しない。BIOSは単に記憶媒体の第一セクタをロードして実行するだけである。フロッピーディスクの場合、それはPBRになり、ハードディスクの場合、それはMBRになる。MBR内のコードはパーティションを認識するので、アクティブに設定されているパーティションのPBRをロードして実行させる。PBRコードは二次ブートストラップローダをロードする。
さらに言えば、フロッピーであろうが、USBメモリであろうが、ハードディスクであろうが、ブート可能な記憶デバイスの第一セクタに格納されているものは、OSをブートするコードである必要はない。BIOSは単にそこにあるものをロードしてそれを実行するだけであり、その際にセクタの最後の2バイトが0xAA55になっていさえすればよい。このため、MBRにあるブートコードを容易に置換可能であり、場合によってはユーザに次にどうすべきかを選択させるような複雑なブートプログラムをロードさせることもできる。ただしこのように簡易な設計になっているため、次の節で説明するようにウイルスに狙われやすいという問題もある。
ブートセクタとコンピュータウイルス
[編集]ブートセクタは、コンピュータウイルスがシステムの制御を奪う手段として使われることがある。この種のウイルスはブートセクタの内容をウイルスのコードで書き換える(フロッピーの場合、ハードディスクの場合、両方に感染する場合がある)。
外部リンク
[編集]- ウイルスに感染したパソコンを救う IPAセキュリティセンター
- Microsoft. “Windows NT でウイルスからブートセクタを保護する方法”. KnowledgeBase. 2008年2月1日閲覧。
- ブートセクタウイルスを検出するメソッド Microsoft サポートオンライン
- 古典的ウイルス Viruslist.com
- Assembler/なぜx86ではMBRが"0x7C00"にロードされるのか?(完全版)