分區(qū)分區(qū),顧名思義就是劃分區(qū)域,例如我們?cè)旆孔拥臅r(shí)候,首先在設(shè)計(jì)圖紙上劃分哪里是廚房、哪里是客廳、哪里是臥室等等,劃分好區(qū)域好,這個(gè)區(qū)域如何裝修、存放什么物品完全由你或者你的家人決定!同理,GPT分區(qū)意思是這個(gè)分區(qū)按照GPT標(biāo)準(zhǔn)劃分,劃分好區(qū)域后,某一個(gè)分區(qū)存放什么東西完全由你決定,例如內(nèi)核、文件系統(tǒng)、用戶數(shù)據(jù)等等!
注意點(diǎn):
LBA
,英文全稱Logical Block Address
,邏輯區(qū)塊地址。LBA
是非常單純的一種定址模式﹔從0
開(kāi)始編號(hào)來(lái)定位區(qū)塊,例如第一區(qū)塊LBA=0
,第二區(qū)塊LBA=1
,依此類推。在現(xiàn)代計(jì)算機(jī)中,一個(gè)LBA通常是512
字節(jié),也就是一個(gè)塊大小,這說(shuō)明LBA=0
的起始地址為0
,結(jié)束地址為0x1ff
!
保護(hù)MBR
包含一個(gè)DOS分區(qū)表(LBA0)
,只包含一個(gè)類型值為0xEE
的分區(qū)項(xiàng),在小于2TB
的磁盤上,大小為整個(gè)磁盤;在更大的磁盤上,它的大小固定為2TB
。它的作用是阻止不能識(shí)別GPT分區(qū)的磁盤工具試圖對(duì)其進(jìn)行分區(qū)或格式化等操作,所以該扇區(qū)被稱為“保護(hù)MBR”
。實(shí)際上,EFI根本不使用這個(gè)分區(qū)表
。
EFI部分
又可以分為4
個(gè)區(qū)域:GPT頭部、分區(qū)表項(xiàng)、分區(qū)區(qū)域、備份區(qū)域
。
起始于磁盤的LBA1
,通常也只占用這個(gè)單一扇區(qū)。其作用是定義分區(qū)表的位置和大小
。GPT頭還包含頭和分區(qū)表的校驗(yàn)和
,這樣就可以及時(shí)發(fā)現(xiàn)錯(cuò)誤。
這個(gè)區(qū)域由GPT頭
定義,一般占用磁盤LBA2~LBA33扇區(qū)
。分區(qū)表中的每個(gè)分區(qū)項(xiàng)由起始地址、結(jié)束地址、類型值、名字、屬性標(biāo)志、GUID值
組成。分區(qū)表建立后,128位的GUID
對(duì)系統(tǒng)來(lái)說(shuō)是唯一的。
最大的區(qū)域,由分配給分區(qū)的扇區(qū)組成。這個(gè)區(qū)域的起始和結(jié)束地址由分區(qū)表項(xiàng)
定義。例如Partition 1
由Entry 1
定義。
分區(qū)區(qū)域就是存放你想要存放的東西,例如內(nèi)核、文件系統(tǒng)、用戶數(shù)據(jù)等等。
備份區(qū)域位于磁盤的尾部,包含GPT頭部和分區(qū)表項(xiàng)的備份
。它占用GPT結(jié)束扇區(qū)和EFI結(jié)束扇區(qū)之間的33個(gè)扇區(qū)
。其中最后一個(gè)扇區(qū)
用來(lái)備份1號(hào)扇區(qū)的GPT頭部
,其余的32個(gè)扇區(qū)
用來(lái)備份LBA2~LBA33扇區(qū)的分區(qū)表項(xiàng)
。
GPT頭部
位于磁盤的1號(hào)扇區(qū)(LBA1)
,其具體結(jié)構(gòu)如下表所示:
相對(duì)字節(jié)偏移量(十六進(jìn)制) | 字節(jié)數(shù) | 說(shuō)明[整數(shù)皆以little endian 方式表示] |
---|---|---|
00~07 | 8 | GPT頭簽名“45 46 49 20 50 41 52 54” (ASCII碼 為“EFI PART” ) |
08~0B | 4 | 版本號(hào),目前是1.0版 ,其值是“00 00 01 00” |
0C~0F | 4 | GPT頭 的大小(字節(jié)數(shù)),通常為“5C 00 00 00”(0x5C) ,也就是92字節(jié) 。 |
10~13 | 4 | GPT頭CRC校驗(yàn)和 (計(jì)算時(shí)把這個(gè)字段本身看做零值) |
14~17 | 4 | 保留,必須為“00 00 00 00” |
18~1F | 8 | EFI信息區(qū)(GPT頭)的起始扇區(qū)號(hào) ,通常為“01 00 00 00 00 00 00 00” ,也就是LBA1 。 |
20~27 | 8 | EFI信息區(qū)(GPT頭)備份位置的扇區(qū)號(hào) ,也就是EFI區(qū)域結(jié)束扇區(qū)號(hào) 。通常是整個(gè)磁盤最末一個(gè)扇區(qū)。 |
28~2F | 8 | GPT分區(qū)區(qū)域的起始扇區(qū)號(hào) ,通常為“22 00 00 00 00 00 00 00”(0x22) ,也即是LBA34 。 |
30~37 | 8 | GPT分區(qū)區(qū)域的結(jié)束扇區(qū)號(hào) ,通常是倒數(shù)第34 扇區(qū)。 |
38~47 | 16 | 磁盤GUID (全球唯一標(biāo)識(shí)符,與UUID 是同義詞) |
48~4F | 8 | 分區(qū)表起始扇區(qū)號(hào) ,通常為“02 00 00 00 00 00 00 00”(0x02) ,也就是LBA2 。 |
50~53 | 4 | 分區(qū)表總項(xiàng)數(shù) ,通常限定為“80 00 00 00”(0x80) ,也就是128 個(gè)。 |
54~57 | 4 | 每個(gè)分區(qū)表項(xiàng)占用字節(jié)數(shù) ,通常限定為“80 00 00 00”(0x80) ,也就是128 字節(jié)。 |
58~5B | 4 | 分區(qū)表CRC校驗(yàn)和 |
5C~* | * | 保留,通常是全零填充 |
摘自u-boot/include/part_efi.h
的結(jié)構(gòu)體:
分區(qū)表項(xiàng)結(jié)構(gòu)如下:
相對(duì)字節(jié)偏移量(十六進(jìn)制) | 字節(jié)數(shù) | 說(shuō)明[整數(shù)皆以little endian 方式表示] |
---|---|---|
00~0F | 16 | 用GUID 表示的分區(qū)類型 |
10~1F | 16 | 用GUID 表示的分區(qū)唯一標(biāo)示符 |
20~27 | 8 | 該分區(qū)的起始扇區(qū),用LBA值 表示。 |
28~2F | 8 | 該分區(qū)的結(jié)束扇區(qū)(包含),用LBA值 表示,通常是奇數(shù) 。 |
30~37 | 8 | 該分區(qū)的屬性標(biāo)志 |
38~7F | 72 | UTF-16LE 編碼的人類可讀的分區(qū)名稱,最大32 個(gè)字符。 |
注意,扇區(qū)尺寸不能假定為512
字節(jié),也就是說(shuō),一個(gè)扇區(qū)內(nèi)可能存放4
個(gè)以上的分區(qū)項(xiàng),也可能只存放1
個(gè)分區(qū)項(xiàng)的一部分。也就是說(shuō),除了頭兩個(gè)扇區(qū)(LBA 0 和 LBA 1)
之外,GPT規(guī)范僅定義了數(shù)據(jù)結(jié)構(gòu)的尺寸,而不關(guān)心使用多少個(gè)扇區(qū)進(jìn)行存儲(chǔ)。
摘自u-boot/include/part_efi.h
的_gpt_entry
結(jié)構(gòu)體:
分區(qū)類型如下:
相關(guān)操作系統(tǒng) | GUID[little endian] | 含義 |
---|---|---|
None | 00000000-0000-0000-0000-000000000000 | 未使用 |
None | 024DEE41-33E7-11D3-9D69-0008C781F39F | MBR分區(qū)表 |
None | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | EFI系統(tǒng)分區(qū)[EFI System partition (ESP)] ,必須是VFAT格式 |
None | BC13C2FF-59E6-4262-A352-B275FD6F7172 | 擴(kuò)展boot分區(qū) ,必須是VFAT格 式 |
None | 21686148-6449-6E6F-744E-656564454649 | BIOS引導(dǎo)分區(qū) ,其對(duì)應(yīng)的ASCII字符串 是"Hah!IdontNeedEFI" 。 |
None | D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 | Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology) |
Windows | E3C9E316-0B5C-4DB8-817D-F92DF00215AE | 微軟保留分區(qū) |
Windows | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 | 基本數(shù)據(jù)分區(qū) |
Windows | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC | Windows恢復(fù)環(huán)境 |
Linux | 0FC63DAF-8483-4772-8E79-3D69D8477DE4 | 數(shù)據(jù)分區(qū) 。Linux 曾經(jīng)使用和Windows 基本數(shù)據(jù)分區(qū)相同的GUID 。這個(gè)新的GUID 是由GPT fdisk 和 GNU Parted 開(kāi)發(fā)者根據(jù)Linux 傳統(tǒng)的"8300" 分區(qū)代碼發(fā)明的。 |
Linux | 44479540-F297-41B2-9AF7-D131D5F0458A | x86根分區(qū) (/) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 | x86-64根分區(qū) (/) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3 | ARM32根分區(qū) (/) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | B921B045-1DF0-41C3-AF44-4C6F280D3FAE | AArch64根分區(qū) (/) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | 3B8F8425-20E0-4F3B-907F-1A25A76F98E8 | 服務(wù)器數(shù)據(jù)分區(qū)(/srv) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 | HOME分區(qū) (/home) 。這是systemd 的發(fā)明,可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | 交換分區(qū)(swap) 。不是systemd 的發(fā)明,但同樣可用于無(wú)fstab 時(shí)的自動(dòng)掛載 |
Linux | A19D880F-05FC-4D3B-A006-743F0F84911E | RAID分區(qū) |
Linux | E6D6D379-F507-44C2-A23C-238F2A3DF928 | 邏輯卷管理器(LVM)分區(qū) |
Linux | 8DA63339-0007-60C0-C436-083AC8230908 | 保留 |
摘自u-boot/include/part_efi.h
的_gpt_entry
結(jié)構(gòu)體:
u-boot/include/efi.h
的efi_guid_t
結(jié)構(gòu)體:Microsoft
還進(jìn)一步對(duì)分區(qū)的屬性進(jìn)行了細(xì)分:低位4字節(jié)
表示與分區(qū)類型無(wú)關(guān)的屬性
,高位4字節(jié)
表示與分區(qū)類型有關(guān)的屬性
。Microsoft
目前使用了下列屬性:
分區(qū)屬性如下:
Bit | 解釋 |
---|---|
0 | 系統(tǒng)分區(qū) (磁盤分區(qū)工具必須將此分區(qū)保持原樣,不得做任何修改) |
1 | EFI隱藏分區(qū)(EFI不可見(jiàn)分區(qū)) |
2 | 傳統(tǒng)的BIOS的可引導(dǎo)分區(qū)標(biāo)志 |
60 | 只讀 |
62 | 隱藏 |
63 | 不自動(dòng)掛載,也就是不自動(dòng)分配盤符 |
摘自u-boot/include/part_efi.h
的_gpt_entry
結(jié)構(gòu)體:
u-boot/include/part_efi.h
的gpt_entry_attributes
聯(lián)合體:聯(lián)系客服