Google可以找到很多有关Android分区的信息。有时,我可以在移动处理器或XDA开发人员的文档中找到对GPT的引用(据我了解,某些设备确实将GPT用作其方案)。除此之外,关于Android设备用于存储分区信息的讨论不多。有例外:我知道某些设备使用MTD子系统的基于命令行的方法,例如HTC的某些早期设备,并且我知道Qualcomm设备似乎使用GUID分区表。
如果设备的分区由以mtd
或开头的设备节点表示mtdblock
,则Linux从引导参数接收分区信息。如果分区由以开头的设备节点表示mmcblk
,则分区方案不明确。它可能使用的是GUID分区表,但是问题在于该表必须从第一个扇区开始,而根据我的经验,这也是所有第一阶段引导加载程序所在的位置。
就像mtd
可以在开始使用分区节点/proc/mtd
的设备上找到分区信息一样,在开始使用设备节点的设备上也可以找到mmcblk
相同的信息(通常)/proc/emmc
。我不知道为什么将eMMC这种存储设备视为MTD的替代方案,而MTD是访问闪存的接口。但是GitHub上的此页面似乎暗示设备的分区信息/proc/emmc
未收集到GPT之类的表。
在同一页面上似乎还表明,由U-Boot引导的内核以不同于MTD或GPT的方式公开分区。这是段落:
Since MTK devices use the uboot mechanism, partitions including boot and recovery, are not revealed as separate partitions, but rather accessed sequencially by size and start parameters.
关于顺序访问,该句子对我来说毫无意义。也许有人可以更好地解释它。
那么GPT在Android设备上有多普遍?我在Android开发人员网站上没有看到任何有关分区的参考。如果引导加载程序实际上存储在分区表之后,那么这是否意味着芯片可以识别GPT?
fdisk -l /dev/block/mmcblk0
。顺便说一句,此线程可能会对您有所帮助:El Grande分区表参考