我做了一件蠢事...我忘了 Ubuntu 10.04 (Lucid Lynx) 已经切换到GRUB 2 会将大量的 *.mod 文件(内核模块)放入其中/boot/grub
。我以为它们是错误放入的音轨文件,所以我移动了它们。不用说,下一次重启是痛苦的。我看到了一些我从未见过的东西……“grub rescue>”提示符。
在...的帮助下修复 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
我在分区上找到了一个包含该文件
/boot
的目录。vmlinuz
vmlinuz-2.6.32-33-generic
(hd0,2)
然后我从“grub rescue>”提示符手动启动。以下命令将...
- 设置
root
为使用/boot
分区上的目录(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
重启成功,但是需要做大量工作。
有更容易的方法吗?
答案1
以下是一些帮助解决启动错误的常规基本说明,例如GRUB loading stage 1.5 error 15
(例如在不同的磁盘驱动器上安装 Windows 后):
使用 LiveDVD(例如 Ubuntu 桌面磁盘)启动。
打开终端,并使用以下命令重写 grub 配置:
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 安装位置。
答案2
不。我认为你几乎找到了最简单的方法来恢复你的系统状态grub 救援;这是一个非常简约的系统,仅提供足够的功能来启动系统。
顺便说一句,我相信您一定已经找到了.mod
文件并执行了insmod linux
,否则linux
命令就会失败。
如上所述,唯一的其他方法是启动 Live CD,然后在 chroot 到“损坏的”系统后重新安装 grub2。
答案3
启动到 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
答案4
您可以启动 Live CD,挂载硬盘,以 root 身份打开 nautilus 并将这些文件复制到 /boot。