--- 摄于 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 是会自动提交和过期的,这个行为坑过我很多次。
请登录后评论
评论区
加载更多