2026-05-20 Arch Btrfs 快照与启动配置修复记录.md
2026-05-20 Arch Btrfs 快照与启动配置修复记录
背景
维护前系统运行在 rollback 子卷上:/ -> @root-rollback-2026-05-14-204157,/home -> @home-rollback-2026-05-14-204157。这会让当前正式系统状态、GRUB 快照菜单和后续回滚判断变得不清晰。
执行摘要
- 创建执行前 root/home 重要快照。
- 将当前 rollback 子卷正式化为标准
@/@home。 - 更新
/etc/fstab、EFI stub、GRUB 配置,并重建 initramfs。 - 启用 Btrfs qgroup,让 snapper 的空间感知清理生效。
- 清理非重要快照,只保留 important 快照和必要回退入口。
- 修复 Fcitx5/Rime 的 ascii_composer 配置,添加 nouveau blacklist。
当前关键状态
/ -> subvol=/@
/home -> subvol=/@home
内核参数 -> rootflags=subvol=@
EFI stub -> configfile /@/boot/grub/grub.cfg
systemctl --failed -> 0
systemctl --user --failed -> 0
Btrfs quota/qgroup -> enabled, consistent
子卷与回退点
当前正式子卷:
@ # root
@home # home
旧标准子卷备份:
@-pre-formalize-2026-05-20-impl
@home-pre-formalize-2026-05-20-impl
额外保留的 rollback 回退点:
@root-rollback-2026-05-14-204157
@home-rollback-2026-05-14-204157
当前快照
root:
266 2026-05-14 20:41:57 manual checkpoint before experimenting after office setup important=yes
391 2026-05-17 10:43:14 new checkpoint after pruning snapshots important=yes
465 2026-05-20 16:43:51 important checkpoint before snapshot cleanup 2026-05-20 important=yes
470 2026-05-20 16:54:40 pre-system-repair formalize rollback 2026-05-20 important=yes
home:
25 2026-05-14 20:41:57 manual checkpoint before experimenting after office setup important=yes
60 2026-05-17 10:43:31 new checkpoint after pruning snapshots important=yes
104 2026-05-20 16:43:51 important checkpoint before snapshot cleanup 2026-05-20 important=yes
105 2026-05-20 16:54:40 pre-system-repair formalize rollback 2026-05-20 important=yes
Snapper 策略
root:
NUMBER_LIMIT=30
NUMBER_LIMIT_IMPORTANT=10
TIMELINE_LIMIT_HOURLY=8
TIMELINE_LIMIT_DAILY=7
TIMELINE_LIMIT_MONTHLY=3
TIMELINE_LIMIT_YEARLY=0
SPACE_LIMIT=0.5
FREE_LIMIT=0.2
QGROUP=1/2
home:
NUMBER_LIMIT=10
NUMBER_LIMIT_IMPORTANT=10
TIMELINE_LIMIT_HOURLY=4
TIMELINE_LIMIT_DAILY=3
TIMELINE_LIMIT_MONTHLY=1
TIMELINE_LIMIT_YEARLY=0
SPACE_LIMIT=0.5
FREE_LIMIT=0.2
QGROUP=1/3
引导配置
/etc/fstab:
/ -> subvol=/@
/home -> subvol=/@home
/.snapshots -> subvolid=260
/home/.snapshots -> subvolid=261
/efi/grub/grub.cfg:
search --no-floppy --fs-uuid --set=root c2e9f362-4044-41b8-ad66-1d7a3eddfa14
configfile /@/boot/grub/grub.cfg
已执行:
mkinitcpio -P
grub-mkconfig -o /boot/grub/grub.cfg
显卡与 initramfs
当前显卡:
Intel iGPU -> i915
NVIDIA RTX 4050 -> nvidia
/etc/modprobe.d/blacklist-nouveau.conf:
blacklist nouveau
options nouveau modeset=0
initramfs:
initramfs-linux-lts.img 约 216M
initramfs-linux-zen.img 约 218M
说明:mkinitcpio 的 kms hook 会收进 NVIDIA/nouveau 相关固件。当前实际使用 nvidia,nouveau 已 blacklist。未移除 kms hook,以避免影响早期图形初始化。
Fcitx5 / Rime 修复
# ~/.local/share/fcitx5/rime/default.custom.yaml
patch:
ascii_composer:
good_old_caps_lock: true
switch_key:
Caps_Lock: clear
Shift_L: commit_code
Shift_R: noop
Control_L: noop
Control_R: noop
随后重新部署 Rime 并重启 Fcitx5。重启后 fcitx5.service active,之前的 Missing ascii bindings 错误不再出现。
验证结果
findmnt / -> /dev/nvme1n1p2[/@]
findmnt /home -> /dev/nvme1n1p2[/@home]
systemctl --failed -> 0
systemctl --user --failed -> 0
btrfs quota status / -> enabled, full accounting, inconsistent=no
磁盘:
Device size: 476.85 GiB
Used: 102.90 GiB
Free estimated: 369.26 GiB
后续建议
暂时保留旧标准子卷备份和 rollback 子卷,确认使用几天无问题后再考虑删除。至少等数次正常重启、升级、快照恢复测试后再处理。