2017/03/22

[勉]最近のPCのブートを知る (1) : MBRとGPT

まずは、UEFIから調べる。

BIOSに代わるファームウェア“UEFI”とは一体何か? 1/2 | 震撼性能! Sandy Bridgeに死角なし!! | DOS/V POWER REPORT

DOS/V POWER REPORTだから、PCを自作する人向けの情報ではあるものの、ポイントが絞られている分わかりやすい。

  • 起動ドライブの容量制限がなくなる(実質的に)
  • 設定画面がGUIにできる

今回はブートのことを知りたいだけなので、前者だけ見ていく。


Master Boot Record(MBR)の管理しか知らなかったのだが、GUID Partition Table(GPT)という管理があるらしい。

MBRは、HDDなどのセクタ0にパーティション情報が書いてある形式・・・と思っていたが、セクタ0だけじゃなくてパーティション分けされた先頭セクタでも良いようだ。
マスターブートレコード - Wikipedia

昔のHDDはCHS方式でアクセスしていたけど、容量が足りなくなってLBA方式になった。
SATAになる前のパラレルなHDDは40ピンあって、けっこうな本数がLBA用に割り当てられていたような記憶がある。
Advanced Technology Attachment - Wikipedia

パーティションテーブルのオフセットが8byte目のところがLBA方式で、サイズが4byteしかないというのが「MBRは32bit管理」という部分だろうか。
でも、これは先頭位置だけだから、その次の「全セクタ数」が4byteになっている方が32bitで制限される原因としては大きいのか。


GUIDパーティションテーブル - Wikipedia
こちらがGPT。
なんとなく肝臓付近を意識してしまうが、γ-GTPなんかとは関係がない。

LBAのアドレス表記で言えば、こうなっているそうだ。

  • LBA0 : MBRに相当する情報
  • LBA1 : GPTヘッダ
  • LBA2~33 : パーティションエントリ

GPTで管理していても、GPTに管理していないツールなどのためにMBRを用意してあるのだと。
MBR部分をどう見るかはOSによって異なるらしいので、自分でパーティションテーブルを作るときには注意した方がよさそうだ。

 

名前の由来になっているGUIDがどこに出てくるかというと、パーティションエントリという部分のようだ。
図によると1つのセクタに4エントリ入るようなので、512byte / 4 = 128byte/エントリ、ということになる(HDD系の1セクタサイズって、まだ512byteでよいよね??)。

  • 0- 15 [16]: パーティションの種類を表すGUID
  • 16- 31 [16]: パーティション固有のGUID
  • 32- 39 [ 8]: パーティション開始LBA
  • 40- 47 [ 8]: パーティション最後LBA
  • 48- 55 [ 8]: 属性フラグ
  • 56-127 [72]: パーティション名(UTF-16LE)

後半はわからなかったので、英語版wikipediaの情報を使った。
https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_entries


そこそこに衝撃だったのは、fdiskではGPTを扱えない、ということを知ったことだろうか。
まあ、Raspberry Piくらいだったらfdiskで済んでいるのだけど、PC Linuxが起動しないときに自分で対応しようとして悩まないように・・・というか、よけい破壊しないように覚えておいた方が良かろう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。