标签归档:linux

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时,这两个包就不会被升级了。

备忘:ydict, garlicsim, funtoo

  • ydict: 是使用Yahoo在线字典查单词的命令行工具,其实就是一个Python脚本。和那个调用dict.cn的脚本是类似的,功能更完善。
  • GarlicSim: 是一个开源的计算机仿真平台。
  • funtoo: 是一个基于Gentoo的Linux发行版。这不是重点,我感兴趣的是它的主页上有一个Linux Core Concepts的教程,包括Linux核心概念,Bash,Awk,Sed等,看上去很不错不错。