问题描述
我做了一件蠢事……我忘记了Ubuntu 10.04(Lucid Lynx)切换到GRUB 2,它在/boot/grub
中放入了大量* .mod文件(内核模块)。我以为它们是错误地放在那里的配乐文件,我移动了它们。毋庸置疑,下一次重启是创伤性的。我收到了一些我没有 memory 的东西……一个’grub rescue>’提示。
然而,在Fixing GRUB error: “error: unknown filesystem”的帮助下,我能够恢复……
-
我发现GRUB rescue没有’cd’,’cp’或任何其他文件系统命令,除了它自己的’ls’变体。
-
首先,我必须找到包含
vmlinuz
文件和其他启动映像文件的/boot
目录的分区…(从失败尝试的内存中近似,以及为清晰起见的空行,由docsalvage添加2014-07-10)grub rescue> ls (hd0,4) (hd0,3) (hd0,2) (hd0,1) grub rescue> ls (hd0,4)/boot ... some kind of 'not found' message grub rescue> ls (hd0,3)/boot ... some kind of 'not found' message grub rescue> ls (hd0,2)/boot ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic
-
我在分区
(hd0,2)
上找到了一个/boot
目录,其中包含vmlinuz
文件vmlinuz-2.6.32-33-generic
。 -
然后我从’grub rescue>’提示符手动启动。以下命令将…
-
将
root
设置为使用分区(hd0,2)
上的/boot
目录。 -
加载内核模块
linux
。 -
将该模块设置为使用内核映像
vmlinuz-2.6.32-33-generic
。 -
设置initrd(初始化RAM磁盘)以使用映像
initrd.img-2.6.32-33-generic
。 -
启动Linux。
-
-
grub rescue> set root=(hd0,2)/boot grub rescue> insmod linux grub rescue> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2 grub rescue> initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic grub rescue> boot
-
这会引导并崩溃到BusyBox提示符,该提示符有一些基本的文件系统命令。
-
然后我将* .mod文件移回
/boot/grub
目录……busybox> cd /boot busybox> mv mod/* grub busybox> reboot
-
重启是成功的,但这是很多工作。
有没有更简单的方法?
最佳解决方法
不,我认为您几乎找到了使用grub rescue从系统状态恢复的最简单方法;它是一个非常简约的系统,提供足够的能力来启动系统。
顺便说一下,我相信您必须找到.mod
文件并执行insmod linux
或linux
命令会失败。
如上所述,唯一的另一种方法是启动Live CD并在chroot到’broken’系统后重新安装grub2。
次佳解决方法
以下是一些帮助解决引导错误的一般和基本说明,例如GRUB loading stage 1.5 error 15
(例如,在不同磁盘驱动器上安装Windows之后):
-
使用LiveDVD(例如,Ubuntu桌面磁盘)启动。
-
使用以下命令打开终端,并使用grub配置re-write:
-
sudo mount /dev/sdXY /mnt
-
sudo grub-install --root-directory=/mnt /dev/sdX
-
其中/dev/sdX
是安装Ubuntu的磁盘,而/dev/sdXY
是安装Ubuntu的磁盘上的分区。换句话说,/dev/sdXY
含有/boot
等。
使用fdisk -l
验证Ubuntu安装位置。
第三种解决方法
-
启动到Live CD
-
开放式终端(CTRL + ALT + T)
-
输入以下命令:
sudo fdisk -l
并找到你的Ubuntu分区(如果它是第一个分区应该是/dev /sda1)
sudo mount /dev/sda1 /mnt
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
现在重新安装Grub2
sudo apt-get install --reinstall grub2
第四种方法
我升级系统时遇到了同样的问题。
我建议采取以下简单步骤:
-
使用ubuntu live CD或live USB启动系统。
-
打开终端并运行命令sudo add-apt-repository ppa:yannubuntu /boot-repair&& sudo apt-get更新
-
然后运行命令sudo apt-get install -y boot-repair&& boot-repair
-
安装后启动引导修复。例如,从菜单中,使用
System->Administration->Boot-Repair
(仅限Ubuntu 10.04)并按照说明操作。可能需要15-20分钟才能找出问题并进行修复。
要获得更多帮助,请访问链接https://help.ubuntu.com/community/Boot-Repair