< GPT Partition Table 분석 >
2012-04-27 전용규
1. 기본사항
- GPT 는 GUID Partition Table 의 약자.
- Hard disk 상에 존재하는 partition 에 대한 정보를 제공하는 table.
- MBR Partition table 의 한계점을 해결하기 위해 만들어짐
- Intel 이 PC BIOS 를 위해 제안한 EFI (Extensible Firmware Interface)에 포함
- GPT 는 최고 9.4 zetta bytes 의 partition 을 지원
2. 구조
1) Legacy MBR (LBA 0) : Protective MBR : 1 sector
기존 MBR partition 용 disk utility 가 GPT Partition drive 를 인식하지
못하기 때문에 삭제할 위험성이 있다. 이를 방지하기 위해
GPT partition drive 의 제일 앞에는 MBR 방식으로 표현된 partition
table 이 위치한다.
이 MBR 에는 0xEE type 의 partition 1개 정보가 표기되는데,
이 partition 은 GPT drive 전 영역을 포함하게 된다.
만약 GPT drive 가 2 TBytes 이상의 크기를 가질 경우 2 TBytes 로 표기한다.
이 MBR 에는 bootloader 의 첫번째 stage code 도 담겨진다.
2) Partition table header (LBA 1) : Primary GPT : 33 sectors
Disk 에 있는 usable blocks 정의
Partition table 을 구성하는 partition entry 의 개수와 크기 정의
EFI spec 에서는 최소 16KBytes 를 partition table 공간으로 요구.
128 byte 짜리 partition entry 가 128 개 위치 가능.
이 Header 에는 Disk GUID (Globally Unique Identifier) 가 포함된다.
또한 자신의 size 와 location (항상 LBA 1) 그리고
두번째 GPT header 와 table 의 location 과 size 가 표시된다.
그리고, header 와 partition table 에 대한 CRC32 checksum 을 포함하고 있어
부팅시 bootloader 와 OS 에 의해 무결성을 검사받게 된다.
만약 첫번째 GPT header 와 partition table 의 checksum 이 이 값과 다르면
disk 복구 software 에 의해 두번째 GPT header 와 table 값이 첫번째 위치로
복사된다.
첫번째, 두번째 GPT header 의 checksum 이 모두 일치하지 않으면
이 disk 는 사용될 수 없는 상태가 된다.
[Format]
--------------------------------------------------------------------------
Offset Length Contents
--------------------------------------------------------------------------
+0 8 bytes Signature ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h)
~~
+24 8 bytes Current LBA (location of this header copy)
+32 8 bytes Backup LBA (location of the other header copy)
+40 8 bytes First usable LBA for partitions (primary partition table last LBA + 1)
+48 8 bytes Last usable LBA (secondary partition table first LBA - 1)
~~
+80 4 bytes Number of partition entries in array
+84 4 bytes Size of a single partition entry (usually 128)
+88 4 bytes CRC32 of partition array
+92 420 All zero
--------------------------------------------------------------------------
3) Partition entries (LBA 2 ~ ) : Primary partitions : 32 sectors
[Format]
--------------------------------------------------------------------------
Offset Length Contents
--------------------------------------------------------------------------
0 16 bytes Partition type GUID
+16 16 bytes Unique partition GUID
+32 8 bytes First LBA (little endian)
+40 8 bytes Last LBA (inclusive, usually odd)
+48 8 bytes Attribute flags (e.g. bit 60 denotes read-only)
+56 72 bytes Partition name (36 UTF-16LE code units)
--------------------------------------------------------------------------
128 bytes Total
--------------------------------------------------------------------------
4) Secondary partition entries (LBA -33 ~ -2) : Secondary partitions : 32 sectors
Primary partitions 정보와 동일
5) Secondary GPT (LBA -1) : 1 sector
기본적으로 Primary GPT 와 동일한 내용을 담고 있으나,
Primary GPT 의 위치를 가르키도록 내용이 변경됨.
댓글 없음:
댓글 쓰기