藏川线前段

--- 摄于 2017 年 9 月 藏川线前段

上周,心血来潮,我将三年未滚的笔记本 archlinux 系统滚了一下,不出意外地出意外了,它崩了,它崩得有点彻底,直接 bios 之后报错 ./intel-ucode.img not found,简单讲,就是 bootstrap 坏了,什么导致的呢,待我一一道来

./intel-ucode.img not found

首先,intel-ucode.img 这是个什么玩意,它是 intel 处理器的微码,amd 处理器也有对应的 amd-ucode.img,一般来讲,大部分人都会安装这个东西,当然,你不装也没问题,顶多是有些安全更新会没有就是了,它主要的作用就是在软件层面上解决硬件层面的安全/稳定性漏洞,当然,大部分情况下都会以牺牲性能为代价,确保稳定性和安全性。一般情况下,是建议安装的(你非要不装,那也行)。那么这玩意到底是为啥会找不到呢,很简单,因为 pacman -Syu 的时候,提示了一吨问题,包括什么 archlinux-keyring 验签失败、jre 和 jdk 冲突、intel-ucode 已经存在等等莫名其妙的问题,我的操作就是直接全 pacman -Rs 掉了,但是 intel-ucode 重装是需要重新 mkinitcpio -p linux 生成初始化的 img 的,我并不清楚它为啥没有自动生成,我也没有手动去操作,重启就黑了。

我找了半天启动盘,终于进 bios 了。好家伙,这台笔记本的 UEFI 模式下,直接没有用 u 盘启动的选项,切成 legacy 之后,终于从启动盘进去了。本来这问题很好解决,直接再生成一下就完事了,然而,生成的无效。于是我直接格了 /boot,重新装一遍,发现无法制作 uefi 的 /boot,因为进入 bios 的时候不是 uefi。我寻思着有点大问题,之前我装的明明是 uefi 来着,于是重新回到选项中,关掉 legacy 模式,发现,原来可以自己手动添加并指定启动模式,默认是没有从 u 盘启动的,因为我用 ventoy 做的系统盘,支持一堆启动模式,还得指定哪一种 uefi。就这样,顺利重装 /boot 之后,重启找到了 intel-ucode.img ,但黑屏了。

黑屏修复(一)

黑屏这事就复杂了,它有可能是桌面环境坏了、驱动崩了、hook 崩了,总之,某处坏了,但要定位到这个地方,还有点复杂。

这个三年的更新,kde 桌面环境是跨了一个大版本,首先,通过系统盘,将 sddm 给关了

$ systemctl disable sddm

重启能正常今进入 tty,ok,那么内核没崩,然后手动启动 sddm

$ systemctl start sddm

黑屏,好,确认是 桌面环境的问题。

切 tty2,看 sddm 和 xorg 日志,没找到什么异常,并且进程也在正常运行中。

翻了几个小时 archlinux 和 kde 帖子之后,尝试直接 tty2 启动 kdewaynland,成功:

$ startplasma-wayland

重启,黑屏,tty2 直接手起 kde-x11,失败:

$ startplasma-x11
$DISPLAY is not set or cannot connect to the X server.

查看 bootstrap 日志,没找到什么有效信息,dmesg 也没发现 error

$ sudo journalctl -b0
$ dmesg

成功修复一半,直接先睡觉,这时候已经当天晚上一两点了。

黑屏修复(二)

第二天继续,从昨天的工作来看,问题肯定出在 sddm 启动 Xorg 上,那么可不可以绕开 Xorg,直接启动 wayland 版本,虽然它是实验性质的,但好歹能用。

但改 /etc/sddm.conf 的 general 为 wayland 之后,默认还是启动 Xorg,暂时放弃这条路。

然后,又经过一番查找,突然有人和我说,直接用 startX 启动 Xorg,这才是最原始的方式,ok,我尝试用这个东西,绕开 sddm:

$ startx /usr/bin/startplasma-x11

还是黑屏,我再次去找 bootstrap 日志

$ sudo journalctl -b | rg Xorg
Error while finding module specification for `optimus_manager.hooks.pre_xorg_start`

找到元凶了,是 optimus_manager 对应的 hook 启动失败,在 xorg 启动之前就挂了。optimus_manager 这东西是个 python 的笔记本双显卡管理工具,archlinux 默认构建的 python 版本已经到了 3.12,而它只支持 3.11,我的笔记本依赖它进行显卡管理,所以直接崩盘,别看它 issue 上说用 -git 版本可以工作,实际上就是不能工作,我直接卸载掉它,改用 nvidia-prime 这个东西,虽然相对麻烦一点,在使用显卡的时候,要显式声明 prime-run x 去启动程序,但至少不会乱给我上 hook,然后崩桌面。

最后

至此,终于又将笔记本给救回来了,之后有个小插曲:

I:how to set xorg.conf on Dual Graphics Laptop
claude: blabla, use `nvidian-xconfig` automatic Configuration

你如果按它说得去做,就可以收获一个黑屏电脑,emmm,然后我又折腾了一番,重点是把这个自动生成的配置给删掉了,再次抢救成功。

顺便我再吐槽一下 indexeddb,它的 transaction 是会自动提交和过期的,这个行为坑过我很多次。

评论区

加载更多

登录后评论