返回> 网站首页
overlayroot使用指南:为Linux根文件系统加上"重启即还原"
yoours2026-10-18 18:51:01
简介一边听听音乐,一边写写文章。
一、介绍
在嵌入式设备或任何需要“折腾坏了重启就好”的场景中,overlayroot是一个让根文件系统在运行时保持只读,所有修改都落在临时的可写层中,重启后一切归零。
保护存储介质,降低损坏风险;重启即恢复,适合“不可变”场景;需要时仍可临时写入。
二、安装
sudo apt install overlayroot
三、配置
1. /etc/overlayroot.conf
安装后的默认状态通常是禁用,文件中有一行 overlayroot=""
2. 最常用的配置值
overlayroot="tmpfs:swap=1,recurse=0"
tmpfs:可写层放在内存文件系统中,重启后自然消失。
swap=1:允许 tmpfs 在内存压力大时使用 swap,降低 OOM 风险。
recurse=0:只对根文件系统本身做 overlay,不递归覆盖 /boot、/home 等单独挂载的分区。如果有独立的数据分区需要保持可写,这个参数很重要。
四、命令
1. 修改配置文件后,重启系统,用以下命令验证 overlay 是否生效:
mount | grep overlayroot
输出显示 overlayroot on / type overlay,并列出 lowerdir、upperdir 和 workdir 的路径,例如lowerdir=/media/root-ro, upperdir=/media/root-rw/overlay。
2. 日常写入(临时,重启丢失)
根分区 / 呈现为可正常读写的 overlay 视图。可以像普通系统一样创建文件、修改配置、安装软件。但这些更改只存在于上层(通常是 tmpfs)中,重启后全部消失。
3. 持久化修改:overlayroot-chroot
当需要修改底层只读根文件系统——比如安装软件包、修改 /etc 下的持久配置——使用:
sudo overlayroot-chroot
该命令会为 /proc、/sys、/run 建立绑定挂载,将底层的只读根以可写方式重新挂载为 overlay,然后 chroot 进去。会看到提示符发生变化(常见为 chroot(/overlay/lower):/#),此时所做的更改会写入底层存储,重启后仍然保留。
在 chroot 环境中完成操作后,执行 exit 退出,回到正常的临时可写环境。
4. 完全禁用 overlayroot,恢复永久回到普通的可读写根文件系统
sudo overlayroot-chroot
进入后编辑 /etc/overlayroot.conf,将 overlayroot 那一行改回:
overlayroot=""
保存、 exit ,然后重启。重启后根分区将恢复为常规可读写状态。
5. 配置生效
修改 /etc/overlayroot.conf 后,必须重新生成 initramfs,否则新的配置不会被 initramfs 中的脚本读取:
sudo update-initramfs -u
sudo reboot
五、注意事项
在 tmpfs 模式下,可写层消耗的是内存,最大约占可用内存的一半(按需动态占用)。如果系统运行期间会产生大量写入(日志、缓存、临时文件),可能触发内存压力,此时需要调整日志策略或考虑使用非 tmpfs 的可写层。
持久化分区与 recurse。 如果有独立的数据分区(如 /home、/data)需要保持可写,确保 recurse=0 或通过 overlayroot_exclude 排除相应挂载点,否则这些分区可能被一并 overlay 化。