SSD - Windows 8.1 最初在 GPT/EFI 中启动。使用 Gparted 缩小分区以创建用于 Ubuntu 安装的空间。还创建了 128MiB bios_grub 分区。安装了 Ubuntu 16.04(在带有 Grub 的传统 MBR 模式下)。一段时间内一切都很顺利,Windows 和 Ubuntu 都可以顺利启动。Windows 8 突然停止启动,但 Ubuntu 一切正常。当我使用 Windows USB 恢复时,一切都丢失了。什么都无法启动。我知道文件在那里,可以使用 foremost 等找到,但无法获取正确的文件名,文件夹结构丢失。
从 LiveUSB 启动以检查磁盘。并非所有分区都可见。只有前 3 个
/dev/sda1 2048 2050047 2048000 1000M Microsoft basic data
/dev/sda2 2050048 2582527 532480 260M Microsoft basic data
/dev/sda3 2582528 4630527 2048000 1000M Microsoft basic data
尝试了 Testdisk,过去我用它取得了不错的效果。然而 Testdisk 也无法找到我的所有分区。
使用 gdisk 重新创建了 sda7 之前的分区。现在 fdisk 仅报告 1 个分区。
$ sudo fdisk -l /dev/sda
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sda: 525.1 GB, 525112713216 bytes
255 heads, 63 sectors/track, 63841 cylinders, total 1025610768 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: 0xb7687035
Device Boot Start End Blocks Id System
/dev/sda1 1 1025610767 512805383+ ee GPT
$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1025610768 sectors, 489.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): -------------------
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1025610734
Partitions will be aligned on 2048-sector boundaries
Total free space is 612129757 sectors (291.9 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 2050047 1000.0 MiB 2700 Basic data partition
2 2050048 2582527 260.0 MiB EF00 EFI system partition
3 2582528 4630527 1000.0 MiB EF00 EFI system partition
4 4630528 4892671 128.0 MiB EF02
5 4892672 197482495 91.8 GiB 0700
6 197482496 397481983 95.4 GiB 8300
7 397481984 413482991 7.6 GiB 8200
原装 SSD 就是。
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: ---------------------
Device Start End Sectors Size Type
/dev/sda1 2048 2050047 2048000 1000M Microsoft basic data
/dev/sda2 2050048 2582527 532480 260M Microsoft basic data
/dev/sda3 2582528 4630527 2048000 1000M Microsoft basic data
/dev/sda4 4630528 4892671 262144 128M BIOS boot
/dev/sda5 4892672 197482495 192589824 91.9G Microsoft basic data
/dev/sda6 197482496 397481983 199999488 95.4G Linux filesystem
/dev/sda7 397481984 413482991 16001008 7.6G Linux swap
/dev/sda8 413485056 ????????? ???????? Approx 170G Microsoft basic data
/dev/sda8 ????????? 896514047 ???????? Approx 60G Linux filesystem
/dev/sda9 896514048 948942847 52428800 25G Microsoft basic data
/dev/sda10 948942848 976773119 27830272 13.3G Microsoft basic data
Originally sda8 was
/dev/sda8 413485056 896514047 483028992 230.3G Microsoft basic data
我非常希望“sda11”能恢复并可启动,但可以使用 sda11 中的文件进行管理。我的看法是,我认为 MBR 分区丢失是因为 Windows 恢复尝试将所有东西都设为 GPT/EFI。使用 gdisk 重新创建分区没有帮助,但窗口 NTFS 分区应该仍然可以安装。然而,这会抱怨 NTFS 签名丢失。Linux 分区 sda6 也是如此。
$ sudo mount /dev/sda5 mnt
mount: block device /dev/sda5 is write-protected, mounting read-only
NTFS signature is missing.
Failed to mount '/dev/sda5': Invalid argument
The device '/dev/sda5' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
还有没有一种方法可以只将分区标记为某个文件系统而不破坏数据。
答案1
您犯了一些根本性的错误,显然是由于一些误解造成的,所以我觉得有必要先解决这些问题。您写道:
现在 fdisk 仅报告 1 个分区。
对于 GPT 磁盘上使用的旧版本,这是正常现象fdisk
。GPT 的一部分是“保护性 MBR”,它基本上是一个 MBR 分区表,声明磁盘已被类型为 0xEE 的分区完全占用。保护性 MBR 的目的是防止 GPT 未知工具弄乱磁盘。它确实不是表明存在任何类型的损坏。您的 MBR 分区并未“丢失”(如您在其他地方所写),因为您从未有过 MBR 分区。
请注意,它fdisk
甚至告知了你它缺乏 GPT 意识,并告诉你该怎么做:
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.
(gdisk
也适用于 GPT 磁盘,并且其用户界面fdisk
比更相似。)parted
Windows 8.1 最初在 GPT/EFI 中启动。
我的看法是,我认为 MBR 分区丢失是因为 Windows 恢复尝试将所有内容都变成 GPT/EFI。
Windows 将其启动模式(BIOS/CSM/legacy 与 EFI/UEFI)与其分区表类型(MBR 与 GPT)紧密联系在一起,因此如果磁盘最初以 EFI 模式启动,则它必须使用 GPT。这与您展示的其他所有内容完全一致。Windows 恢复工具应该尝试让这样的系统在 EFI 模式下启动,正如我已经指出的,您没有丢失 MBR 分区。因此,这种情况就像他们所说的那样,“继续前进;这里没什么可看的。”
我非常希望“sda11”能恢复并可启动
您没有显示任何迹象表明您曾经拥有/dev/sda11
。您列出的磁盘上原来的内容表明您拥有/dev/sda1
,/dev/sda10
包括 。如果这些分区之间或磁盘的开始或结束处有任何明显的间隙,我会错过它们。
看起来像最多您的分区要么完好无损,要么可以通过 TestDisk 或类似程序恢复。/dev/sda8
但这似乎是一个问题;它可能有文件系统损坏。 也是如此/dev/sda5
。由于它们最初都是 NTFS 卷,您应该在 Windows 论坛上询问它们。Linux 的唯一 NTFS“修复”工具ntfsfix
是非常基本——它会进行一些非常简单的检查,修复一两件琐碎的事情,并标记文件系统以便在 Windows 中修复。
看来您知道分区的确切原始起点和终点。您可以将这些值代入gdisk
以重新创建分区;但当然,如果您使用的 Windows 修复工具尝试调整分区大小,这些值可能不再有效。
还创建了 128MiB bios_grub 分区。安装了 Ubuntu 16.04(在带有 Grub 的传统 MBR 模式下)。
可以实现双启动,一个操作系统为 EFI/UEFI 模式,另一个操作系统为 BIOS/CSM/legacy 模式,但不太方便。最好在同一模式下安装两个操作系统。请参阅我在 CSM 上的页面了解有关此主题的更多信息。
继续恢复时,我建议您禁用 CSM 并以 EFI 模式恢复或重新安装 Ubuntu。(安装的大部分内容无需更改;您只需要一个 EFI 模式的引导加载程序,也许还需要编辑以/etc/fstab
挂载您的 EFI 系统分区 [/dev/sda2
或/dev/sda3
;您似乎有两个] /boot/efi
。)