使用 grubrescue 恢复已移动的 .mod 文件

使用 grubrescue 恢复已移动的 .mod 文件

我做了一件蠢事...我忘了 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的目录。vmlinuzvmlinuz-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 后):

  1. 使用 LiveDVD(例如 Ubuntu 桌面磁盘)启动。

  2. 打开终端,并使用以下命令重写 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

  1. 启动到 Live CD

  2. 打开终端(CTRL+ALT+T)

  3. 输入以下命令:

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。

相关内容