我不在乎他们实现的方式和更高级的应用( Btrfs 应该是可以备份其他数据的),我只想知道 openSUSE 默认开启的 snapper 能否真的避免某一次升级就把系统搞崩了( typical linux experenice )
1
yanqiyu 10 天前 via Android 1
除非是把 bootloader 搞炸了是可以实现一键回滚的(我记得 suse 可以在 grub 里面选择启动到某个快照)
不过想要避免更新导致爆炸真正的银弹是 Transactional Update ,比如 Fedora 的 silverblue 之类的 ostree 变种和 suse 的 micro os 版本。 |
3
bczhc 10 天前
最简单的把 btrfs 里快照挂载到`/`上就可以实现了。还能做到 grub 里按 e 键随意决定进哪个子卷。不过 efi 分区不知能不能是 btrfs ,一般还是多留几个内核镜像,只要有一个能进系统就能修……
|
4
chundi 10 天前
snapper 自动打的快照一般情况没什么问题,比如下边的 792 这个就是直接回的 786 这个快照,
# │ 已激活 │ 类型 │ 描述 │ 用户数据 ...... 782 │ 否 │ post │ │ important=yes 792* │ 是 │ single │ writable copy of #786 │ ...... 我回滚过很多次,常见的回滚情况比如系统更新了但网卡驱动还没更,上不了网,或者某些库被移除了部分软件打不开之类的,启动时 grub 菜单选一个只读的快照进去,打开终端 snapper rollback 之前的快照就可以了,很方便。 但也不是绝对的可以无痛回滚,比如 KDE5 升级到 KDE6 这样的大版本升级,在我电脑上就升挂了,回滚也不好使,不过就遇到过这一次。 |
5
yanqiyu 10 天前
@chundi #4
> 我回滚过很多次,常见的回滚情况比如系统更新了但网卡驱动还没更,上不了网,或者某些库被移除了部分软件打不开之类的,启动时 grub 菜单选一个只读的快照进去,打开终端 snapper rollback 之前的快照就可以了,很方便。 我猜原因就是回滚之后 `/usr/lib/modules/` 里面的内核版本和启动的时候用的对不上了?不过我不太清楚 snapper 会不会连着 /boot 里面的内核镜像一起快照了,没有的话就几乎肯定会有这个问题。 这时候就要推销 silverblue 这种 ostree 模式了,保证内核在内的一起回滚。 > 但也不是绝对的可以无痛回滚,比如 KDE5 升级到 KDE6 这样的大版本升级,在我电脑上就升挂了,回滚也不好使,不过就遇到过这一次。 有一种情况是升级的时候,第一次登陆 KDE 的组件对于什么数据库做了升级,然后回滚之后旧的 KDE 不认识了,然后就炸了。 |
6
chundi 9 天前
@yanqiyu #5
> 我猜原因就是回滚之后 `/usr/lib/modules/` 里面的内核版本和启动的时候用的对不上了?不过我不太清楚 snapper 会不会连着 /boot 里面的内核镜像一起快照了,没有的话就几乎肯定会有这个问题。 我的系统安装时默认只给分了两个分区,一个根分区是 btrfs ,一个 /home 是 xfs ,/boot 放在根分区,snapper 默认是会打上快照的。不过 /boot 里都是软链,指向的 /usr/lib/modules 。回滚主要是网卡驱动我用的第三方驱动,不支持 dkms ,升级内核后需要重新编译,但有的时候系统升级后部分库也升级了,如果网卡驱动还没跟着更新编译会通不过,就上不了网了,只能先回退,等网卡驱动更新。 > 有一种情况是升级的时候,第一次登陆 KDE 的组件对于什么数据库做了升级,然后回滚之后旧的 KDE 不认识了,然后就炸了。 可能确实是这个原因。当时系统升级后可以进入桌面环境,但只有一个提示正在处理个人数据什么的,等了很久没有任何反应,强制重启后就进不去桌面了。手动回滚到了上一个版本然后就炸了。当时也没折腾,命令行备份了数据直接重装了。。 |