文章目录
一、修改分区表
二、添加挂载目录
三、修改SELinux,添加权限
四、修改fstab,添加挂载
环境:
CPU: i.MX8qxp
OS: Android 9.0
RAM: 4GB
eMMC: 32GB
一、修改分区表
分区表文件为:device/fsl/common/partition/device-partitions-28GB-ab-dual-bootloader.bpt。
我们需要添加一个10GB的分区,假如命名为misc,在分区表中添加如下代码:
{
"label": "misc",
"size": "1024 MiB",
"guid": "auto",
},
然后编译源码,编译完毕之后,在out目录下找到文件partition-table-13GB.bpt,查看文件中misc分区的type_guid字段,将此字段添加到分区表device-partitions-28GB-ab-dual-bootloader.bpt中,修改后添加的分区信息如下:
{
"label": "misc",
"size": "4 MiB",
"guid": "auto",
"type_guid": "6b2378b0-0fbc-4aa9-a4f6-4d6e17281c47"
},
二、添加挂载目录
想要编译出来的文件系统内包含挂载目录,需要修改文件system/core/rootdir/Android.mk,加入我们需要在根文件系统中添加一个misc目录,则在此文件中添加如下内容(下面代码中的misc):
LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_ROOT_OUT)/, \
sbin dev proc sys system data device map odm oem acct config storage mnt misc $(BOARD_ROOT_EXTRA_FOLDERS)); \
三、修改SELinux,添加权限
如上一节内容,在根文件系统中添加misc目录之后,我们编译会报错。那是因为我们没有在SELinux中添加这个目录的权限。我们需要修改文件system/sepolicy/private/file_contexts,添加如下内容:
/misc u:object_r:rootfs:s0
然后修改文件:system/sepolicy/prebuilts/api/28.0/private/file_contexts,添加如下内容:
/misc u:object_r:rootfs:s0
四、修改fstab,添加挂载
只差最后一步了,我们修改文件device/fsl/imx8q/mek_8q/fstab.freescale.car,在最后添加如下内容:
/dev/block/by-name/device /device ext4 nosuid,nodev,nodiratime,noatime,nomblk_io_submit,noauto_da_alloc wait,check,formattable,quota,fileencryption=software
大功告成,再次编译并烧录,10GB的misc分区编成功挂载到/misc目录下。