主目录:返回主目录
上一节:安装桌面环境前的准备
snapper
opensuse开发的快照软件。
-
安装
sudo pacman -S snapper btrfs-assistant grub-btrfs inotify-tools -
重启电脑用新的initramfs进入系统
reboot -
激活快照启动项服务
sudo systemctl enable --now grub-btrfsd -
创建快照配置
sudo snapper -c root create-config /sudo snapper -c home create-config /home -
设置合理的快照策略
-
获取当前设置
sudo snapper -c root get-config -
修改设置
可以使用
set-config选项,但是一个个设置太麻烦了,建议直接编辑文件sudo vim /etc/snapper/configs/rootALLOW_GROUPS="wheel"允许wheel组的用户无须sudo就可以操作快照NUMBER_LIMIT="10"设置最多保存10个快照,超出后会按照时间顺序删除旧快照。TIME_LIMIT_HOURLY="3"每隔一小时创建的快照保存3个。TIME_LIMIT_DAILY="1"每日快照保存1个。其他的
TIME_LIMIT数量都设置为0。这样就仅保存三个小时前的状态和昨天的状态。接着对home的快照配置进行一样的修改
sudo vim /etc/snapper/configs/home
-
-
开启按时间自动创建快照和自动清理
sudo systemctl enable --now snapper-timeline.timersudo systemctl enable --now snapper-cleanup.timer -
创建快照
分别创建home和root的快照。
snapper -c root create -d "before desktop"snapper -c home create -d "before desktop"create创建快照,-d (description)添加自定义描述。 -
生成grub菜单入口
要至少运行一次
grub-mkconfig生成grub菜单的快照启动项入口:sudo grub-mkconfig -o /boot/grub/grub.cfg
reboot重启可以看到快照启动项。
回档方法
-
btrfs-assistant命令行(推荐)
-
切换至root
以普通用户
sudo运行可能会出现环境问题,建议切换到root。su - -
确认要使用的快照的snapper序号
snapper -c root list可以使用
grep筛选快照snapper -c root list | grep "Before"假设我要用的快照的sanpper序号是
11 -
用snapper序号找到对应的btrfs-assistant序号
btrfs-assistant -l假设查询到的btrfs-assistant序号是
1 -
回档
btrfs-assistant -r 1
-
-
从grub菜单的快照启动项进入系统
无法正常进入系统时使用该方法。用btrfs-assistant回档,GUI或者命令行都可以。记得用root身份登录。
-
snapper命令行
arch的子卷布局不支持
snapper rollback命令,只能使用undochange命令回档。-
列出可用快照
snapper -c root list找到自己想使用的快照的数字序号
-
undochange回档
sudo snapper -c root undochange 1..0这里的
1..0,1是你要使用的快照的序号,0代表当前状态。这条命令会对比两者的区别,对当前状态进行修改,无须重启,重新登录即可生效。
⚠️注意:官方文档不建议用undochange回档root。
-
遇到异常
-
从快照启动项进入系统后
snapper list没能列出快照因为现在处在快照子卷里而不是原本的
@子卷里。之前创建的快照都在@子卷里,挂载之后才能读取到。-
确认根分区设备名
lsblk -p或者
findmnt / -
挂载根
mount -t btrfs /dev/nvme0n1p2 /mnt此时
/mnt对应的是/,cd进入/mnt会看到系统的@。也可以选择加上-o subvol=/@挂载/@而不是/,这种情况下/mnt对应的是@。 -
指定根进行读取
我们的子卷存放在
@里面,列出快照时指定读取@:snapper --no-dbus --root /mnt/@ -c root list--root选项指定根,此选项只能在--no-dbus下生效。可以使用
grep筛选自己需要的快照:snapper --no-dbus --root /mnt/@ -c root list | grep "Before Desktop Environments"记住快照序号,使用btrfs-assistant的命令行工具回档即可,方法上面已经介绍了。
-
-
如果无法从快照启动项进入系统
很大概率是因为快照是只读的导致显示管理器无法正常运行,你的启动日志会卡在
Graphiccal ....。-
解决方法:切换到别的tty用命令行恢复
Ctrl+Alt+f2~f8切换到非图形界面的tty,用命令行进行恢复。恢复完成后可以把显示管理器换掉,已知sddm会出现此问题而plasmalogin不会。
-
系统维护
文件系统维护
定期运行
sudo btrfs scrub start -B /sudo btrfs scrub start -B /home整理 btrfs 文件系统
系统更新
一周一更新(一般把更新放在周末),更新前先查新闻。
更新前记得创建快照,也别忘了定期清理快照。
snapper -c [root/home] list | grep "before"snapper -c [root/home] delete [id]也可以用btrfs-assistant的GUI。
接下来进行系统更新,首先检查更新
checkupdates如果更新中有关于 keyring 的更新,更新系统前最好先同步一下。
sudo pacman -Sy [needed]-keyringsudo pacman -Syuyay -Syu如果没有,就正常更新
sudo pacman -Syuyay -Syu然后 reboot 重启电脑(虽然一般可以不重启,最好还是重启一下)。
更新完成后清理缓存
yay -Scc如果发现重启后系统语言变成了英文,可以
sudo locale-gen然后退出niri,重新登录当前用户就可以了。