惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

齐物 on 老刘博客

Ubuntu 26.04 用了一个月 告别 PaperMod:审美疲劳后的 Hugo 博客“换装”记 Ubuntu25.10编译安装Ibus-libpinyin 博客托管平台换成edgeone pages 博客评论换回Giscus 把GotoSocial嵌入到Hugo 给Hugo PaperMod主题添加一个漂亮又简洁的友情链接页面 群晖NAS安装FRP客户端(frpc) Ubuntu24.04安装Windterm 从 Windows 到 Linux:重新体验的过程与心得 解决腾讯 EdgeOne 域名解析与 SSL 证书申请失败问题 折腾杀毒软件的一点感想 开箱|媳妇的华为 Watch Fit 4 Ghost 博客与 Mailgun 邮件服务申请全流程 Ubuntu部署ghost博客所踩的小坑 当GitHub二次验证丢失:我的完整恢复经历 在群晖里安装简单的笔记软件flatnotes 手机上有好用的输入法吗? 再次使用 KeepassXC进行密码管理 解决Windows11打开安全中心空白的方法 修汽车空调 给Hugo PaperMod增加giscus评论系统 2024年,高德地图和百度地图选哪个? 电视和投影仪,哪个对孩子的眼睛更好? 使用Fcitx5 for Android,读《万历十五年》 2024年 Web 开发趋势 利用cloudflare页面规则设置301永久跳转 初冬时节话镜片防雾 在群晖中使用tailscale实现内网穿透 EndeavourOS安装之后的几件事 Hugo-papermod主题的优化记录 视光周刊(第9期):年轻的时候近视,年老不花眼? 从WordPress转到Hugo 思源笔记群晖正确的部署方法 近视人群夏季佩戴太阳镜的几种方案 在manjaro中安装使用Rime并启用雾凇输入法 开始试用小狼毫输入法 使用群晖自动备份网站 manjaro安装配置fcitx5输入法 没有公网IP也能玩转群晖DDNS ubuntu20.10升级编译安装ibus-libpinyin输入法 电波表如何接收日本电波对时塔的信号 奇葩的京东无线宝 keepass加群辉实现数据同步及浏览器自动填充密码(二) zerotier加openwrt路由实现内网穿透控制群晖 打造一个安全的宝塔面板服务器环境 网易词典笔2.0简单开箱 给鱼缸上了沼泽过滤 破磨边机,早晚换了你 Apple iPad第七代使用小计 使用群晖,配置打印机,实现无线打印机的功能 宝塔面板安装FRP内网穿透控制群晖 推荐一款免费的视频剪辑软件shotcut 使用zerotier进行内网穿透 再次折腾黑群晖系统 记暴风酷播云2期折腾黑群晖 WordPress开启Nginx fastcgi_cache缓存加速 lnmp一键开启waf及使用 Fail2Ban防护 给7B2主题加上外链自动跳转功能 这次发现百度收录的挺快的 百度输入法小测 黑莓8830上网利器之浏览器 做博客比做网站难 网站又搬家了—这次选的衡天小张的服务器 换到pipni的空间了 杯具,原来上传的图片等都没有能转过来 换了个模板 小测三款博客离线编辑软件 开发出godaddy免费空间的另外一个用途 体验了下失而复得 解决godaddy免费空间广告带来影响的方法 小测QQ刚推出的webqq mini wordpress中文tag、中文分类找不到文章的解决方法 提供WordPress 主题 Marcelle的汉化版本 博客整体细节基本完成 虚惊一场 如何增加WordPress上传文件类型 ubuntu9.10 sis显卡驱动程序 聪明的宝宝 lnkillprocess.exe – DLL 初始化失败终极解决方案 lnkillprocess.exe-dll初始化失败的原因终于找到了 如何安全使用计算机4 如何安全使用计算机 3 如何安全使用计算机 2 如何安全使用计算机 1 KPI考评——企业绩效管理的基础 推荐大家使用Symantec Endpoint Protection 11.0.4000_MR4简体中文正式版
EndeavourOS + Btrfs + Snapper + GRUB:完整的快照回滚系统配置指南
老刘 · 2025-11-30 · via 齐物 on 老刘博客

EndeavourOS由于使用的是滚动更新,系统存在着滚挂的可能性(尽管我已经使用了1个多月也没有问题),所以快照回滚是一个必须的选项。本文将详细介绍如何在 EndeavourOS 系统中配置完整的快照回滚系统,让您在系统出现问题时能够轻松恢复到之前的状态。

前言

为什么需要快照回滚系统?在日常使用中,我们难免会遇到以下情况:

  • 系统更新后出现兼容性问题
  • 安装某个软件导致系统不稳定
  • 配置文件修改错误导致系统无法启动
  • 恶意软件或误操作破坏系统

有了快照回滚功能,这些问题都可以通过简单的重启和菜单选择来解决。

系统要求

在开始之前,请确保您的系统满足以下条件:

  1. 已安装 EndeavourOS(或基于 Arch 的其他发行版)
  2. 使用 Btrfs 文件系统作为根分区
  3. 安装时选择 GRUB 作为引导加载程序

核心组件介绍

我们的快照回滚系统将由以下几个核心组件构成:

