![GRUB2 卡在救援控制台,所有分区均显示“未知文件系统”](https://linux22.com/image/1038314/GRUB2%20%E5%8D%A1%E5%9C%A8%E6%95%91%E6%8F%B4%E6%8E%A7%E5%88%B6%E5%8F%B0%EF%BC%8C%E6%89%80%E6%9C%89%E5%88%86%E5%8C%BA%E5%9D%87%E6%98%BE%E7%A4%BA%E2%80%9C%E6%9C%AA%E7%9F%A5%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E2%80%9D.png)
我在外部 USB 驱动器上安装了 Ubuntu 12.04,其中有一个 700GB 的 NTFS 分区,后面跟着新的 6GB ext4 分区和一个交换分区(全部是主分区)。GRUB MBR 也安装在外部硬盘上。
由于我的 BIOS 在启动时将外部驱动器作为第一个磁盘,因此我在安装之前移除了内置硬盘,以避免出现排序问题。
现在,当我从外部驱动器启动时,GRUB 卡在救援控制台,并显示错误“未知文件系统”。
grub rescue> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)
ls (hd0,<any of them>)/ gives me "unknown filesystem", thus also "insmod normal"
正如您上面所见,GRUB 似乎无法读取我的 Linux 分区?! 我该如何解决这个问题?
附加信息:
启动信息脚本说(这是再次使用内部驱动器,但这没有什么区别):
Grub2 (v1.99) 安装在 /dev/sdb 的 MBR 中,并在同一硬盘驱动器的第 1 扇区中查找 core.img。core.img 位于此位置并在此驱动器上查找 (,msdos2)/boot/grub。
sdb1: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows Vista/7: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files:
sdb2: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
sdb3: __________________________________________________________________________
File system: swap
Boot sector type: -
Boot sector info:
答案1
我也遇到过这个问题。但我找到了解决方法。
我的 USB 驱动器有第一个 430GB 的 NTFS 分区 (sdg1),后面跟着 10 GB 的 Linux 分区 (sdg2)(全部为主分区)。我在其中安装了 Ubuntu(或之后的 Trisquel),并出现了有关未知文件系统的相同错误。
这是因为在如此“大”的 NTFS 分区之后,grub 无法“看到”Linux 分区。我不知道 GRUB2 的确切限制,但我的 430GB 超过了这个限制。
解决方法如下:
将 grub 安装到 USB HDD,根目录位于 /dev/sdg1(NTFS 分区)。然后,您将在该分区的 /boot/grub/ 中看到 grub.cfg。
将内核和 inirtd 映像复制到 /dev/sdg1 处的 /boot/ubuntu/。
更改 grub.cfg 使根目录位于“hd0,msdos1”,并从 /boot/ubuntu/ 加载内核和 initrd。
完毕。
例如,这是我的 grub.cfg 条目:
menuentry 'Ubuntu' {
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
echo 'Loading Linux'
linux /boot/iubuntu/vmlinuz-3.5.0-17-generic root=UUID=erg7659b-ad4c-4f84-9ea0-6e9636768669 ro quiet splash
echo 'Loading initial ramdisk ...'
initrd /boot/iubuntu/initrd.img-3.5.0-17-generic
}
PS:此解决方法并不适用于每个发行版(例如 ArchBang)。
答案2
好的,sda 是你的硬盘,sdb 是 USB 吗?谢谢你的回复。我向很多人建议过这个,那就是刻录一张 SuperGrub 启动盘 CD。你从那里启动,它会为你提供一个操作系统列表供你选择。接下来试试这个。之后,如果你尝试从 Live CD 安装中检查这些分区的内容,会发生什么?它们现在可以读取吗?
答案3
我也遇到过同样的问题,我尝试了这里和其他得到充分回答的帖子中的大多数建议,但都没有成功。
我找到了一种更简单的方法来解决它,只是想与大家分享这个新发现的知识,因为我试图以一种过于复杂的方式解决这个问题。
因此,我的 NTFS 存储分区几乎有 2 Tb,如果我没记错的话,这对于 ext 文件系统来说太大了。有软件可以将分区及其所有数据实际移动到驱动器的后面。因此,您可以拆分它,移动存储的数据,并在驱动器的开头创建一个带有 ext3 或 ext4 或您选择的系统的新分区。这使得 Ubuntu 可以直接启动,没有任何麻烦。
我使用了 Minitool Partition Wizard Home 版本。我可以向你保证,数据被移动了,但并没有被擦除。我不知道 gparted 是否也会移动数据?
祝好,Carl-Magnus