大多数Android设备是否将GPT用作其分区方案?


9

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?


据我所知,大多数Android设备都使用GPT。您可以通过轻松检查它fdisk -l /dev/block/mmcblk0。顺便说一句,此线程可能会对您有所帮助:El Grande分区表参考
Gokul NC

@GokulNC我已经看到了那个线程。这是我正在谈论的其中之一。但是,使用MTD子系统的设备似乎不使用分区表,而MTD子系统似乎是相当数量的早期Android智能手机。在这些情况下,如果考虑到SoC的启动ROM,则可能会在内部存储器的第一扇区/块中存储MBR(例如,基于OMAP的设备中的第一阶段启动加载程序以512字节开始) )。
MELAB

分区表必须在第一扇区上吗?也许SoC也可以从最后一个扇区启动,例如反向扇区读取?
jiggunjer'2

同样关于MTD与eMMC的关系:MTD用于原始NAND类型的存储,因此使用的驱动程序与托管NAND(例如eMMC)不同。
jiggunjer'2

Answers:


3

如果我没看错,那么GPT很普遍。它比MBR先进得多。在我的Kitkat上,它们有36个分区。GPT具有备份分区表和命名/标志之类的功能,支持比MBR更大的磁盘。(编辑:Android 6.0引入了采用外部存储介质的功能,该介质使用GPT作为默认分区格式。)

设备可能知道或可能知道GPT。通常,对于MBR,前512个字节用于分区表。当我们使用GPT时,它不会在第一个扇区上存储任何数据。而是将其标记为保护性MBR。因此,如果寻找MBR的设备抱怨没有分区。

如果您对深入的文档感兴趣:


尊敬的Downvoter:原因?
lakshmipathi

第二段包含几个错误。
iBug

您能指出确切的错误吗?
lakshmipathi

看来我错了(一年前)。现在对我来说似乎很合理。
iBug
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.