Android EMMC中添加分区并开机自动挂载方法


环境:
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目录下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章