这篇文章是2013年写的,Android4.2版本,新的安卓版本可能有所不同。
1 Android IA默认安装以及分区分析
1.1 Android IA的默认安装方式
Android IA系统的source code和部分文档可以在 01.org 上下载。
这个系统目前只支持gpt分区的EFI启动。
1.2 Android IA的安装程序
Android IA的安装程序是iagod。这也是Android source内部使用的安装程序。目前主要用在通过Live USB将系统安装到硬盘上。
1.3 Anrdoid IA系统的默认分区及作用
默认情况下,通过LiveUSB安装出来的系统会划分10个分区:
1.3.1 bootloader 分区
也就是系统的EFI分区,放置EFI启动文件和load config文件。Android默认的efi启动文件是shim.efi. 它可以放在EFI分区的EFI/的任何目录下,根据EFI的默认规则,如果放在EFI/BOOT目录下,系统可以直接BOOT,否则的话,就需要使用efibootmgr命令来安装了。
此外还有gummiboot.efi, MokManager.efi, 目前尚未确定其作用
除了EFI文件,还需要有load config文件。Android IA有两级引导文件,loader.conf文件坐落在EFI分区的loader/目录下, 其内容用来指示默认要启动的entry。
timeout 10 <== 启动菜单显示的timeout时间
default boot <== 指示默认启动的条目,后面的boot是指条目的名称
android-bcb d00fffb1-278d-4cea-adc2-e42e93bd07b0 <== >andoird bcb分区的UUID(misc分区)
第二行指示了要默认启动的entry,这个entry从哪里来呢?
loader/目录下还有个entries的子目录,这里使用多个不同的文件指示了不同的entry。这里我们也来看一个例子:
title Android <== 启动菜单上显示的名称
android 9f8edcd89-dbcb-4f9e-627fecb736f9 <== boot分区的UUID
install_id 5FF06789 <== install_id
这里大致解释一下install_id, iagod在划分分区的时候,除了bootloader/bootloader2/recovery等这些名字外,会为每个分区前加上一个magic字串和一个install_id.
例如,如果我们使用 parted -l 查看Android的分区,会发现每个分区的