参考 https://www.cnblogs.com/xiaolei-kaiyuan/p/5501104.html
我们知道android有很多分区,如"system","userdata","cache",他们是何时挂载的?如何挂载的?这个系列的文章进行分析。
这里介绍第一部分,android手机正常开机各分区的挂载。这里我们以mtk平台进行分析,高通与mtk差别不是很大。
我们知道kernel起来以后执行的第一个文件是init进程,init进程会根据init.rc的规则启动进程或者服务。init.rc通过"import /init.${ro.hardware}.rc"语句导入平台的规则。
device/mediatek/mt6735/init.mt6735.rc
on fs
write /proc/bootprof "INIT:Mount_START"
mount_all /fstab.mt6735
exec /system/bin/tune2fs -O has_journal -u 10010 -r 4096 /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/userdata
write /proc/bootprof "INIT:Mount_END"
mount_all是一条命令,/fstab.mt6735 是传入的参数
fstab.mt6735生成在out目录下
./out/target/product/xxx/obj/FAKE/fstab.mt6735
./out/target/product/xxx/obj/FAKE/fstab.mt6735_intermediates/fstab.mt6735
./out/target/product/xxx/root/fstab.mt6735
./out/target/product/xxx/recovery/root/fstab.mt6735
生成这个文件的源文件位于./vendor/mediatek/proprietary/hardware/fstab/mt6735/
system/core/init/keywords.h
.....
KEYWORD(mount_all, COMMAND, 1, do_mount_all)
.......
.....