我已经使用 Ubuntu 16.04 和 Windows 7 好几年了,运行非常顺畅。但出现问题后,使用 Boot-Repair 恢复了 GRUB 加载菜单。
- 我无法再加载 Windows 7
- 尝试使用安装盘恢复 Windows 7 后,我发现无法检测到硬盘和应该安装 Windows 7 的分区。
- 但 Ubuntu 仍然检测到操作系统分区
- 我运行了 GParted 试图查看此消息弹出时发生了什么:
“驱动程序描述符显示物理块大小为 2048 字节,但 Linux 显示为 512 字节。“
在探索我的操作系统分区(/dev/sda3)后,我发现了以下警告消息:
“无法读取此文件系统的内容!因此某些操作可能不可用。原因可能是缺少软件包。ntfs 文件系统支持需要以下软件包列表:ntfs-3g / ntfsprogs。“
GParted 无法解决 /dev/sda3 上的修复文件系统 (nfts);
附加信息:
“磁盘 /dev/sda:698.7 GiB,750156374016 字节,1465149168 个扇区 单位:扇区 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标签类型:dos 磁盘标识符:0xdd6865b6
Device Boot Start End Sectors Size Id Type /dev/sda1 63 80324 80262 39.2M 6 FAT16 /dev/sda2 81920 25563135 25481216 12.2G 7 HPFS/NTFS/exFAT /dev/sda3 25563136 1332019199 1306456064 623G 7 HPFS/NTFS/exFAT /dev/sda4 1332021246 1465147391 133126146 63.5G 5 Extended /dev/sda5 1400381440 1431629823 31248384 14.9G 82 Linux swap / Solaris /dev/sda6 1431631872 1465147391 33515520 16G 83 Linux /dev/sda7 1332021248 1400381439 68360192 32.6G 83 Linux
分区 1 未从物理扇区边界开始。分区 4 未从物理扇区边界开始。分区表条目不按磁盘顺序排列。”
有人能帮我吗?我已经束手无策了
我怎样才能恢复 Windows 7 并解决我的问题?
答案1
以下 GParted 消息非常令人不安:
驱动程序描述符显示物理块大小为 2048 字节,但 Linux 显示为 512 字节。
大多数硬盘的逻辑扇区为 512 字节。较旧的硬盘也有 512 字节的物理扇区,但许多较新的硬盘有 4096 字节的物理扇区,每个扇区都“翻译”成八个 512 字节的扇区。一些现代磁盘有 4096 字节的物理和逻辑扇区。我所知道的唯一具有 2048 字节扇区的磁盘是光盘 - CD、DVD、磁光盘 (MO) 以及这些光盘的变体,如 CD-R。因此,GParted 说普通硬盘上的物理块(扇区)大小为 2048 是非常奇怪的。
扇区大小不是可以更改的;至少在现代硬盘上,它是固定在硬件中的。因此,GParted 声称物理扇区大小有些奇怪,这表明存在硬件故障。如果是这样,您需要更换磁盘。也许对原始文件系统进行低级复制到新磁盘将使其再次可读。另一方面,您的输出指示标准的 512 字节扇区大小(物理和逻辑)。因此,可能是您在 GParted(或它所依赖的库)fdisk
中发现了一个错误。libparted
另一种可能性是 GParted 消息指的是文件系统数据块(又称“簇大小”)。根据这个微软页面,对于 NTFS,这些大小可以是 512 字节到 64 KiB,具体取决于创建文件系统的操作系统版本以及文件系统的大小。如果 NTFS 数据结构已损坏,则 Windows 可能无法启动,Linux 实用程序也无法应对。如果这个假设是正确的,那么 NTFS 修复实用程序有可能修复文件系统。请注意,有不适用于 Linux 的 NTFS 修复实用程序。该ntfsfix
工具只进行一些简单的检查,然后标记文件系统以在 Windows 中修复。要正确修复此文件系统,您需要启动 Windows 紧急磁盘,然后CHKDSK
在其上运行,或者使用其他 Windows 文件系统修复工具。如果您认为这是原因,我建议在 Windows 论坛上寻求更多帮助,因为 NTFS 修复是 Windows 问题,而不是 Ubuntu 问题。
无论如何,我强烈建议你第一的备份整个磁盘,或者至少是 Windows 分区。这将要求目标磁盘至少与源磁盘或分区一样大。以下命令应该可以解决问题:
sudo dd if=/dev/sda of=/path/to/lots/of/space/sda.img
这会将整个设备备份/dev/sda
到/path/to/lots/of/space/sda.img
;您可以将备份介质挂载到/path
或途中的某个子目录sda.img
。(当然,您可能会更改挂载点的名称。)
您可以使用类似的命令来复制整个磁盘;您只需使用of=/dev/sdb
而不是of=
指向文件系统上的文件的值。非常小心但是,使用 时dd
,尤其是当您以整个磁盘设备为目标时;如果您反转if=
和of=
选项,或者提供不正确的选项,您很容易毁坏原始磁盘。