系统崩溃(由硬重启引起)后,我的 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,而不是修复它。
因为观看这个视频太痛苦了,所以我将在下面列出步骤(无论观看视频有多痛苦,我都应该这样做)
- 启动 Ubuntu 的实时会话。视频使用的是实时 CD,而我使用的是实时 USB。我确保实时 USB 上的 Ubuntu 版本与我硬盘上的 Ubuntu 版本相同。
- 找到根分区的安装位置。在视频中,用户使用 nautilus 浏览已安装的每个驱动器。它使用一长串数字和字符进行安装。如果是这种情况,请按照以下步骤重新安装分区。否则,请继续执行步骤 5。
ctrl
使用++调出终端alt
,T
并使用mount
命令查找分区的名称。- 安装分区。在您的媒体文件夹中创建一个新文件夹。然后简单地将
sudo mkdir /media/ubuntu
您的分区安装到该文件夹。在步骤 3 中确定sudo mount /dev/sdxx /media/ubuntu
。xx
sdxx
将以下目录从您的 live cd/usb 的根目录绑定到您的 Ubuntu 版本的根目录。目录是 和
dev
proc
。sys
使用以下命令执行此操作:sudo mount --bind /dev /media/ubuntu/dev sudo mount --bind /sys /media/ubuntu/sys sudo mount --bind /proc /media/ubuntu/proc
将根目录更改为 ubuntu 分区上的目录。
sudo chroot /media/ubuntu/
- 完成上述操作后,再次安装 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
。