也许你知道, 我目前电脑上使用 windows + archlinux 双系统。后者作为主力系统,前者则负责跑一下只能在 windows 下跑的专业软件。前者使用的是 ntfs 文件系统,后者使用的是 btrfs 文件系统。我将前者 mount 到了 /c 目录下,于是我能使用我的 archlinux 访问我的 windows 中的文件。
然后某一天,我突发奇想,想在 windows 下也能访问 archlinux 的文件,于是我下载安装了 <www.github.com/maharmstone/btrfs> 项目,效果似乎很好,但在某一次浏览文件的时候,windows 系统突然发生了由 btrfs.sys 引发的系统崩溃。后来我再次启动 linux 系统时,遇到了 [FAILED] Failed to mount /sysroot 的问题,启动没有成功,甚至没有进入任何命令行界面。
首先,我尝试在 grub 中使用 timeshift 储存的较早的版本,但是在启动时遇到了同样的问题。(后来我知道,timeshift 运行在 btrfs 文件系统上,遇到了文件系统的问题导致备份也一并失效了)
我使用了我之前安装 arch 时制作的启动 u 盘,听取 deepseek 的建议,运行了btrfs rescue zero-log ,但是得到反馈 checksum verify failed on 612... Couldn't read tree root 。修复失败。随后我又在 deepseek 的提议下检查了几个相关文件系统检查。(期间 deepseek 还唆使我 btrfs restore 东西到 windows 系统里面,我没有这么做而是外接了一个新硬盘。)
无损的修复尝试似乎失败了,于是我使用 photorec 工具 photorec /dev/nvme1n1p3(deepseek 告诉我的方法),将我的 archlinux 系统中的文件备份到了一个外接硬盘里(不过文件存过去之后文件结构全都没了啊喂喂)。
备份完毕后,我尝试了 btrfs rescue super-recover /dev/nvme1n1p3 ,结果修复后挂载成功,重启后启动成功,有惊无险,可喜可贺。
此次遭遇后,接下来,我应该准备一个大一点的硬盘,每隔一段时间,做一次 btrfs send 异地备份整个文件系统。这样尽可能保证数据安全。(-300r (诶这个价格固态8T真的靠谱吗……)
记录这次维护经历。

昨天用 archlinux 遇到了 bug 调了一天。
现象是在 sddm 欢迎页面输入正确密码后没能正确启动 plasma 桌面,而是卡死了。
最开始怀疑是 plasma 或是 wayland 的问题,看 log 改配置回滚版本整了好久没找到错哪。后来把注意力放在 tty2 登陆用户账户时出现的大量报错上,发现是启动用户环境的时候 zsh 终端里的环境变量 PATH 不对,没有把 /usr/bin 和 /usr/local/bin 放进来,导致大量命令无法执行。
新建了一个用户,发现另一个用户可以正常登录,于是排查用户配置问题,最后发现, /etc/zsh/zprofile 重写了 PATH,这个文件里原来内容是 emulate sh -c 'source /etc/profile' ,即使用 sh 去执行 /etc/profile……,然而这里出了一些问题(我没继续往下排查)导致本来应该正常写入 PATH 结果没能写入。改成 source /etc/profile 后一切正常,成功登陆。
为什么会触发这个 bug 我也不清楚,也许是我昨天关机前整 conda 整的?
总之记录这次 debug 经历。