当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

我做了一件蠢事……我忘记了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 linuxlinux命令会失败。

如上所述,唯一的另一种方法是启动Live CD并在chroot到’broken’系统后重新安装grub2。

次佳解决方法

以下是一些帮助解决引导错误的一般和基本说明,例如GRUB loading stage 1.5 error 15(例如,在不同磁盘驱动器上安装Windows之后):

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

  2. 使用以下命令打开终端,并使用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安装位置。

第三种解决方法

  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

第四种方法

我升级系统时遇到了同样的问题。

我建议采取以下简单步骤:

  1. 使用ubuntu live CD或live USB启动系统。

  2. 打开终端并运行命令sudo add-apt-repository ppa:yannubuntu /boot-repair&& sudo apt-get更新

  3. 然后运行命令sudo apt-get install -y boot-repair&& boot-repair

  4. 安装后启动引导修复。例如,从菜单中,使用System->Administration->Boot-Repair(仅限Ubuntu 10.04)并按照说明操作。可能需要15-20分钟才能找出问题并进行修复。

要获得更多帮助,请访问链接https://help.ubuntu.com/community/Boot-Repair

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2497.html,未经允许,请勿转载。