需要安装的包 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