完整的 GPT 分区表,逐行解读:
一、整体分区布局
| Part | 分区名 | Start LBA | End LBA | 大小 | 用途 |
|---|---|---|---|---|---|
| 1 | uboot | 0x4000 | 0x5FFF | 4MB | U-Boot 引导程序 |
| 2 | misc | 0x6000 | 0x7FFF | 4MB | 启动模式标志(recovery/normal) |
| 3 | boot | 0x8000 | 0x27FFF | 64MB | 内核Image + DTB |
| 4 | recovery | 0x28000 | 0x47FFF | 64MB | Recovery 系统 |
| 5 | backup | 0x48000 | 0x57FFF | 32MB | 备份分区 |
| 6 | rootfs | 0x58000 | 0xC57FFF | 6GB | 根文件系统 |
| 7 | oem | 0xC58000 | 0xC97FFF | 128MB | OEM 数据 |
| 8 | userdata | 0xC98000 | 0x3A3FFDE | ~14GB | 用户数据 |
LBA 扇区大小 = 512字节,所以大小计算:
(End - Start + 1) × 512
0x0 ~ 0x3FFF 去哪了?
u-boot阶段 => part list mmc 0 Partition Map for MMC device 0 -- Partition Type: EFI Part Start LBA End LBA Name Attributes Type GUID Partition GUID 1 0x00004000 0x00005fff "uboot" attrs: 0x0000000000000000 type: 27380000-0000-400d-8000-145900003307 guid: de370000-0000-4f5c-8000-60b500005d2a 2 0x00006000 0x00007fff "misc" attrs: 0x0000000000000000 type: 9f730000-0000-4c08-8000-1ba40000746d guid: 8e360000-0000-4a12-8000-1d6d000019a4 3 0x00008000 0x00027fff "boot" attrs: 0x0000000000000000 type: 112b0000-0000-4f3e-8000-279300003be4 guid: cd6d0000-0000-4028-8000-73dd00002483 4 0x00028000 0x00047fff "recovery" attrs: 0x0000000000000000 type: a6190000-0000-424e-8000-464f00000d16 guid: c25e0000-0000-4a27-8000-7c2e00002c70 5 0x00048000 0x00057fff "backup" attrs: 0x0000000000000000 type: 860a0000-0000-4d2d-8000-1c00000043a8 guid: 96200000-0000-4f6e-8000-648800003413 6 0x00058000 0x00c57fff "rootfs" attrs: 0x0000000000000000 type: d8600000-0000-4720-8000-5dcc00000a45 guid: 614e0000-0000-4b53-8000-1d28000054a9 7 0x00c58000 0x00c97fff "oem" attrs: 0x0000000000000000 type: c5100000-0000-4945-8000-55de00006393 guid: 795a0000-0000-4d6c-8000-62f500007219 8 0x00c98000 0x03a3ffde "userdata" attrs: 0x0000000000000000 type: 74230000-0000-4a0c-8000-615c0000223a guid: d9640000-0000-4503-8000-3758000052cc => boot
LBA 0x0000 保护性 MBR(1扇区)
LBA 0x0001 GPT 主头(1扇区)
LBA 0x0002 GPT 分区表项(32扇区,128个分区槽)
LBA 0x0022 ~ 0x3FFF 留给 idbloader(Rockchip 特有的 SPL/TPL 阶段)
LBA 0x4000 uboot 分区开始 ← 你的 Part 1
Rockchip 平台 eMMC 的 0x0 ~ 0x3FFF 这段空间存放
idbloader.img(miniloader),这是 GPT 分区表之外的特殊区域,U-Boot 烧录时直接写裸扇区。
完整启动挂载时序
U-Boot
└─ 传 bootargs: root=PARTUUID=614e0000-0000
↓
内核启动
└─ 挂载 rootfs → / (Part6, 6GB)
↓
init 进程(BusyBox init 或 systemd)
└─ 读取 /etc/fstab
├─ 挂载 userdata → /userdata (Part8, 剩余空间)
├─ 挂载 oem → /oem (Part7, 128MB)
└─ 挂载 boot → /boot (Part3, 64MB,可选)
↓
系统完全就绪
/ ← rootfs (系统程序、库、配置)
/userdata ← userdata (用户数据、日志)
/oem ← oem (厂商定制)
五、在板子上验证当前挂载状态
二、你的分区布局设计逻辑
eMMC 物理空间(假设16GB)
┌──────────────────────────────────────┐
│ 0x0000 ~ 0x3FFF idbloader(SPL) │ ← Rockchip 特有,裸写
├──────────────────────────────────────┤
│ Part1: uboot 4MB │ ← U-Boot 本体
│ Part2: misc 4MB │ ← 启动模式标志
│ Part3: boot 64MB │ ← 内核 + DTB
│ Part4: recovery 64MB │ ← 救砖用的备用系统
│ Part5: backup 32MB │ ← 备份
│ Part6: rootfs 6GB │ ← 系统根目录 /
│ Part7: oem 128MB │ ← 厂商定制数据
│ Part8: userdata 剩余全部(~9.7GB) │ ← 用户数据 /data
└──────────────────────────────────────┘
3. 分区号和 GPT 的对应关系
mmcblk0p1 → Part1 uboot (未挂载,U-Boot 直接使用)
mmcblk0p2 → Part2 misc (未挂载,U-Boot 读写)
mmcblk0p3 → Part3 boot (未挂载,内核已加载完无需挂载)
mmcblk0p4 → Part4 recovery (未挂载,进 recovery 模式才用)
mmcblk0p5 → Part5 backup (未挂载)
mmcblk0p6 → Part6 rootfs → 挂载为 /
mmcblk0p7 → Part7 oem → 挂载为 /oem
mmcblk0p8 → Part8 userdata → 挂载为 /userdata
为什么 boot/misc 等分区没有挂载
uboot → U-Boot 在启动阶段直接读取,内核起来后不需要
misc → U-Boot 读写启动标志,Linux 不需要挂载(也可以挂载来读写)
boot → 内核 Image 和 DTB 已经被 U-Boot 加载进内存了,
Linux 启动后这个分区就"用完"了,不需要再挂载
recovery→ 只在进入 recovery 模式时才是根文件系统
backup → 备份用,正常启动不挂载
整个链路现在清晰了:
parameter.txt 定义分区 → 烧录成 GPT → U-Boot 读 GPT 加载内核→ 内核挂载 mmcblk0p6 为 / → init 读 fstab → 挂载 p7/p8
→ 最终:/ + /oem + /userdata 三个分区都可用