Grub 救援失败,出现“启动修复”错误“未知文件系统”

Grub 救援失败,出现“启动修复”错误“未知文件系统”

系统崩溃(由硬重启引起)后,我的 Ubuntu Linux 无法启动,现在显示:

error: uknown filesystem
grub rescue>

我尝试过的解决方案:

grub rescue>ls
(hd0) (hd0,msdos5) (hd0) (hd0,msdos1)
grub rescue>ls (hd0,msdos5)
error: uknown filesystem
grub rescue>ls (hd0,msdos1)
error: uknown filesystem

因此,我无法列出/找到我的 Linux 文件系统,,,

我决定尝试安装在 Ubuntu live USB 上的 Boot Repair,但没有建议修复按钮,没有高级选项只有一个按钮,创建 BootInfo 摘要

我尝试在最新的 Ubuntu 实时版本和 Linux Secure Remix 上使用 BootRepair,它们都是在 USB 上烘焙的实时版本 - 结果相同。

Linux Secure Remix 上的 OS-Uninstaller 也指出未找到/安装操作系统。

我在另一台电脑上尝试了同样的 Linux Secure Remix,至少有建议修复。所以我认为问题出在我的 HDD 或 MBR 上。

收到一些回复后,我尝试

root@ubuntu:/home/ubuntu# sudo fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xebd671ce

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   302815231   151406592   83  Linux
/dev/sda2       302817278   312580095     4881409    5  Extended
/dev/sda5       302817280   312580095     4881408   82  Linux swap / Solaris

Disk /dev/sdb: 8021 MB, 8021606400 bytes
110 heads, 46 sectors/track, 3096 cylinders, total 15667200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x04030201

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *       10392    15667199     7828404    b  W95 FAT32

root@ubuntu:/home/ubuntu# sudo mount /dev/sda1 /mnt
mount: you must specify the filesystem type

root@ubuntu:/home/ubuntu# blkid
/dev/loop0: TYPE="squashfs" 
/dev/sda5: UUID="ce99d1c7-16fd-4b60-b0af-af6a14b8bdbe" TYPE="swap" 
/dev/sdb1: LABEL="DANAIL" UUID="4ED6-708D" TYPE="vfat" 

我尝试了不同的类型:ext3、ext4、vfat 和 auto,但所有类型的结果都相同:

root@ubuntu:/home/ubuntu# sudo mount -t ext4 /dev/sda1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sda1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

root@ubuntu:/home/ubuntu# dmesg | tail
[ 2424.052221] SQUASHFS error: Can't find a SQUASHFS superblock on sda1
[ 2620.531816] EXT4-fs (sda1): VFS: Can't find ext4 filesystem
[ 2626.204025] EXT3-fs (sda1): error: can't find ext3 filesystem on dev sda1.
[ 2626.208650] EXT4-fs (sda1): VFS: Can't find ext4 filesystem
[ 2626.208938] FAT-fs (sda1): bogus number of reserved sectors
[ 2626.208943] FAT-fs (sda1): Can't find a valid FAT filesystem
[ 2626.209377] SQUASHFS error: Can't find a SQUASHFS superblock on sda1
[ 2635.692959] EXT2-fs (sda1): error: can't find an ext2 filesystem on dev sda1.
[ 2644.614887] FAT-fs (sda1): bogus number of reserved sectors
[ 2644.614894] FAT-fs (sda1): Can't find a valid FAT filesystem

root@ubuntu:/home/ubuntu# mount
/cow on / type overlayfs (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
/dev/sdb1 on /cdrom type vfat (ro,noatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/loop0 on /rofs type squashfs (ro,noatime)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
gvfsd-fuse on /run/user/ubuntu/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=ubuntu)

fsck最后我发现解决方案是在损坏的系统上运行/dev/sda1。问题出在文件系统上,而不是 grub 上。这就是 grub 无法看到文件系统的原因。谢谢!

答案1

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


虽然这个问题有答案,但还有另一种方法可以解决这个问题,而且对我有用。这个痛苦的视频解释了这些步骤:http://www.youtube.com/watch?v=ZcbTgMKpVHQ。简而言之,它将完全重新安装 Grub2,而不是修复它。

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

  1. 启动 Ubuntu 的实时会话。视频使用的是实时 CD,而我使用的是实时 USB。我确保实时 USB 上的 Ubuntu 版本与我硬盘上的 Ubuntu 版本相同。
  2. 找到根分区的安装位置。在视频中,用户使用 nautilus 浏览已安装的每个驱动器。它使用一长串数字和字符进行安装。如果是这种情况,请按照以下步骤重新安装分区。否则,请继续执行步骤 5。
  3. ctrl使用++调出终端altT并使用mount命令查找分区的名称。
  4. 安装分区。在您的媒体文件夹中创建一个新文件夹。然后简单地将sudo mkdir /media/ubuntu您的分区安装到该文件夹​​。在步骤 3 中确定sudo mount /dev/sdxx /media/ubuntuxxsdxx
  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. 完成上述操作后,再次安装 Grub2 会将其安装到 ubuntu 发行版的根目录中,而不是 live cd/usb 的根目录中。因此,继续运行sudo grub-install /dev/sdx

这就是使用 live-cd/usb 修复 grub 的方法。此方法由 youtube 用户 crazytechzone 开发。

答案2

您的parted -l输出清楚地表明您的启动分区是 /dev/sda1。某些不错的 GUI 应用程序可能无法识别它来修复 grub。

最简单的解决方案是通过命令行重新安装 grub。按照给出的命令这一页,您很快就能开始运行。请记住,/dev/sda1在页面使用 的地方使用/dev/sdax

相关内容