Closed 7Ji closed 1 year ago
刚发现子设备数起始搞错成0了,bootloader分区在p0不会加载出来,需要修一下
现在OK了 lsblk:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 128G 0 loop
├─loop0p1 259:20 0 4M 0 part
├─loop0p2 259:21 0 64M 0 part
├─loop0p3 259:22 0 1.1G 0 part
├─loop0p4 259:23 0 8M 0 part
├─loop0p5 259:24 0 8M 0 part
├─loop0p6 259:25 0 24M 0 part
├─loop0p7 259:26 0 8M 0 part
├─loop0p8 259:27 0 8M 0 part
├─loop0p9 259:28 0 8M 0 part
├─loop0p10 259:29 0 16M 0 part
├─loop0p11 259:30 0 16M 0 part
├─loop0p12 259:31 0 16M 0 part
├─loop0p13 259:32 0 16M 0 part
├─loop0p14 259:33 0 2M 0 part
├─loop0p15 259:34 0 32M 0 part
├─loop0p16 259:35 0 320M 0 part
├─loop0p17 259:36 0 128M 0 part
├─loop0p18 259:37 0 1.8G 0 part
├─loop0p19 259:38 0 128M 0 part
└─loop0p20 259:39 0 112.6G 0 part
ampart:
# ampart /dev/loop0p2 --mode esnapshot 2> /dev/null | tail -n 1
bootloader:0B:4M:0 reserved:36M:64M:0 cache:108M:1120M:2 env:1236M:8M:0 logo:1252M:8M:1 recovery:1268M:24M:1 misc:1300M:8M:1 dtbo:1316M:8M:1 cri_data:1332M:8M:2 param:1348M:16M:2 boot:1372M:16M:1 rsv:1396M:16M:1 metadata:1420M:16M:1 vbmeta:1444M:2M:1 tee:1454M:32M:1 vendor:1494M:320M:1 odm:1822M:128M:1 system:1958M:1856M:1 product:3822M:128M:1 data:3958M:115318M:4
dmesg:
[ 66.012887] loop0: detected capacity change from 0 to 268435456
[ 66.017127] apt_blkdevs is not set, all blocks should be parsed
[ 66.022780] loop0: p1(bootloader) p2(reserved) p3(cache) p4(env) p5(logo) p6(recovery) p7(misc) p8(dtbo) p9(cri_data) p10(param) p11(boot) p12(rsv) p13(metadata) p14(vbmeta) p15(tee) p16(vendor) p17(odm) p18(system) p19(product) p20(data)
This adds experimental support for Amlogic's proprietary eMMC partition table to the kernel, based on my reverse engineering results previously only available in ampart
The support is added in the kernel's block subsystem, not in the MMC driver, so it can now identify such partition layout on any block device, e.g.:
mmc2, our old friend eMMC, of course it'll be supported
dmesg output
lsblk output
dmesg output
lsblk output
It will also send udev events with correct block names so the following udev rule could be used to create symlinks under
/dev/block
with correponding name for easy access:Symlinks under
/dev/block
with the above udev rules:Priority
Such partitions will be parsed after all other existing partition types including MBR and GPT. So it will only be recognized if there is no MBR or GPT. This is also the way Amlogic handles it.
Userspace
My project ampart provides a tool that can modify such partition table in userspace
Build
The support could be built with the following config:
Configuration
The following kernel options are available to set its behaviour:
apt_checksum
apt_checksum=0
apt_blkdevs
,
) seperated list of block device names (e.g.mmcblk2
,loop0
, etc)apt_blkdevs=mmcblk2,loop0