Arch Linux 重装记录
摘要
又双叒叕重装了一次系统,这次彻底记下来。NVMe 寿命到头换硬盘,选了 Arch Linux + Btrfs 方案,详细记录分区、安装、配置全过程。
上周三晚上备份 dotfiles 的时候,btrfs scrub 报了一堆 csum error。开始以为是文件系统问题,smartctl -a /dev/nvme0 跑了一下——Media and Data Integrity Errors: 0x0004,NVMe 寿命快到头了。
这台机器是 2022 年初装的 Intel 660p,4 年下来健康度掉到 73%。也该换了。换硬盘是个由头,正好把半年没滚的系统、装到一半的配置、散乱的 dotfiles 全部整一遍。
为什么又选 Arch
这个问题每次都有人问。简短回答:
滚动升级,避免大版本升级的痛苦(Ubuntu 22.04 → 24.04 那种我已经受够了)
AUR,几乎所有小众软件都有,不用自己打 deb/rpm
Wiki 是最好的 Linux 文档,没有之一
精简,装出来是什么就是什么,没有预装 30 个我用不到的 snap
缺点也有:偶尔滚挂了自己修;systemd 升级偶尔 breaking change。但对我来说收益大于成本。
硬件
CPU: AMD Ryzen 5 5600X
主板: B550M Mortar
内存: 32 GB DDR4-3600
新硬盘: WD SN770 1TB(之前是 660p 1TB)
老硬盘(保留为数据盘): Samsung 870 EVO 2TB
显卡: GTX 1660 Super(不玩游戏,但偶尔跑点 CUDA 验证)
分区方案
这次坚持 Btrfs,subvolume 切分。理由:
snapshot 真的能救命(
snapper自动 timeline)压缩透明(
zstd:3几乎无感知,节约 20%+ 空间)subvolume 可以独立挂载,恢复数据方便
坑 1: 一定要在装系统前就建好所有 subvolume 并挂载,之后再调整会很麻烦。我第一遍手抖漏了 @var-log,导致 pacman 装日志写到了 @,重做了一遍。
坑 2: @snapshots 不要放在 @ 下面,否则 snapper 创建 snapshot 时会把当前 @ 里的内容也卷进去。独立 top-level 是正解。
安装基础系统
chroot 进去之后:
引导
用 systemd-boot(简洁,不用装 grub)。
网络
我两台机器一台用 NM,一台用 iwd。看场景,桌面选 NM(GUI 友好),服务器选 iwd。
桌面环境:KDE Plasma
用了 4 年 GNOME,这次换 KDE。原因是:
GNOME 的扩展 API 改得太勤,每次大版本都要重写我的几个扩展
KDE 的窗口管理逻辑更接近传统桌面,多屏行为可预测
Wayland 支持终于稳定了(KDE Plasma 6)
Snapper 配置(这次才搞对)
前几次装都跳过了 snapper,结果某次 pacman 滚挂恢复起来要手动 mkinitcpio,惨。这次老老实实配了:
恢复数据
老硬盘 870 EVO 没动,挂上来直接挂载:
坑: 一定要 -A(保留 ACL)和 -X(保留扩展属性),否则拷贝过来的文件权限会乱。
备份策略(这次整理成清单)
/etc→etckeeper进 git,每天自动 commitdotfiles →
chezmoi,跨机器同步重要文档(
/Documents、/Pictures)→syncthing到 NAS + 加密备份到 Backblaze B2系统 snapshot →
snapper+ btrfs(timeline + pre/post pacman)密码 →
pass+ git 私有 repo 同步
装完包清单(备忘)
结语
装完系统本身就 1 小时不到,剩下 3 小时全在调教 dotfiles、配置 snapper、配 syncthing、迁移密码库。这些"装完之后"的工作才是真正的痛点。
下次再装,估计 2027 年。希望届时我已经把整套流程写成 ansible playbook 了,而不是又手敲一遍。
相关文章
暂无相关文章
