news 2026/7/11 2:17:39

RK Android 10/11/12 新增分区实战:从 parameter 到 fstab 的 4 步完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK Android 10/11/12 新增分区实战:从 parameter 到 fstab 的 4 步完整流程

RK Android 10/11/12 新增分区实战:从 parameter 到 fstab 的完整流程

在嵌入式系统开发中,Rockchip(RK)平台的Android系统定制是一个常见需求。当我们需要为设备添加新的存储分区时,需要修改多个系统级别的配置文件。本文将详细介绍在RK Android 10/11/12系统中新增一个物理分区的完整流程,涵盖从分区表定义到文件系统挂载的全过程。

1. 理解RK Android分区体系

RK平台Android系统采用独特的分区管理机制,主要涉及以下几个关键文件:

  • parameter.txt:定义闪存设备的分区布局
  • BoardConfig.mk:配置分区大小和编译参数
  • fstab:定义文件系统挂载点
  • SELinux策略:控制分区访问权限

在开始修改前,建议先备份以下关键目录:

cp -r device/rockchip/ common/ device/rockchip/common.bak

2. 修改parameter分区表

parameter文件是RK平台特有的分区定义文件,位于device/rockchip/common/scripts/parameter目录。添加新分区的步骤如下:

  1. 定位到目标设备的parameter文件,例如rk3566_r的parameter:
cd device/rockchip/rk356x/rk3566_r/
  1. 修改parameter文件,添加新分区定义。例如添加一个16MB的test分区:
mtdparts=rk29xxnand: 0x00002000@0x00002000(uboot), 0x00002000@0x00004000(misc), ... 0x00100000@0x00414000(test:16M), -@0x00514000(user)
  1. 关键参数说明:
    • 0x00100000:分区大小(16MB)
    • 0x00414000:分区起始偏移
    • test:16M:分区名及大小声明

3. 配置BoardConfig.mk

在设备的BoardConfig.mk中添加新分区的编译定义:

# 添加特殊分区定义 BOARD_WITH_SPECIAL_PARTITIONS := test:16M # 多个分区用逗号分隔 # BOARD_WITH_SPECIAL_PARTITIONS := test:16M,log:8M

同时需要修改RebuildParameter.mk文件,确保分区信息能被正确重建:

# device/rockchip/common/build/rockchip/RebuildParameter.mk ifneq ($(strip $(BOARD_WITH_SPECIAL_PARTITIONS)),) partition_list := $(partition_list),$(BOARD_WITH_SPECIAL_PARTITIONS) endif

4. 创建文件系统镜像

新分区需要预先格式化为特定文件系统。以下是创建ext4文件系统镜像的步骤:

# 创建16MB的空文件 dd if=/dev/zero of=test.img bs=1M count=16 # 格式化为ext4 mkfs.ext4 test.img # 在开发机上挂载并设置权限 mkdir -p /mnt/test sudo mount -o loop test.img /mnt/test sudo chown -R root:root /mnt/test sudo umount /mnt/test

将生成的test.img放入设备镜像打包目录:

mv test.img out/target/product/rk3566_r/

5. 修改fstab挂载配置

RK平台的fstab通常由模板生成,位置在:

device/rockchip/common/scripts/fstab_tools/fstab.in

添加新分区的挂载点配置:

/dev/block/by-name/test /test_dir ext4 noatime,nodiratime,nosuid,nodev,noauto_da_alloc,discard wait,check

参数说明:

  • /dev/block/by-name/test:分区设备节点
  • /test_dir:挂载目标目录
  • ext4:文件系统类型
  • noatime,nodiratime:性能优化选项
  • wait,check:启动时检查顺序

6. 创建挂载目录

在rootfs中创建挂载点目录,修改system/core/rootdir/Android.mk

LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/test_dir

7. 配置SELinux策略

为新分区添加文件上下文定义,修改device/rockchip/common/sepolicy/private/file_contexts

/test_dir(/.*)? u:object_r:cache_file:s0

如果需要自定义类型,需在sepolicy中定义新类型:

# file.te type test_file, file_type; # file_contexts /test_dir(/.*)? u:object_r:test_file:s0

8. 验证与调试

完成修改后,按以下步骤验证:

  1. 重新编译系统:
