Android新建系统分区

本文详细介绍了如何在RK3368平台的Android8.1系统中创建一个不会在系统升级或烧录时被擦除的自定义分区。包括修改分区表、配置文件系统、初始化安全属性等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

         平台:RK3368

         系统:android8.1

         上为了保留一些文件在系统升级和烧录后不被擦除,因此新建了个不被擦除的分区,在此记录下方法。

一、修改分区表

分区表文件路径:device\rockchip\rk3368\parameter.txt,其中mypartition是我建立的分区,格式为“大小@地址(分区名)”,                -@0x006F4400(userdata)这个意思是从这个地址开始之后的大小都分给userdata。

FIRMWARE_VER:7.1
MACHINE_MODEL:RK3368
MACHINE_ID:007
MANUFACTURER: RK3368
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 3368
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
CMDLINE: console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.veritymode=enforcing androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x00010000@0x00010000(kernel),0x00010000@0x00020000(boot),0x00020000@0x00030000(recovery),0x00038000@0x00050000(backup),0x00002000@0x00088000(security),0x00100000@0x0008a000(cache),0x00400000@0x0018a000(system),0x00008000@0x0058a000(metadata),0x00100000@0x00592000(vendor),0x00020000@0x00694000(oem),0x00040000@0x006B4000(mypartition),0x00000400@0x006F4000(frp),-@0x006F4400(userdata)

二、文件配置

在device/rockchip/rk3368/fstab.rk30board中填写要添加分区文件系统的静态信息

/dev/block/by-name/mypartition     /mypartition         ext4      noatime,nodiratime,nosuid,nodev,noauto_da_alloc,discard                wait

在device/rockchip/rk3368/recovery.fstab中添加,recovery的时候会用到这个

/dev/block/platform/ff0f0000.dwmmc/by-name/mypartition            /mypartition          ext4             defaults                  defaults

在device/rockchip/common/recovery/etc/init.rc中添加,也是recovery过程中用到的

mkdir /mypartition

在device/rockchip/common/init.rockchip.rc中添加挂载的方式

mkdir /mypartition 0777 system system
mount ext4 mtd@mypartition /mypartition wait noatime nodiratime nosuid nodev noauto_da_alloc

 在device/rockchip/common/sepolicy/file_contexts中添加seAndroid的安全属性

/mypartition(/.*)?      u:object_r:sdcardfs:s0

在device/rockchip/common/init.rk30board.rc中初始化安全属性

restorecon_recursive /mypartition

三、自定义recovery时对mypartition分区的操作

在bootable/recovery/recovery.cpp中添加以下代码,recovery时会去挂载/mypartition目录,若是挂载不上,则格式化这个分区,格式为recovery.fstab里描述的分区信息,什么时候会挂载不上,就是在擦除emmc后分区所在的区域为空,没有文件格式的情况下,因为我在烧录的img里并没放入自己做的mypartition.img,若是想在这分区放入自己做的内容的话,就能挂载上,并且不会执行擦除的代码。

void SuremypartitionMount() {
    if (ensure_path_mounted("/mypartition")) {
        printf("mount mypartition fail,so formate...\n");
        tmplog_offset = 0;
        format_volume("/mypartition");
        ensure_path_mounted("/mypartition");
    }
}

static int is_boot_from_sd(){
......
    SureMetadataMount();
    SuremypartitionMount();
......
}

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值