起動
MBR(Master Boot Record)
LBA(Logical Block Addressing)の0に置かれる512kb
のパーティションテーブル。
offset | size | content |
---|---|---|
0x000 | 446 | bootstrap loader |
0x1be | 64 | パーティションテーブル(max 4) |
0x1fe | 2 | boot signature = 0xaa55 |
- MBRでは物理パーティションは最大4つまで
- 5つ以上は、物理パーティション内に論理パーティションを作成することで対応
- 認識最大 2.1TB
- セキュアブートを使用するWindows8以上は使えない可能性
CSM(Compatibility Supported Module)が無効にされるため
パーティションテーブル レイアウト
offset | size | content |
---|---|---|
0x00 | 1 | boot flag |
0x01 | 3 | CHS 開始セクタ |
0x04 | 1 | パーティションタイプ |
0x05 | 3 | CHS 終了セクタ |
0x08 | 4 | LBA 開始セクタ |
0x0c | 4 | 総セクタ数 |
※CHSからLBA拡張により後付けで変更された
CHSの位置情報をしようするか、LBAの位置情報を使用するかはローダーによる。
基本(デファクトスタンダード) は、
パーティーションテーブルからブートフラグがセットされているパーティーションを見つけ、
先頭セクタをロード・実行するというプログラムである
GPT(GUID Partition Table)
header layout
offset | size | content |
---|---|---|
00 | 8 | signature |
08 | 4 | GPT Version |
12 | 4 | header size |
16 | 4 | header CRC32 |
20 | 4 | reserved |
24 | 8 | first GPT header LBA |
32 | 8 | second GPT header LBA |
40 | 8 | 使用可能領域 開始 LBA |
48 | 8 | 使用可能領域 終了 LBA |
56 | 16 | ディスクのGUID |
72 | 8 | パーティションエントリ LBA |
80 | 4 | パーティションエントリ 数 |
84 | 4 | パーティションエントリ サイズ |
88 | 4 | パーティションエントリ CRC32 |
92 | - | reserved |
LBA0 に MBRが配置されているが互換性のため存在している(使用しない) LBA1 がfirst GPT headerとなる。
partition layout
offset | size | content |
---|---|---|
0 | 16 | パーティションタイプ GUID |
16 | 16 | パーティションタイプ ユニーク GUID |
32 | 8 | 開始 LBA |
40 | 8 | 終了 LBA |
48 | 8 | 属性フラグ |
56 | 72 | パーティション名 |
GUID(Globally Unique Identifier)s
boot
[UEFI(Unified Extensible Firmware Interface)]の仕組みでbootする。
EFI System partitionはFATでフォーマットされている。
- GPT参照し、EFI System partitionを探す。
- \EFI\BOOT\BOOTX64.EFI or \EFI\BOOT\BOOTIA32.EFI のブートローダーを探す。
- ブートローダー(
UEFI Application
)を実行する
ブートローダーはPEバイナリ(Windows exe file)でUFEI API
を使用するApplicationです。
Old Bootloader
- LILO
もう出会うことはないかなぁ~ LILO vs GRUB - GRUB
現在はGRUB2