组件作用必要性
Snapper快照管理核心程序,负责创建、删除和管理快照必需
snap-pac在 pacman 操作时自动创建 pre/post 快照强烈推荐
grub-btrfs将 Snapper 快照集成到 GRUB 启动菜单必需
inotify-tools文件系统监控工具,确保 GRUB 菜单及时更新可选但推荐

安装步骤

步骤 1:安装核心软件包

打开终端,执行以下命令安装所需的软件包:

1
2
# 安装 snapper, snap-pac 和 grub-btrfs
sudo pacman -S snapper snap-pac grub-btrfs

软件包说明:

  • snapper:快照管理的核心程序,提供快照创建、删除、比较等功能
  • snap-pac:自动化工具,在每次 pacman 操作时自动创建"操作前"和"操作后"快照
  • grub-btrfs:GRUB 扩展模块,自动扫描 Snapper 快照并将其添加到启动菜单

步骤 2:配置 Snapper

安装完成后,我们需要创建 Snapper 配置:

1
2
3
4
5
# 创建根分区的 Snapper 配置
sudo snapper -c root create-config /

# 创建第一个手动快照作为基准
sudo snapper create --description "初始系统快照"

步骤 3:启用 GRUB 集成服务

grub-btrfsd 服务会监控快照变化并自动更新 GRUB 配置:

1
2
# 启用并启动 grub-btrfs 守护进程
sudo systemctl enable --now grub-btrfsd.service

步骤 4:生成初始 GRUB 配置

手动生成一次 GRUB 配置,确保现有快照出现在启动菜单中:

1
2
# 重新生成 GRUB 配置文件
sudo grub-mkconfig -o /boot/grub/grub.cfg

验证配置

检查服务状态

确认 grub-btrfsd 服务正常运行:

1
2
# 查看服务状态
sudo systemctl status grub-btrfsd

正常情况下,您应该看到类似以下的输出:

1
2
3
 grub-btrfsd.service - GRUB Btrfs snapshot detection daemon
   Loaded: loaded (/usr/lib/systemd/system/grub-btrfsd.service; enabled; vendor preset: disabled)
   Active: active (running) since ...

查看快照列表

检查 Snapper 是否正常工作:

1
2
# 列出所有快照
sudo snapper list

您应该能看到包含刚才创建的"初始系统快照"的列表。

测试自动快照功能

安装一个简单的软件包来测试自动快照功能:

1
2
3
4
5
# 安装测试软件包
sudo pacman -S neofetch

# 查看是否自动创建了快照
sudo snapper list

您应该能看到两个新的快照:一个在安装前(pre),一个在安装后(post)。

故障排除

问题 1:GRUB 菜单中没有显示快照

如果重启后 GRUB 菜单中没有显示快照选项,可能是因为缺少 inotify-tools

1
2
3
4
5
6
7
8
# 安装 inotify-tools
sudo pacman -S inotify-tools

# 重启 grub-btrfsd 服务
sudo systemctl restart grub-btrfsd.service

# 重新生成 GRUB 配置
sudo grub-mkconfig -o /boot/grub/grub.cfg

问题 2:服务启动失败

如果 grub-btrfsd 服务启动失败,检查以下内容:

1
2
3
4
5
# 检查服务日志
sudo journalctl -u grub-btrfsd.service -f

# 检查 Btrfs 子卷挂载情况
mount | grep btrfs

问题 3:快照无法启动

如果快照在 GRUB 菜单中显示但无法启动,可能是由于以下原因:

  1. 内核版本不匹配:确保快照中的内核版本与当前系统兼容
  2. initramfs 问题:重新生成 initramfs 镜像
  3. 子卷挂载问题:检查 /etc/fstab 配置

高级配置

自定义快照保留策略

编辑 Snapper 配置文件来自定义快照保留策略:

1
2
# 编辑配置文件
sudo nano /etc/snapper/configs/root

在文件中找到以下部分并根据自己的需求调整:

1
2
3
4
5
6
7
8
9
# 数量限制
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="7"
TIMELINE_LIMIT_WEEKLY="4"
TIMELINE_LIMIT_MONTHLY="12"
TIMELINE_LIMIT_YEARLY="0"

# 清理算法
TIMELINE_CLEANUP="true"

配置定时快照

启用定时快照功能,系统会定期自动创建快照:

1
2
3
4
5
# 启用 snapper-timeline.timer
sudo systemctl enable --now snapper-timeline.timer

# 启用 snapper-cleanup.timer
sudo systemctl enable --now snapper-cleanup.timer

使用指南

创建手动快照

1
2
3
4
5
# 创建描述性快照
sudo snapper create --description "安装显卡驱动前"

# 创建带类型和描述的快照
sudo snapper create --type single --description "系统优化完成"

删除快照

1
2
3
4
5
# 删除指定快照(替换 <ID> 为实际的快照编号)
sudo snapper delete <ID>

# 删除多个快照
sudo snapper delete <ID1> <ID2> <ID3>

比较快照

1
2
3
4
5
# 比较两个快照之间的差异
sudo snapper diff <ID1> <ID2>

# 比较特定文件的变化
sudo snapper diff <ID1> <ID2> /etc/fstab

回滚到快照

  1. 重启系统
  2. 在 GRUB 菜单中选择"Snapper snapshots"
  3. 选择要回滚的快照
  4. 按照屏幕提示完成回滚