记一次arch滚挂后,更换lts内核

背景

由于arch的滚动升级模式,天天pacman -Syu已是一种习惯了(虽然我是使用yay的),升级过程当中会连内核一块儿升级,但不会马上生效,一般要等到下次重启时才会生效。
由于此前使用的是有一点激进的linux内核,而不是linux-lts,因此在国庆节前的某一次不知名的升级中,就出了岔子,然而当时什么都没发现,节后回到公司才发现开机后屏幕不亮了🤣linux

调查过程

虽然背景中提到了是由于内核的缘由,但在刚发现屏幕不亮时是不知道缘由的,只知道屏是黑的,鼠标键盘没有反应,慌做一团。
好在平时会使用ssh远程办公,拿出surface检查了一下发现还能连上,略微放心。
冷静下来后开始按顺序排查,首先排除了硬件线路问题。
而后用journalctl查了一下各个服务启动的日志,看起来一切正常。
尝试禁用sddm,再重启试图进入字符界面,依然失败,看来不是gui的问题,也不是哪一个服务启动的问题。
以后使用dmesg查看kernel日志,在日志中发现了一行驱动挂掉的信息:ssh

[    3.507498] RIP: 0010:drm_calc_vbltimestamp_from_scanoutpos+0x30c/0x350 [drm]

如今发现是驱动问题了,然而怎么解决并不知道,询问了其余用arch的前辈后,获得了换成lts内核的建议,总之先试试……ui

更换内核操做步骤

  1. 安装linux-lts 和 linux-lts-headers 这两个包,直接pacman便可
  2. 在/boot/loaders/entries里面,复制出arch.conf的文件到arch-lts.conf(也可能叫linux.conf,名字不重要)
  3. 编辑刚刚复制出来的arch-lts.conf,把其中的内核指向修改成lts版本
## This is just an example config file.
## Please edit the paths and kernel parameters according to your system.

title   Arch Linux
linux   /vmlinuz-linux
#initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=/dev/nvme0n1p2 rw add_efi_memmap rootflags=subvol=@root

改成日志

## This is just an example config file.
## Please edit the paths and kernel parameters according to your system.

title   Arch Linux
linux   /vmlinuz-linux-lts
#initrd  /intel-ucode.img
initrd  /initramfs-linux-lts.img
options root=/dev/nvme0n1p2 rw add_efi_memmap rootflags=subvol=@root

4.修改/boot/loader/loader.conf 中的default 为 arch-lts
5.rebootcode

这些编辑能够直接用root权限操做,不须要额外配置文件权限it

至于之后……

总之如今问题解决了,以后我大概会长期使用lts版本了吧,反正平常工做用的电脑,稳一点比较重要。
另外……感受本身好像得到了一个成就,我终于把本身的arch滚挂了一次(虽然不是什么大问题)io

相关文章
相关标签/搜索