Linux固件开发 几分钟看透GPT分区_嵌入式gpt分区教程

3.3 分区区域
最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由分区表项定义。例如Partition 1由Entry 1定义。
分区区域就是存放你想要存放的东西,例如内核、文件系统、用户数据等等。

3.4 备份区
备份区域位于磁盘的尾部,包含GPT头部和分区表项的备份。它占用GPT结束扇区和EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的GPT头部,其余的32个扇区用来备份LBA2~LBA33扇区的分区表项。
四、数据结构
4.1 GPT头部数据结构
GPT头部位于磁盘的1号扇区(LBA1),其具体结构如下表所示:
| 相对字节偏移量(十六进制) | 字节数 | 说明[整数皆以little endian方式表示] |
|---|---|---|
00~07 |
8 |
GPT头签名“45 46 49 20 50 41 52 54”(ASCII码为“EFI PART”) |
08~0B |
4 |
版本号,目前是1.0版,其值是“00 00 01 00” |
0C~0F |
4 |
GPT头的大小(字节数),通常为“5C 00 00 00”(0x5C),也就是92字节。 |
10~13 |
4 |
GPT头CRC校验和(计算时把这个字段本身看做零值) |
14~17 |
4 |
保留,必须为“00 00 00 00” |
18~1F |
8 |
EFI信息区(GPT头)的起始扇区号,通常为“01 00 00 00 00 00 00 00”,也就是LBA1。 |
20~27 |
8 |
EFI信息区(GPT头)备份位置的扇区号,也就是EFI区域结束扇区号。通常是整个磁盘最末一个扇区。 |
28~2F |
8 |
GPT分区区域的起始扇区号,通常为“22 00 00 00 00 00 00 00”(0x22),也即是LBA34。 |
30~37 |
8 |
GPT分区区域的结束扇区号,通常是倒数第34扇区。 |
38~47 |
16 |
磁盘GUID(全球唯一标识符,与UUID是同义词) |
48~4F |
8 |
分区表起始扇区号,通常为“02 00 00 00 00 00 00 00”(0x02),也就是LBA2。 |
50~53 |
4 |
分区表总项数,通常限定为“80 00 00 00”(0x80),也就是128个。 |
54~57 |
4 |
每个分区表项占用字节数,通常限定为“80 00 00 00”(0x80),也就是128字节。 |
58~5B |
4 |
分区表CRC校验和 |
5C~* |
* |
保留,通常是全零填充 |
摘自u-boot/include/part_efi.h的结构体:
4.1 分区表项数据结构
分区表项结构如下:
| 相对字节偏移量(十六进制) | 字节数 | 说明[整数皆以little endian方式表示] |
|---|---|---|
00~0F |
16 |
用GUID表示的分区类型 |
10~1F |
16 |
用GUID表示的分区唯一标示符 |
20~27 |
8 |
该分区的起始扇区,用LBA值表示。 |
28~2F |
8 |
该分区的结束扇区(包含),用LBA值表示,通常是奇数。 |
30~37 |
8 |
该分区的属性标志 |
38~7F |
72 |
UTF-16LE编码的人类可读的分区名称,最大32个字符。 |
注意,扇区尺寸不能假定为512字节,也就是说,一个扇区内可能存放4个以上的分区项,也可能只存放1个分区项的一部分。也就是说,除了头两个扇区(LBA 0 和 LBA 1)之外,GPT规范仅定义了数据结构的尺寸,而不关心使用多少个扇区进行存储。
摘自u-boot/include/part_efi.h的_gpt_entry结构体:
分区类型如下:
| 相关操作系统 | GUID[little endian] |
含义 |
|---|---|---|
None |
00000000-0000-0000-0000-000000000000 |
未使用 |
None |
024DEE41-33E7-11D3-9D69-0008C781F39F |
MBR分区表 |
None |
C12A7328-F81F-11D2-BA4B-00A0C93EC93B |
EFI系统分区[EFI System partition (ESP)],必须是VFAT格式 |
None |
BC13C2FF-59E6-4262-A352-B275FD6F7172 |
扩展boot分区,必须是VFAT格式 |
None |
21686148-6449-6E6F-744E-656564454649 |
BIOS引导分区,其对应的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 |
微软保留分区 |
Windows |
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
基本数据分区 |
Windows |
DE94BBA4-06D1-4D40-A16A-BFD50179D6AC |
Windows恢复环境 |
Linux |
0FC63DAF-8483-4772-8E79-3D69D8477DE4 |
数据分区。Linux曾经使用和Windows基本数据分区相同的GUID。这个新的GUID是由GPT fdisk和 GNU Parted开发者根据Linux传统的"8300"分区代码发明的。 |
Linux |
44479540-F297-41B2-9AF7-D131D5F0458A |
x86根分区 (/)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 |
x86-64根分区 (/)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
69DAD710-2CE4-4E3C-B16C-21A1D49ABED3 |
ARM32根分区 (/)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
B921B045-1DF0-41C3-AF44-4C6F280D3FAE |
AArch64根分区 (/)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
3B8F8425-20E0-4F3B-907F-1A25A76F98E8 |
服务器数据分区(/srv)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
933AC7E1-2EB4-4F13-B844-0E14E2AEF915 |
HOME分区 (/home)。这是systemd的发明,可用于无fstab时的自动挂载 |
Linux |
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F |
交换分区(swap)。不是systemd的发明,但同样可用于无fstab时的自动挂载 |
Linux |
A19D880F-05FC-4D3B-A006-743F0F84911E |
RAID分区 |
Linux |
E6D6D379-F507-44C2-A23C-238F2A3DF928 |
逻辑卷管理器(LVM)分区 |
Linux |
8DA63339-0007-60C0-C436-083AC8230908 |
保留 |
摘自u-boot/include/part_efi.h的_gpt_entry结构体:
摘自u-boot/include/efi.h的efi_guid_t结构体:
Microsoft还进一步对分区的属性进行了细分:低位4字节表示与分区类型无关的属性,高位4字节表示与分区类型有关的属性。Microsoft目前使用了下列属性:
分区属性如下:
Bit |
解释 |
|---|---|
0 |
系统分区(磁盘分区工具必须将此分区保持原样,不得做任何修改) |
1 |
EFI隐藏分区(EFI不可见分区) |
2 |
传统的BIOS的可引导分区标志 |
60 |
只读 |
62 |
隐藏 |
63 |
不自动挂载,也就是不自动分配盘符 |
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!


由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)
最后
资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!
ages/73bb5de17851459088c6af944156ee24.jpg" alt=“img” style=“zoom: 67%;” />
最后
资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)