最初发布到 AskUbuntu.com ...
AskUbuntu采取了关闭政策有关 EOL(生命周期结束)版本的问题。还有一支声乐队伍来清除他们。为了防止可能丢失这个热门问题(迄今为止有 342335 次浏览),我在此处放置了修订版本。 --- 文档保存者
“经典”系统...
- 基于 Ubuntu 10.04 (Lucid Lynx) 的 Puppy Linux 5.2.8 (Lucid)
- GRUB 2引导装载程序
GRUB 2将许多*.mod
文件(内核模块)放入/boot/grub
.删除这些文件(认为它们是放错位置的声音文件)导致重新启动失败并提示grub rescue>
.
这种情况下如何恢复呢?
答案1
这个答案适用于 DocSalvager 的答案不起作用的其他人。
- 我按照 DocSalvager 的使用
ls
找到了正确的硬盘分区。就我而言,是的(hd0,msdos5)
。 然后我执行以下命令返回到正常的 grub 引导加载程序屏幕。
grub rescue> set boot=(hd0,msdos5) grub rescue> set prefix=(hd0,msdos5)/boot/grub grub rescue> insmod normal grub rescue> normal
启动到 Ubuntu 后,我使用终端中的以下命令修复了 grub 启动加载程序。
sudo grub-install /dev/sda
请参考这个来源直观地浏览这个过程。
答案2
从 grub 救援崩溃中恢复...
grub rescue>
不支持cd
,cp
或任何其他文件系统命令,除了它自己的变体,ls
它实际上是一种find
命令。因此,首先,必须找到
/boot
包含以下目录的分区vmlinuz
和其他启动映像文件...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
ls
不带参数返回该系统上的四个分区。ls (hd0,4)/boot
/boot
在分区 上找不到目录(hd0,4)
。ls (hd0,3)/boot
/boot
在分区 上找不到目录(hd0,3)
。ls (hd0,2)/boot
/boot
在分区上找到一个目录(hd0,2)
,它包含一个vmlinuz
和其他我们想要的启动映像文件。
要从
grub rescue>
提示符手动启动...grub rescue> set root=(hd0,2)/boot grub rescue> insmod linux grub rescue> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic grub rescue> initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic grub rescue> boot
- 设置
root
为使用/boot
分区上的目录(hd0,2)
。 - 加载 grub 模块
linux
。 - 设置该模块以使用内核映像
vmlinuz-2.6.32-33-generic
。 - 设置 initrd(init RAM disk) 以使用该映像
initrd.img-2.6.32-33-generic
。 - 启动Linux。
- 设置
这会启动到忙碌盒命令行提示符包含所有基本文件系统命令(然后还有一些!)。
然后可以将
*.mod
文件移回/boot/grub
目录...busybox> cd /boot busybox> mv mod/* grub busybox> reboot
重启成功!
也可以看看 ...