Computer

update create

起動

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でフォーマットされている。

  1. GPT参照し、EFI System partitionを探す。
  2. \EFI\BOOT\BOOTX64.EFI or \EFI\BOOT\BOOTIA32.EFI のブートローダーを探す。
  3. ブートローダー(UEFI Application)を実行する
    ブートローダーはPEバイナリ(Windows exe file)でUFEI APIを使用するApplicationです。

Old Bootloader

  • LILO
    もう出会うことはないかなぁ~ LILO vs GRUB
  • GRUB
    現在はGRUB2