记一次arch滚挂后,更换lts内核
2019-10-08 23:23
1311 查看
背景
因为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滚挂了一次(虽然不是什么大问题)
相关文章推荐
- Ubuntu Grub2启动上一次正确启动的内核
- ubuntu更换内核版本
- 一次ubuntu 12.04LTS下安装linux-qq的安装历程
- PHP内核探索:一次请求的开始与结束
- QEMU更换内核后启动错误
- Linux kernel内核升级全过程,教你一次成功(2.4.20-8到2.6.18)
- Ubuntu更换内核方法
- Canonical发布适用于Ubuntu 18.04 LTS的Linux内核安全补丁,立即更新
- Ubuntu 14.04更换内核
- ubuntu 14.04 LTS 升级内核
- PHP内核探索:一次请求生命周期
- Windows驱动(3)-记一次内核模块导致蓝屏调试
- 使用HttpUrlConnection+Handler几秒钟更换一次信息,使用HttpClient+AsyncTask请求列表信息
- Ubuntu14.10更换内核(3.16.0-23换成3.17.6 )
- Ubuntu更换内核方法
- CentOS 7内核更换教程
- BBR ("Bottleneck Bandwidth and RTT") 性能提升测试(记一次ubuntu的内核kernel升级与测试)
- ubuntu16.04让内核编译一次过的方法
- 从内核启动到执行多个arch_initcall、late_initcall等的调用过程
- ubuntu14.04更换内核记录