Grub 救援 - 错误:未知文件系统

Grub 救援 - 错误:未知文件系统

我设置了一个多重引导系统。该系统有三个驱动器。多重引导配置了 Windows XP、Windows 7 和 Ubuntu - 全部位于第一个驱动器上。驱动器上还剩下大量未分区空间,我保留这些空间用于将来添加其他操作系统和存储文件。

有一天,我继续下载分区向导,并在 Windows 7 中创建了一个逻辑 NTFS 分区,仍然有一些未分区的空间。一切都运行正常,直到几天后我重新启动计算机。

现在我得到:

error: unknown filesystem.  
grub rescue>

首先,我很惊讶没有找到任何类型的帮助命令,通过尝试:

help?man--help-hbashcmd, ETC。

现在我被无法启动的系统困住了。我开始研究这个问题,发现人们通常建议启动到 Live CD 并从那里修复问题。有没有办法在 grub rescue 中修复这个问题,而不需要 Live CD?

更新

按照以下步骤保留输入到 GRUB 救援的命令,我能够启动到 initramfs 提示符。但除此之外就没有什么可做的了。

到目前为止,阅读手册grub 救援,我能够使用ls命令查看我的驱动器和分区。对于第一个硬盘,我看到以下内容:
(hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)

我现在知道 (hd0,msdos6) 包含 Linux,因为它ls (hd0,msdos6)/列出了目录。其他会给出“错误:未知文件系统”。

更新2

执行以下命令后,我现在进入启动菜单并可以启动 Windows 7 和 Ubuntu,但重新启动时我必须重复这些步骤。

ls
ls (hd0,msdos6)/
set root=(hd0,msdos6)
ls /
set prefix=(hd0,msdos6)/boot/grub
insmod /boot/grub/linux.mod
normal

更新 3

谢谢 Shashank Singh,根据您的指示,我已将步骤简化为以下步骤。我从您那里了解到,我可以用 6 替换 msdos6,并且我只需执行 即可insmod normalinsmod /boot/grub/linux.mod现在我只需要弄清楚如何在 grub 内部保存此设置,而无需启动任何操作系统。

set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal

更新 4

嗯,这似乎是启动 Linux 的必要条件。启动 Ubuntu 后,我执行了手动的

sudo update-grub
sudo grub-install /dev/sda

这并没有解决问题。我仍然收到 grub 救援提示。我需要做什么才能永久修复它?

我还了解到,对于某些命令,hd0 中的驱动器号需要转换为 /dev/sda 中的驱动器号。hd1 将是 sdb,hd2 将是 sdc,依此类推。grub 中列出的分区(hd0,msdos6)将转换为 /dev/sda6。

更新 5

我不明白为什么下面没有修复 grub:

sudo update-grub
sudo grub-install /dev/sda

所以我下载了启动修复根据以下回答https://help.ubuntu.com/community/Boot-Repair帖子。在我选择“推荐修复(修复最常见的问题)”选项后,这似乎起了作用。

答案1

我不明白为什么下面没有修复 grub:

sudo update-grub
sudo grub-install /dev/sda

所以我下载了启动修复根据以下回答保留输入到 GRUB 救援的命令帖子。在我选择“推荐修复(修复最常见的问题)”选项后,这似乎起了作用。

我也用过Grub 定制器自定义启动项的顺序。

答案2

使用:

  1. set prefix=(hdX,Y)/boot/grub。使用之前确定的值。
    示例:如果 Ubuntu 系统在 sda5 上,请输入:
    set prefix=(hd0,5)/boot/grub
  2. set root=(hdX,Y)。 例子:set root=(hd0,5)
  3. insmod normal. 尝试加载正常模块。
  4. normal

我们基本上需要 GRUB 知道/boot/grub文件夹在哪里。如果这不起作用,我想从启动 CD 安装 GRUB 是一个不错的选择。

答案3

此问题还有另一个原因。在这个特定情况下,GRUB 不知何故损坏,需要修复或重新安装。但是,如Grub 救援失败,出现“启动修复”错误“未知文件系统”,也可能是安装 GRUB 的根分区已损坏。要修复此问题:

这是一个可行的解决方案,但最好不要使用,以免根分区进一步损坏。运行命令fsck -t ext4 /dev/sda1,此程序会尝试搜索并修复损坏的文件系统上的错误。将 sda1 替换为您的实际根分区。将 ext4 替换为实际文件系统;您必须了解文件系统,否则分区将进一步损坏。请参阅修复损坏的文件系统了解更多信息。


虽然这个问题有答案,但还有另一种方法可以解决这个问题,这种方法对我来说很有效。视频中解释了这些步骤Grub Rescue - 新手指南简而言之,它将完全重新安装 GRUB 2,而不是修复它。

因为观看这个视频太痛苦了,所以我将在下面列出步骤(无论观看视频有多痛苦,我都应该这样做)

  1. 启动 Ubuntu 的实时会话。视频使用的是实时 CD,而我使用的是实时 USB。我确保实时 USB 中的 Ubuntu 版本与我硬盘上的版本相同。
  2. 找到根分区的安装位置。在视频中,用户使用 Nautilus 浏览已安装的每个驱动器。它使用一长串数字和字符进行安装。如果是这种情况,请按照以下步骤重新安装分区。否则,请继续执行步骤 5。
  3. Ctrl使用++调出终端AltT并使用mount命令查找分区的名称。
  4. 安装分区。在媒体文件夹中创建一个新文件夹。sudo mkdir /media/ubuntu然后只需将您的分区安装到该文件夹​​即可。其中的sudo mount /dev/sdxx /media/ubuntu位置在步骤 3 中确定。xxsdxx
  5. 将以下目录从您的 Live CD/USB 根目录绑定到您的 Ubuntu 版本根目录。目录为 和dev procsys使用以下命令执行此操作:

    sudo mount --bind /dev /media/ubuntu/dev
    sudo mount --bind /sys /media/ubuntu/sys
    sudo mount --bind /proc /media/ubuntu/proc
    
  6. 将根目录更改为 Ubuntu 分区上的目录。sudo chroot /media/ubuntu/

  7. 完成上述操作后,再次安装 GRUB 2 会将其安装到 Ubuntu 发行版的根目录中,而不是实时 CD/USB 的根目录中。因此,继续运行sudo grub-install /dev/sdx

这就是使用实时 CD/USB 修复 GRUB 的方法。此方法由 YouTube 用户 crazytechzone 开发。

答案4

在 Ubuntu 中安装 Boot-Repair

  1. 在 Ubuntu live-CD 或 live-USB 上启动您的计算机。

  2. 选择“试用 Ubuntu”

  3. 连接互联网

  4. 打开一个新的终端(Ctrl++ ),然后输入:AltT

    sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
    
  5. Enter

  6. 然后输入:

    sudo apt-get install -y boot-repair && boot-repair
    
  7. Enter

使用启动修复

在此处输入图片描述

建议修复

  1. 从以下任一方式启动 Boot-Repair:

    a. Dash(屏幕左上角的 Ubuntu 徽标)

    b. 或者系统->管理->启动修复菜单(仅限 Ubuntu 10.04)

    c. 或者在终端中输入“boot-repair”

  2. 然后点击“建议修复”按钮。修复完成后,记下纸上显示的 URL(paste.ubuntu.com/XXXXX),然后重新启动并检查是否恢复了对操作系统的访问。

  3. 如果修复不成功,请通过电子邮件或论坛向帮助您的人指出 URL。

相关内容