Ubuntu通过**OverlayFS(联合文件系统)**实现自动重启恢复的关键在于:将系统文件系统分为“只读基础层”(Lowerdir)和“可写临时层”(Upperdir)。重启时,可写层的所有修改会被自动丢弃,系统从只读基础层重新启动,从而恢复到初始状态。
首先安装overlayroot(内核模块,用于简化OverlayFS配置)和fuse-overlayfs(用户态工具,支持OverlayFS操作):
sudo apt update
sudo apt install overlayroot fuse-overlayfs
编辑/etc/overlayroot.conf文件(核心配置文件),启用OverlayFS并指定各层目录:
sudo nano /etc/overlayroot.conf
添加以下内容(需替换为实际目录路径):
[general]
enabled = yes # 启用overlayroot
upperdir = /mnt/overlay/upper # 可写层(存储临时修改)
workdir = /mnt/overlay/work # 工作目录(OverlayFS内部使用)
lowerdir = /mnt/overlay/lower # 只读基础层(系统初始状态)
mergedir = / # 合并后的挂载点(通常为根目录)
目录说明:
lowerdir:需提前创建并复制系统初始文件(如通过rsync -a / /mnt/overlay/lower --exclude={/dev/*,/proc/*,/sys/*,/run/*,/tmp/*}),作为只读基础。upperdir和workdir:需创建在可写存储(如/mnt/overlay)中,用于存储临时修改和OverlayFS内部操作。加载overlayroot模块并设置为开机自动加载:
sudo modprobe -r overlayroot # 卸载现有模块(若有)
sudo modprobe overlayroot # 加载模块
为确保模块开机自动加载,可将其添加到/etc/modules文件中:
echo "overlayroot" | sudo tee -a /etc/modules
若需将OverlayFS挂载到非根目录(如/mnt/overlay/merged),可通过/etc/fstab实现开机自动挂载。编辑fstab文件:
sudo nano /etc/fstab
添加以下行(对应步骤2中的目录配置):
overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0
保存后,执行sudo mount -a验证挂载是否成功。
重启系统,验证是否恢复到初始状态:
sudo reboot
重启后,检查/mnt/overlay/upper目录(可写层)是否为空(所有临时修改已被丢弃),同时确认系统状态是否与lowerdir一致。
lowerdir需设置为只读(可通过mount -o remount,ro /mnt/overlay/lower命令设置),防止意外修改导致恢复失效。upperdir之外(如/home),避免被重启丢弃。lowerdir可通过云平台快照创建,确保基础层的稳定性和一致性。通过以上步骤,Ubuntu系统将在每次重启时自动丢弃可写层的修改,恢复到lowerdir定义的初始状态,实现“自动重启恢复”的目标。