当前位置: 首页 > news >正文

openharmony源码编译之 修改分区大小指南

RK3588 OpenHarmony 分区大小修改指南

概述

修改系统分区大小需要修改两处配置,必须保持一致,否则会导致烧录失败。


一、涉及的配置文件

序号文件路径作用单位
1vendor/kaihong/khp_rk3588_ic816/image_conf/system_image_conf.txt编译时生成镜像的大小字节
2device/board/kaihong/khp_rk3588_ic816/loader/parameter.txtEMMC 硬件分区表(普通烧录)扇区(512字节)
3device/board/kaihong/khp_rk3588_ic816/loader/parameter_secure.txtEMMC 硬件分区表(安全烧录)扇区(512字节)

二、单位换算

2.1 常用大小换算表

大小字节 (Byte)扇区 (Sector)扇区十六进制
512MB53687091210485760x00100000
1GB107374182420971520x00200000
1.5GB161061273631457280x00300000
2GB214748364841943040x00400000
2.5GB268435456052428800x00500000
3GB322122547262914560x00600000

2.2 计算公式

字节 = GB * 1024 * 1024 * 1024 扇区 = 字节 / 512

示例:2.5GB

字节 = 2.5 * 1024 * 1024 * 1024 = 2684354560 扇区 = 2684354560 / 512 = 5242880 = 0x00500000

三、修改步骤(以 system 分区从 2GB 改为 2.5GB 为例)

3.1 第一步:修改镜像大小配置

文件:vendor/kaihong/khp_rk3588_ic816/image_conf/system_image_conf.txt

修改前:

/ 2147483648 # 2GB --fs_type=ext4 ...

修改后:

/ 2684354560 # 2.5GB --fs_type=ext4 ...

直接修改第二行的数字为目标大小(字节)。


3.2 第二步:修改分区表配置

文件:device/board/kaihong/khp_rk3588_ic816/loader/parameter.txt

分区表格式说明:

大小@偏移(名称) 例如:0x00400000@0x00040000(system) ↑ ↑ 大小 起始位置

原始分区表:

...(ramdisk),0x00400000@0x00040000(system),0x00100000@0x00440000(vendor),0x000C0000@0x00540000(sys-prod),...

修改内容:

  1. system 大小0x004000000x00500000(增大 0x00100000 = 512MB)
  2. 后续所有分区偏移:都要 +0x00100000
分区原偏移新偏移说明
system0x000400000x00040000起始位置不变
vendor0x004400000x00540000+0x00100000
sys-prod0x005400000x00640000+0x00100000
chip-prod0x006000000x00700000+0x00100000
recovery0x006800000x00780000+0x00100000
factory0x006900000x00790000+0x00100000
userdata0x008000000x00900000+0x00100000

修改后分区表:

...(ramdisk),0x00500000@0x00040000(system),0x00100000@0x00540000(vendor),0x000C0000@0x00640000(sys-prod),...

3.3 第三步:修改安全烧录分区表

文件:device/board/kaihong/khp_rk3588_ic816/loader/parameter_secure.txt

修改方法与 parameter.txt 完全相同,包括后续所有分区的偏移调整。

安全烧录模式多了 rvt、security 等分区,这些分区的偏移也要同步调整。


四、验证修改

4.1 检查配置一致性

# 检查镜像大小配置catvendor/kaihong/khp_rk3588_ic816/image_conf/system_image_conf.txt# 检查分区表grep"system"device/board/kaihong/khp_rk3588_ic816/loader/parameter.txtgrep"system"device/board/kaihong/khp_rk3588_ic816/loader/parameter_secure.txt

确认:

  • 字节数 = 扇区数 × 512
  • 两个 parameter.txt 中 system 大小相同

4.2 编译验证

./build.sh --product-name khp_rk3588_ic816

编译完成后检查:

ls-lhout/arm64/khp_rk3588_ic816/packages/phone/images/system.img

应该显示:2.5G


五、其他分区修改参考

5.1 修改 vendor 分区

vendor 分区在 system 之后,修改 vendor 大小:

  1. vendor 大小变更
  2. sys-prod 及后续分区偏移同步调整

5.2 修改 userdata 分区

userdata 是最后一个分区,用-表示占满剩余空间:

...-@0x00900000(userdata:grow)

只需调整前面分区,userdata 自动适配。


六、常见问题

Q1: 烧录提示 “system partition not enough to store image”

原因:parameter.txt中的 system 分区大小 <system_image_conf.txt中的镜像大小

解决:两处配置保持一致

