Ubuntu误删当前内核后的修复方法

昨天想把ubuntu内核升级后多余的旧内核删除掉,可是不小心连同当前使用的内核一起删除了。这下系统没有了内核,更新后的grub启动列表里也没有了ubuntu。问题貌似很严重。这时,最佳的解决方法应该是不关机,立刻安装新的内核。可是在那个瞬间我突然很二地想到,我要关机看看会出现什么情况。于是关机、重启,然后发现根本没有任何办法进入ubuntu。彻底傻掉。

发现网上有些人和我遇到同样的问题,有的直接不淡定地重装了系统。其实还是有温和的解决方案的。

首先进入liveCD,然后将安装介质中的vmlinuz和initrd文件拷贝到原系统中。我所使用的是kubuntu 11.10,当初是U盘安装的。所需要的文件在安装U盘的casper文件夹中,名字是vmlinuz和initrd.lz。我将两个文件拷贝到原系统的/boot中。

然后重启,进入grub的命令行。执行下面的命令引导系统

1
2
3
4
5
6
7
 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。

现在可以正常进入系统了。然后安装新的内核,替换掉刚才拷贝进来的山寨版。因为从安装包拷贝进来的内核版本低,缺少部分驱动(我的声卡驱动就有问题),而且日后更新升级可能会不正常。安装内核的方法有两种,一种直接从源安装

1
2
3
apt-get install linux-headers-x.x.x-xx    #x代表版本号

apt-get install linux-image

另一种是从官网里下载内核的deb包进行安装。但是我使用这种方法安装后一直无法正常启动,可能是下载的版本不对吧,具体原因不详。

新内核安装完成后重启,系统就恢复了原样。

最后吐个槽。当初听说系统当前使用的内核是无法被删除的,删除时系统会报错。现在发现系统确实会发出警告,可是警告后内核文件照删不误,这个警告的意义未免小了点吧。