記一次arch滾掛後,更換lts內核
- 2019 年 10 月 8 日
- 筆記
背景
因為arch的滾動升級模式,每天pacman -Syu已經是一種習慣了(雖然我是使用yay的),升級過程中會連內核一起升級,但不會立刻生效,通常要等到下次重啟時才會生效。
因為此前使用的是有一點激進的linux內核,而不是linux-lts,所以在國慶節前的某一次不知名的升級中,就出了岔子,然而當時什麼都沒發現,節後回到公司才發現開機後螢幕不亮了?
調查過程
雖然背景中提到了是因為內核的原因,但在剛發現螢幕不亮時是不知道原因的,只知道屏是黑的,滑鼠鍵盤沒有反應,慌作一團。
好在平時會使用ssh遠程辦公,拿出surface檢查了一下發現還能連上,略微放心。
冷靜下來後開始按順序排查,首先排除了硬體線路問題。
然後用journalctl查了一下各個服務啟動的日誌,看起來一切正常。
嘗試禁用sddm,再重啟試圖進入字元介面,依然失敗,看來不是gui的問題,也不是哪個服務啟動的問題。
之後使用dmesg查看kernel日誌,在日誌中發現了一行驅動掛掉的資訊:
[ 3.507498] RIP: 0010:drm_calc_vbltimestamp_from_scanoutpos+0x30c/0x350 [drm]
現在發現是驅動問題了,然而怎麼解決並不知道,詢問了其他用arch的前輩後,得到了換成lts內核的建議,總之先試試……
更換內核操作步驟
- 安裝linux-lts 和 linux-lts-headers 這兩個包,直接pacman即可
- 在/boot/loaders/entries裡面,複製出arch.conf的文件到arch-lts.conf(也可能叫linux.conf,名字不重要)
- 編輯剛剛複製出來的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.reboot
這些編輯可以直接用root許可權操作,不需要額外配置文件許可權
至於以後……
總之現在問題解決了,之後我大概會長期使用lts版本了吧,反正日常工作用的電腦,穩一點比較重要。
另外……感覺自己好像獲得了一個成就,我終於把自己的arch滾掛了一次(雖然不是什麼大問題)