Q2: 编译后镜像大小还是原来的

原因:增量编译没有重新打包镜像

解决:make clean后重新编译,或删除out目录

Q3: 改大了 system 分区,userdata 变小了

正常现象:EMMC 总空间固定,system 大了 userdata 就小了,根据实际需求平衡。

Q4: 改大了 system 分区,为什么 df -h 显示 userdata 还是 111G 没变?

原因分析:

  1. 比例太小,显示不明显:512MB 相对于 111GB 仅占 0.46%,df -h四舍五入后看不出变化
  2. 原始分区表有空隙:factory 结束位置0x00792000到 userdata 开始0x00900000之间本来就有约 732MB 空隙,增大的 512MB 先吃掉了这个空隙

精确验证方法:

# 1. 查看分区精确大小(1K 块为单位)df# 2. 查看内核分区表,确认 system 实际扇区数cat/proc/partitions# 3. system 分区扇区数验证# 2GB: 4194304 块# 2.5GB: 5242880 块

确认 system 确实是 2.5GB 即表示配置生效,userdata 微小变化不影响使用。


七、大小设置建议

分区推荐大小说明
system实际内容 + 300~500MB 余量不要太大,够用即可
vendor512MB一般不需要改
sys-prod384MB一般不需要改
chip-prod256MB一般不需要改
userdata剩余全部用户数据区,越大越好

先编译一次,查看实际内容大小:mount -o loop system.img /mnt && du -sh /mnt

磁盘分区修改前

磁盘分区修改后

http://www.jsqmd.com/news/767228/

相关文章:

  • 拒绝数据“裸奔”!把顶级AI装进自己的硬盘,这款神仙开源工具我粉了
  • 国产旗舰AI“西方垃圾思维中毒”反超欧美原生模型:TOP30榜单揭示认知殖民化困境
  • 开源项目国际化文档协作:从工具链到社区运营的完整实践指南
  • 3步完成QQ空间说说完整备份:GetQzonehistory终极指南
  • Arm Cortex-A65缓存调试与ECC错误处理机制解析
  • 想在武汉找广联达培训学校?哪个值得你选择?
  • ComfyUI-Impact-Pack V8:如何用模块化架构彻底解决AI图像增强三大性能痛点
  • 破浪“IVD”:迈瑞医疗一季报归母净利环比暴增311%迎来复苏周期
  • 告别假阳性!用Cuckoo Filter(布谷鸟过滤器)优化你的LSM-Tree存储引擎
  • 告别系统软键盘!手把手教你为Qt应用定制一个高颜值、全功能的虚拟键盘(支持Win/Linux)
  • ZLUDA兼容性评估指南:在AMD GPU上运行CUDA应用的5大决策要点
  • VSCode 2026日志插件开发全链路:从零构建可扩展、低延迟、支持TB级日志流的插件架构
  • 企微AI原生接口深度适配:侧边栏实时陪聊性能优化与高可用方案
  • 告别时间漂移:手把手教你用RX8111CE RTC芯片实现高精度时间戳(附I2C驱动避坑指南)
  • 大语言模型与知识图谱融合:技术路线、工具选型与实战指南
  • MySQL编写触发器如何保证数据完整性_逻辑校验规则设置
  • 基于Helm Chart的企业级Dify部署与Kubernetes生产化实践
  • 5分钟搞定Windows安卓应用安装:APK Installer极简解决方案彻底告别模拟器卡顿
  • Cursor Rules:为AI编程助手定制团队开发规范,提升代码质量与一致性
  • 2026年揭秘:相城二手木托盘厂家,哪家质量更胜一筹?
  • Minecraft存档修复终极指南:使用Region Fixer拯救你的像素世界
  • Arm Cortex-R82缓存与TLB管理机制详解
  • Stripe科里森 X OpenAI奥特曼的长谈
  • 1分钟搞定半天工作量:Gemini 3.1 Pro 解决办公问题的真实案例(附可复制提示词+合规核验)
  • 从零构建个人数字工作台:Station5开源项目架构与实战指南
  • Fish Shell技能管理框架:构建可复用命令行工具生态
  • 小白程序员必看:收藏这份Tool Calling指南,解锁大模型行动力!
  • 从网卡到GPU:拆解你电脑里的PCIe 4.0 x16链路,看懂Switch如何让多设备协同工作
  • 观察 Taotoken 透明计费如何帮助精准预测月度 AI 调用预算
  • Nextcloud部署后必做的5项安全与性能调优:基于CentOS 7的MySQL配置、HTTPS与缓存实战