我做了一件愚蠢的事……我忘记了Ubuntu 10.04(Lucid Lynx)切换到GRUB 2,这将大量的* .mod文件(内核模块)放入/boot/grub
。我以为它们是错误放置在其中的配乐文件,所以我将它们移动了。不用说,下次重新启动是很痛苦的。呈现给我的是我从未见过的东西……“ grub rescue>”提示。
借助Fixing GRUB错误:“错误:未知文件系统”,我得以恢复...
- 我发现GRUB救援除了其自己的'ls'变体之外,没有'cd','cp'或任何其他文件系统命令。
因此,首先我必须找到
/boot
包含vmlinuz
文件和其他引导映像文件的目录的分区... (失败尝试的内存近似值,为清晰起见,还有空白行,由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
我在partition上找到了一个
/boot
包含vmlinuz
文件的目录。vmlinuz-2.6.32-33-generic
(hd0,2)
然后,我从“ grub rescue>”提示符手动启动。以下命令将...
- 将设置
root
为使用/boot
partition上的目录(hd0,2)
。 - 加载内核模块
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> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX
,其中X
与分区/boot
,a.b.c-d
是内核版本。然后我的系统启动正常!谢谢!