需要安装的包 snapper snap-pac grub-btrfs inotify-tools
这篇文章为了保底记录实际代码操作过程,正常执行使用脚本
首先配置Snapper配置文件
如果提前创建好了@snapshot子卷,那么不能让snapper自动创建配置文件,手动复制默认的配置文件到配置目录
Snapper 配置模板 /usr/share/snapper/config-templates/default
Snapper 配置目录 /etc/snapper/configs/xxx
查看指定配置文件的参数:snapper -c xxx get-config
修改全局配置文件,添加配置文件名称 SNAPPER_CONFIGS="xxx"(添加了才生效)
手动创建快照:sudo snapper -c system create --description "snapshot1"
删除快照: sudo snapper -c system delete 1(用list可以看到快照编号)
查看xxx配置文件的快照列表:snapper -c xxx list(每一个配置文件的快照是独立的)
配置snap-pac
配置这个执行pacman的时候就会自动保存两个快照
需要编辑/etc/snap-pac.ini
[xxx]
snapshot = True
GRUB配置
配置让快照出现在GRUB选单界面
依赖两个包 grub-btrfs inotify-tools
启用 sudo systemctl enable --now grub-btrfsd.service
更新一下GRUB配置文件 sudo grub-mkconfig -o /boot/grub/grub.cfg
补救方法
# 通过GRUB进入正常的系统
# 挂载顶层到mnt(顶层ID永远是5)
sudo mount -o subvolid=5 /dev/sdxx /mnt
# 重命名之前的@
sudo mv /mnt/@ /mnt/@_bad
# 把快照中正常的@克隆到mnt
sudo btrfs subvolume snapshot /.snapshots/具体id/snapshot /mnt/@
# 取消挂载重启进入系统
sudo umount /mnt
sudo reboot
特殊情况
进入新快照之后出现pacman无法使用,可能是快照中正在执行pacman导致锁文件
sudo rm /var/lib/pacman/db.lck