重新安装 Windows 后,我尝试恢复 grub,因此我挂载了安装了 ubuntu 的分区,但得到以下信息:
$ sudo mount /dev/sda3 /mnt
mount: you must specify the filesystem type
所以我做了
$ sudo mount -t ext4 /dev/sda3 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
然后我尝试了坏超级块的解决方案:
$ sudo e2fsck -f /dev/sda3
e2fsck 1.42.9 (4-Feb-2014)
e2fsck: Attempt to read block from filesystem resulted in short read while trying
to open /dev/sda3
Could this be a zero-length partition?
$ sudo dumpe2fs /dev/sda3|grep -i superblock
dumpe2fs 1.42.9 (4-Feb-2014)
dumpe2fs: Attempt to read block from filesystem resulted in short read while
trying to open /dev/sda3
Couldn't find valid filesystem superblock.
$ sudo mke2fs -n /dev/sda3
mke2fs 1.42.9 (4-Feb-2014)
mke2fs: inode_size (128) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i)
or lower inode count (-N).
编辑2:并按照Android Dev建议的(同样使用8193)
$ sudo e2fsck -f -b 32768 -y /dev/sda3
e2fsck 1.42.9 (4-Feb-2014)
e2fsck: Invalid argument while trying to open /dev/sda3
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
那么这里发生了什么?我的 parted -l 如下所示:
$ sudo parted -l
Model: ATA SAMSUNG HM321HI (scsi)
Disk /dev/sda: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 106MB 105MB primary ntfs boot
2 106MB 231GB 231GB primary ntfs
3 231GB 320GB 89.4GB extended
5 256GB 258GB 1991MB logical linux-swap(v1)
6 258GB 320GB 62.4GB logical ext4
我注意到(感谢 oldfred)分区 sda4(安装 ubuntu 的位置)丢失了!在 231GB 和 256GB 之间,sda6 是我的 /home。我以前有 2 个 Windows 分区,当我重新安装时,我只在一个分区中安装了它,所以 ubuntu 分区以前可能从 sda4 到 sda7(但不确定)。这与问题有关吗?
我的选择是使用 testdisk 恢复该分区或重新安装 ubuntu,但我想问问是否有人知道其他解决方案。
我读过类似的问题,但没有一个提供与 testdisk 不同的解决方案,而且我不确定这是否是我的问题。
编辑1:
“sudo update-grub”的输出为
/usr/sbin/grub-probe: error: failed to get canonical path of `/cow'.
类似于 sudo grub-install /dev/sda3:
$ sudo grub-install /dev/sda3
Installing for i386-pc platform.
grub-install: error: failed to get canonical path of `/cow'.
编辑3(解决方案):
为了防止其他人遇到此问题,我使用 parted rescue 恢复了丢失的分区,正如 oldfred 在评论中建议的那样。他的解决方案可在此链接中找到(帖子 21 和 22)
http://ubuntuforums.org/showthread.php?t=1775331&page=3
为了重新安装 grub,我按照以下步骤操作:
$ sudo mount /dev/sda7 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo chroot /mnt
# grub-install --recheck /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
其中 sda7 是恢复的分区。运行正常。
来源(西班牙语):http://www.taringa.net/post/linux/18583092/Como-recuperar-Grub-despues-de-instalar-Windows.html
答案1
不需要挂载分区。
sudo grub-install /dev/XXX
编辑由于是双启动,XXX 应该是第一个扇区,例如:/dev/sda
编辑2:您的文件系统可能略有损坏。您可以尝试此命令(免责声明!A:来自这里,B:请备份!):sudo e2fsck -f -b 32768 -y /dev/xxx1
来源:https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows
安装位置的来源:我应该在哪里安装 grub?
答案2
您的问题不是 GRUB 问题;您至少丢失了一个分区,可能是因为微软的磁盘分区软件(在 Windows 重新安装期间使用)存在一些严重的错误,当磁盘包含逻辑分区时可能会导致此问题。
您可以使用TestDisk 程序。不过,您应该谨慎行事;这种类型的恢复操作并非毫无风险,尤其是当非专家尝试恢复分区时。您可能需要阅读有关 MBR 数据结构的 Wikipedia 文章以及 TestDisk 说明,然后再继续。这个网站上也有很多关于 TestDisk 的问题和答案,但快速搜索后发现没有什么真正简洁的内容。
恢复 Ubuntu 分区后,您可以重新安装 GRUB。请注意,分区号可能已更改,因此不要/dev/sda3
像初次尝试恢复时那样盲目尝试使用。