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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

Snapper on 老刘博客

暂无文章

EndeavourOS + Btrfs + Snapper + GRUB:完整的快照回滚系统配置指南
老刘 · 2025-11-30 · via Snapper 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. 按照屏幕提示完成回滚