《overlayroot 修改底层根文件系统并打包指南》
作为系统适配人员,为了能够成功修改底层系统并打包出可批量烧录的 overlayroot 根文件系统,你需要根据不同的修改场景,参考对应的指南文件。以下是具体的操作路径与规范:
1. 场景一:仅需命令行操作(如代码修改、包管理)
如果你只需要通过终端使用 apt 更新软件、修改网络配置或编辑脚本文本,请参考:《overlayroot 直接修改底层文件指南 —— 仅限命令行》。
- 核心操作:在终端执行
sudo overlayroot-chroot命令,系统会临时解锁物理底层并进入纯净的底包隔离环境。 - 落盘要求:修改完成后,必须执行
exit退出环境,并使用sync强制同步数据,以确保底层被重新锁死为只读状态。 - 局限性:该方法仅在当前命令行生效,对 MobaXterm 的 SFTP 传输无效。
2. 场景二:需要外部传文件(如 MobaXterm SFTP)
如果你需要将宿主机上的文件直接传输并替换到底层系统中,请参考:《overlayroot 如何使用 MobaXTerm 的 sftp 功能修改底层根文件系统或传输文件》。
- 独立进程问题:MobaXterm 的 SFTP 窗口是独立的进程,无法感知终端中的
chroot操作,直接拖拽文件会默认写入表层的userdata。 - 核心操作:需要在普通终端先手动全局解锁底包(
sudo mount -o remount,rw /media/root-ro),然后在 SFTP 侧精确导航到真实的底包挂载点/media/root-ro/内的对应目录进行文件拖拽。 - 落盘要求:传输结束后,需在终端执行
sync并重新挂载底包为只读保护(ro)模式。
3. 场景三:桌面级复杂修改(如 GUI 配置、大面积改动)
如果修改操作在命令行下难以实现(例如在桌面上进行了复杂的系统设置),需要全量合并底层,请参考:《overlayroot 顶层同步到底层指南》。
- 防坑警告:千万不要直接将
/media/root-rw/overlay/里的文件拷贝到/media/root-ro/,这不仅无法删除底层原文件,还会把 OverlayFS 产生的“Whiteout(涂改液)”占位文件错误地硬塞进底包中。 - 核心操作:需要采用反向全量同步法,在解锁底包后,使用带
-x参数的rsync命令,避开虚拟文件系统,将系统当前正在运行的合并视角(/)直接克隆给底层。 - 落盘要求:同步完成后,必须清空表层数据(
rm -rf /media/root-rw/overlay/*),执行sync落盘并重启设备。
4. 最终步骤:系统打包
当完成上述任意一种场景的底层修改,且确认数据成功落盘、底包已恢复只读状态后,即可开始提取并打包根文件系统。
- 打包工具与分支要求:请务必使用专门针对 overlayroot 机制适配的打包脚本,代码仓库地址为:
https://github.com/Witheart/hw_export_rootfs/tree/overlayroot(注意:必须切换到overlayroot分支运行脚本以确保打包逻辑正确)
留下评论