Arch Linux升级系统内核后无法启动的处理

个人感觉Arch Linux是比较激进的一个发行版。早早将Python的默认版本升级到3.0,对待内核也是不留余地。内核文件不区分版本号,都叫kernel26.img,因此每次升级内核,都会将老内核文件覆盖。一旦新内核有问题,麻烦就大了。

今天一开机,习惯性的pacman -Syu,和往常一样,有若干软件包需要升级,直接确认升级。最后才注意到内核也升级了。重启后,卡在加载Alsa的那一步,无法进入系统。折腾了一上午,以下方法可以避免重装。

  • Arch Linux还是给自己留了一条后路。系统一般安装了lts版(应该是长期支持版本)的内核,也就是kernel-lts.img和vmlinuz26-lts,都在/boot目录下。如果没有安装这个包,建议立即安装,以备不时之需。可以在系统启动时,修改启动参数,选择使用lts版内核。Grub菜单出现后,按e修改启动参数,将kernel26.img换成kernel26-lts.img,将vmlinuz26换成vmlinuz26-lts,按b启动即可。或者在系统还是正常的时候,修改/boot/grub/menu.lst文件增加一个使用lts内核的启动项。

  • 如果已经进不了系统,也没有安装lts内核,用Arch Linux系统盘启动或者其他方式启动,想办法加载原系统的/分区,修改/etc/rc.conf文件,将启动时报错的服务禁用后重启。我这次是alsa和hal与新内核不兼容,重启后进入系统。

  • 后来在Arch Linux的wiki上看到另外一个方法:https://wiki.archlinux.org/index.php/Kernel_Panics_(%e7%ae%80%e4%bd%93%e4%b8%ad%e6%96%87),但是我自己还没有尝试。

为了防止以后出现类似问题,可以将kernel26和kernel26-headers加入pacman.conf的忽略包列表,这样在使用pacman -Syu时,这两个包就不会被升级了。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。