内核更新后Ubuntu无法启动
在更新到最新的内核(2.6.32-31-generic)之后,当我启动我的PC时,我得到的只是grub2提示符。 我没有任何错误,它很简单不会启动。
我试过这个https://help.ubuntu.com/community/Grub2#Boot%20a%20Specific%20Kernel%20手动,但我的问题似乎是/ boot在一个单独的分区上,教程不包括这部分。
如果我可以启动,我想我可以做grub-update,但首先我需要进入。
我有Ubuntu 10.04,但我认为这是一个与grub相关的问题,linux版本无关紧要。
请帮忙,谢谢!
我可以按照以下说明多次恢复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 -Th
寻找正确的磁盘大小和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-install / dev / sdX
10)validation安装(使用正确的设备,例如sda。不要指定分区):
sudo grub-install --recheck / dev / sdX
11)退出chroot:键盘上的CTRL-D
12)卸载虚拟文件系统:
sudo umount / mnt / dev / pts sudo umount / mnt / dev sudo umount / mnt / proc sudo umount / mnt / sys
13)如果你安装了一个单独的/ boot分区:
sudo umount / mnt / boot
14)卸载LiveCD的/ usr目录:
sudo umount / mnt / usr
15)卸载最后一个设备:
sudo umount / mnt
16)重新启动。
sudo重启
“
经过一些搜索,我发现了我真正想要的东西,这解决了我的问题。 本文解释了如果/ boot和/位于不同的分区上,如何手动启动: http : //ubuntuaddict.com/ubuntu-how-to-boot-from-a-grub2-prompt-when-there-are-separate-引导和分区/
在我的情况下,我在sda7和/ sda8上启用了/ boot,所以这些命令对我有用:
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-grub
和update-grub2
,实际上是同一个脚本/usr/sbin/grub-mkconfig
,但有不同的选项。 (参见update-grub2 --help
, cat /usr/sbin/update-grub
和cat /usr/sbin/update-grub2
)。
重启后一切正常:)
如果可以显示grub引导菜单,则不必从grub提示符引导旧内核。
启动时,按住左移。 这将打开Grub2启动菜单。 在最新的内核之前选择内核(从顶部开始的第三个菜单选项)并启动它。