昨天想把Ubuntu内核升级后多余的旧内核删除掉,可是不小心连同当前使用的内核一起删除了。这下系统没有了内核,更新后的grub启动列表里也没有了Ubuntu。问题貌似很严重。这时,最佳的解决方法应该是不关机,立刻安装新的内核。可是在那个瞬间我突然很二地想到,我要关机看看会出现什么情况。于是关机、重启,然后发现根本没有任何办法进入Ubuntu。彻底傻掉。
发现网上有些人和我遇到同样的问题,有的直接不淡定地重装了系统。其实还是有温和的解决方案的。
首先进入liveCD,然后将安装介质中的vmlinuz和initrd文件拷贝到原系统中。我所使用的是kubuntu 11.10,当初是U盘安装的。所需要的文件在安装U盘的casper文件夹中,名字是vmlinuz和initrd.lz。我将两个文件拷贝到原系统的/boot中。
然后重启,进入grub的命令行。执行接下来的Linux命令引导系统:
set root=(hd0,msdos9)
linux /vmlinuz root=UUID=xxx ro locale=zh_CN quiet splash
initrd /initrd.lz
boot
其中(hd0,msdos9)是/boot挂载的分区,具体的序号因人而异。而xxx表示/分区的uuid,可以执行ls -l查看所有的分区及其对应的uuid。
现在可以正常进入系统了。然后安装新的内核,替换掉刚才拷贝进来的山寨版。因为从安装包拷贝进来的内核版本低,缺少部分驱动(我的声卡驱动就有问题),并且日后更新升级可能会不正常。安装内核的方法有两种,一种直接从源安装
apt-get install linux-headers-x.x.x-xx #x代表版本号
apt-get install linux-image
另一种是从官网里下载内核的deb包进行安装。但是我使用这种方法安装后一直无法正常启动,可能是下载的版本不对吧,具体原因不详。
新内核安装完成后重启,系统就恢复了原样。
最后吐个槽。当初听说系统当前使用的内核是无法被删除的,删除时系统会报错。现在发现系统确实会发出警告,可是警告后内核文件照删不误,这个警告的意义未免小了点吧。