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();
......
}

 

Android设备上新建分区可以通过以下步骤完成: 1. 确定设备是否具备足够的存储空间:在新建分区之前,需要确保设备有足够的存储空间来容纳新的分区。如果设备已经接近存储空间的上限,建议先清理一些不必要的文件或应用程序。 2. 打开设备设置:在设备的主屏幕上,滑动下拉菜单,然后点击顶部的“设置”图标来打开设备的设置界面。 3. 寻找存储设置:在设置界面中,向下滚动并找到“存储”或“存储设置”选项。这个选项可能位于“设备”、“存储和内存”、“存储空间”或类似的位置。 4. 点击“存储”选项:点击“存储”选项后,屏幕上会显示已用存储空间和可用存储空间等相关信息。 5. 进入分区设置:继续向下滚动,寻找“分区”、“创建分区”或类似的选项。请注意,不是所有的Android设备都支持分区功能,所以如果找不到相关选项,说明设备可能不支持。 6. 选择分区类型:一些设备允许用户选择分区类型,比如可移动存储设备或分区。根据需要进行选择。 7. 分配空间大小:在设置分区时,可以设置每个分区的大小。根据需要进行分配。 8. 点击“创建”或“确定”:在完成分区设置后,点击“创建”或“确定”按钮来确认并保存分区设置。 9. 等待分区完成:设备会开始进行分区操作,这可能需要一些时间来完成。在此过程中,请勿关闭设备或中断操作。 10. 完成分区:一旦分区操作完成,屏幕上会显示相关提示。现在,您已经成功在Android设备上新建了一个分区。 请注意,上述步骤可能会因不同的Android设备型号和操作系统版本而有所不同。可能需要参考设备的用户手册或在生产商的支持网站上获取更详细和准确的分区指南。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值