Fork me on GitHub

修复Ubuntu系统内核崩溃错误

@author: zhanjzh

前景说明:

在安装Nvidia显卡时尝试降级内核失败,导致系统崩溃
笔记本电脑配置为:msi 电脑,GTX 1050 ti,
对Ubuntu下安装显卡感兴趣的可以参考我另一篇博客

修复步骤

自行准备 Live-cd,实际上就是当初装系统用的启动盘。

首先,进入Live-cd

1
sudo fdisk -l

列出磁盘信息,根据文件系统和分区大小判断出 根目录 / 所在分区
例如我的就是 /dev/sda3

之后挂载根目录以及旗下的一系列目录:

1
2
3
4
5
sudo mount /dev/sda3 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo cp /etc/resolv.conf /mnt/etc

之后,如果你的boot目录是自己额外分区的(一般不会,但是我当初安装时搞事情额外分区了)
那么你就需要再找到boot目录对应的分区,例如我的分区就是 /dev/sda5.
若你额外分区之后又没有挂载,那么接下来的命令你可能会失败。

使用chroot命令进入系统

1
sudo chroot /mnt

—— 分割线 ——-

Attention!

这时请注意,通过命令

1
ls /boot/

查看boot目录下是否有系统启动需要的内核,例如:
vmlinuz-4.0.15-22-generic
这样的东西,若没有需要自己重新安装,或者使用命令:

1
sudo apt-get install linux-image-generic

安装完毕之后,请确保执行下列命令:

1
update-grub

可以说这条命令是修系统的核心了,若没有执行这条命令,grub的配置
文件就不会被修改,就算前面做了再多也是无用功。
之后,

1
2
3
4
5
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt

PS: 如果你跟我一样自己额外挂载了boot目录,那么你首先需要卸载 /mnt/boot
在执行 sudo umount /mnt 之前需要执行:

1
sudo umount /mnt/boot

然后,推荐关机之后再重启,因为你需要时间拔掉你的live-cd。

这时,进入引导项后,grub就应该找得到你的内核,不会再出现如下错误:

1
2
error: file '/vmlinuz-4.15.0-22-generic' not found  
error: you need to load the kernel first

如果此时你的windows启动项不见了请不用慌张,进入Ubuntu系统或者
Advance ubuntu 选项,使用recovery mode 进入系统,总之进入Ubuntu系统后
再次执行:

1
sudo update-grub

命令。然后重启,可以看到一切恢复正常。

参考了网上的教程以及论坛里的分析,根据自己系统的实际情况编写此教程,