内核更新后 Ubuntu 无法启动

内核更新后 Ubuntu 无法启动

更新到最新内核 (2.6.32-31-generic) 后,当我启动 PC 时,只出现 grub2 提示。没有出现任何错误,只是无法启动。

我试过这个https://help.ubuntu.com/community/Grub2#Boot%20a%20Specific%20Kernel%20Manually但我的问题似乎是 /boot 在单独的分区上,而本教程没有涵盖这部分。

如果我可以启动,我想我可以进行 grub 更新,但首先我需要进入。

我有 Ubuntu 10.04,但我认为这是一个与 grub 相关的问题,与 linux 版本无关。

请帮忙,谢谢!

答案1

我可以按照以下说明多次恢复 grub:https://wiki.ubuntu.com/Grub2#Recover

首先,你必须从 Live CD 启动系统。然后

方法 3 - CHROOT

此安装方法使用 chroot 命令来访问损坏的系统的文件。一旦发出 chroot 命令,LiveCD 就会将损坏系统的 / 视为自己的。在 chroot 环境中运行的命令将影响损坏系统的文件系统,而不会影响 LiveCD 的文件系统。

1) 启动 LiveCD 桌面(Ubuntu 9.10 或更高版本)。请注意,Live CD 必须与您正在修复的系统相同 - 32 位或 64 位(如果不是,则 chroot 将失败)。

2)打开终端——应用程序、附件、终端。

3)确定您的正常系统分区 - (开关是小写的“L”)

sudo fdisk -l  

如果你不确定,请运行

df-钍
查找正确的磁盘大小和 ext3 或 ext4 格式。4

) 挂载您的正常系统分区:

替换正确的分区:sda1、sdb5 等。

sudo mount /dev/sdXX /mnt  
# 示例:sudo mount /dev/sda1 /mnt

5) 仅当您具有单独的启动分区时:sdYY 是 /boot 分区名称(例如 sdb3)

sudo mount /dev/sdYY /mnt/boot

6)挂载关键虚拟文件系统:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

7)Chroot 到你的正常系统设备:

sudo chroot/mnt

8)如果没有 /boot/grub/grub.cfg 或者不正确,请使用以下命令创建一个

更新 grub

9)重新安装 GRUB 2:

替换正确的设备 - sda、sdb 等。不要指定分区号。

grub-安装/dev/sdX

10)验证安装(使用正确的设备,例如 sda。不要指定分区):

sudo grub-install --recheck /dev/sdX
11)退出 chroot:键盘上的 CTRL-D

12)卸载虚拟文件系统:

sudo 卸载 /mnt/dev/pts
sudo 卸载 /mnt/dev
sudo 卸载 /mnt/proc
sudo 卸载 /mnt/sys

13)如果您安装了单独的 /boot 分区:

sudo umount /mnt/boot

14)卸载 LiveCD 的 /usr 目录:

sudo 卸载 /mnt/usr

15)卸载最后一个设备:

sudo 卸载/mnt

16)重新启动。

sudo 重启

答案2

经过更多搜索后,我找到了我真正想要的东西,这解决了我的问题。本文解释了如果 /boot 和 / 位于不同的分区上,如何手动启动: http://ubuntuaddict.com/ubuntu-how-to-boot-from-a-grub2-prompt-when-there-are-separate-boot-and-partitions/

就我而言,/boot 在 sda7 上,/ 在 sda8 上,因此这些命令对我有用:

grub> set prefix=(hd0,7)/grub
grub> insmod linux
grub> set root=(hd0,8)
grub> linux (hd0,7)/vmlinuz-2.6.32-31-generic root=/dev/sda8 ro
grub> initrd (hd0,7)/initrd.img-2.6.32-31-generic
grub> boot

请注意:grub2 从 0 开始计数硬盘,从 1 开始计数分区。

这成功启动了我的 ubuntu,我在终端中输入:

sudo update-grub

我注意到实际上这是两个命令update-grubupdate-grub2,它们实际上是同一脚本的启动器/usr/sbin/grub-mkconfig,但具有不同的选项。(参见update-grub2 --helpcat /usr/sbin/update-grubcat /usr/sbin/update-grub2)。

重启后一切正常:)

答案3

如果您可以显示 grub 启动菜单,则无需从 grub 提示符启动旧内核。

启动时按住左移键。这将打开 Grub2 启动菜单。选择最新内核之前的内核(从顶部开始的第三个菜单选项)并启动它。

相关内容