make -j8
  1. 烧写新固件后,检查分区是否创建:
adb shell ls -l /dev/block/by-name/
  1. 验证挂载是否成功:
adb shell mount | grep test_dir
  1. 检查文件权限:
adb shell ls -lZ / | grep test_dir

9. 常见问题解决

问题1:分区未正确创建

  • 检查parameter文件格式是否正确
  • 确认BoardConfig.mk中的分区大小与parameter一致
  • 查看编译日志中是否包含新分区

问题2:挂载失败

  • 检查fstab语法是否正确
  • 确认文件系统类型与镜像格式匹配
  • 查看内核日志获取错误详情:
adb shell dmesg | grep test

问题3:权限不足

  • 确认SELinux策略已正确定义
  • 检查挂载点的目录权限
  • 临时禁用SELinux调试:
adb shell setenforce 0

10. 高级技巧

  1. 动态分区支持: 在Android 10+上可考虑使用动态分区:

    BOARD_DYNAMIC_PARTITIONS_ENABLE := true BOARD_SUPER_PARTITION_GROUPS := rockchip_dynamic_partitions
  2. 分区大小自动计算: 在BoardConfig.mk中使用变量定义大小:

    TEST_PARTITION_SIZE := 16777216 BOARD_WITH_SPECIAL_PARTITIONS := test:$(TEST_PARTITION_SIZE)
  3. 多设备兼容: 使用条件判断支持不同设备:

    ifeq ($(TARGET_PRODUCT),rk3566_r) BOARD_WITH_SPECIAL_PARTITIONS := test:16M endif

通过以上步骤,我们完成了在RK Android系统中新增物理分区的全流程。实际项目中,建议先在模拟环境测试,再应用到实际设备。不同RK芯片型号可能有细微差异,需参考具体平台的开发文档进行调整。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 2:15:03

Python 实现图片隐写术(LSB + 四节点并行)

Python 实现图片隐写术(LSB + 四节点并行) 本文配套实验:Pillow 模块 / 最低有效位(LSB) / lambda 表达式递归 / UTF-8 编码,并在 华为云 FlexusX 4 节点 上完成分布式并行隐写实战。 完整源码与运行产物见文末仓库地址(Gitee)。 一、什么是图片隐写术 隐写术(Steganog…

作者头像 李华
网站建设 2026/7/11 2:13:42

papi酱一句玩笑换来3.2亿阅读?马龙退役不该被这样消费

papi酱又上热搜了,这次不是因为短视频,而是因为一句关于马龙的玩笑。在最近一期播客中,papi酱调侃马龙怕输所以选择退役,这句话瞬间引爆网络,相关话题阅读量飙破3.2亿。一时间,支持者和反对者吵成一团&…

作者头像 李华
网站建设 2026/7/11 2:13:39

Claude Code模型选择与Effort参数调优实战指南

你有没有遇到过这样的场景:当你使用 Claude Code 进行代码生成时,明明选择了更强大的模型,但生成的结果却不如预期?或者,你发现即使使用同一个模型,不同的参数设置会导致完全不同的代码质量?这背…

作者头像 李华
网站建设 2026/7/11 2:11:12

Transformer半导体缺陷分类模型实战

问题背景2021年我刚进某封测厂做算法,第一条产线要分6类晶圆表面缺陷:划伤、污染、颗粒、裂纹、叠层、正常。当时产线跑的是传统CV方案——HOGSVM,准确率死死卡在82%,漏检的颗粒直接流到下工序,那段时间每月客诉赔出去…

作者头像 李华
网站建设 2026/7/11 2:11:07

工业级电机控制方案:TB67H480FNG与MKV58F1M0VLQ24实战解析

1. 工业级电机控制方案选型:为什么是TB67H480FNG与MKV58F1M0VLQ24组合? 在工业自动化领域,电机控制系统的稳定性直接决定了设备寿命和生产效率。最近完成的一个纺织机械升级项目中,我们最终选择了东芝的TB67H480FNG驱动芯片搭配NX…

作者头像 李华
网站建设 2026/7/11 2:11:14

告别网盘限速:9大平台直链解析工具LinkSwift完整指南

告别网盘限速:9大平台直链解析工具LinkSwift完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

作者头像 李华