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目錄下。

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