MBRとPCのブートプロセス

BIOSとMBR

ブートセクタ

3種類。

  • パーティションを持たないストレージの、先頭セクタ(PBR)
  • パーティションを持つストレージの、先頭セクタ(MBR)
  • パーティションを持つストレージの、各パーティションの先頭セクタ(PBR)
  • 1セクタは512バイトで、最後の2バイトは、0x55, 0xAA

MBR

  • マスターブートレコード
  • ブートセクタの一種
  • パーティションを持つストレージの、先頭セクタ
  • 先頭の446バイト(0-445)がブートストラップローダ
  • 続く64バイト(446-509)がパーティションテーブル
    • 16×4で、4つのパーティションを管理
    • ブート可否、フォーマット、開始位置、サイズなど
    • LBA方式で開始位置とサイズを指定 ...2TBまで表現可能
  • ブートセクタの一種なので、最後の2バイト(510-511)は、0x55, 0xAA

PBR

  • パーティションブートレコード

HDDの場合

  • MBRが、シリンダ0、トラック0、ヘッド1(ヘッドだけ、1オリジン??)
  • 第1パーティションは、トラックの先頭から始まる(シリンダ0、トラック1、ヘッド1)
  • それ以外のパーティションは、シリンダの先頭から始まる
  • つまり、MBRと第1パーティションの間には、必ず隙間がある
  • ここを使うローダも存在する
    • より大きな隙間を空けるため、第1パーティションをもっと後ろから始めたり、第1パーティションをローダ用の捨て石にすることもある

UEFIとGPT

UEFI

  • Unified Extensible Firmware Interface
  • BIOSに代わるもの
  • GPTというパーティション方式を採用
  • BIOSがファイルシステムを理解しないのに対し、UEFIはFATを理解できる

GPT

  • GUID Partition Table
  • MBR方式に代わる、パーティション方式
  • パーティション数は128まで?
  • かなーり大きなパーティションサイズをサポート
  • ローダをMBRや「隙間」に押し込めるのではなく、専用のパーティションに置く
    • BIOS用にBIOSブートパーティション(ファイルシステム不問)
    • UEFI用にUEFIシステムパーティション(必ずFAT)
    • UEFIシステムパーティションのGUIDは、C12A7328-....

Windowsのブートプロセス

  • 電源ONで、BIOSが起動
  • BIOSが、MBRのブートストラップローダを実行
  • ブートストラップローダが、「ブート可」とマークされたパーティションのブートセクタ(にあるブートストラップローダ)を実行
  • PBRのブートストラップローダがWindowsのローダを起動
  • WindowsのローダがWindowsを起動

GRUB(&BIOS&MBR)のブートプロセス

  • 電源ONで、BIOSが起動
  • BIOSが、MBRのブートストラップローダ(これがGRUBのstage1)を実行
  • stage1が、MBRと第1パーティションの間にあるローダを実行(GRUBのstage1.5)
  • stage1.5が、GRUGのstage2(どこにでも置ける)を実行
    • 「隙間」のサイズが十分なら、stage1.5を省略して、stage2を隙間に置いてもいい
  • stage2がOS(Linuxカーネル)を起動

GRUB2(&UEFI&GPT)のブートプロセス

  • 電源ONで、UEFIが起動
  • UEFIがUEFIブートマネージャを実行
  • UEFIブートマネージャが、UEFIシステムパーティションにあるコンフィグ情報に基づきブートローダを実行
    • このブートローダとしてGRUBを登録しておき、GRUBが実行されるようにする
    • もしGRUBを登録してなければ、デフォルトのブートローダ\EFI\BOOT\BOOTX64.EFIが実行される
    • これも見つからない場合、EFI Shellが実行される
  • GRUBがOS(Linuxカーネル)を起動

余談

GRUBをコンフィグするとき

root (hd0,0)
setup (hd0)

などとするのは、

  • setupで指定されたドライブのMBRにstage1を配置し
  • 隙間にstage1.5を配置し
  • rootで指定されたパーティションの/grubの下(このパーティションは/bootにマウントされるので、実際は/boot/grubの下)にstage2を配置する

ため。

Last modified:2016/04/09 18:59:29
Keyword(s):
References:[サーバ管理・Linux関連]
This page is frozen.