这个奇怪但有趣的问题相当紧急,所以在我得到答案之前,我会转发这篇文章这里和这里。
我有一个扩展分区,其中包含三个 Linux 系统,每个系统都在自己的分区中。每个系统都在 gparted 中显示以下内容:
分区重叠:
Gnome-disks 看到这个:
最初,我认为这不可能准确,因为我确信 Mint 分区实际上占用了此处显示的扩展分区中的可用空间,而 Win7 占用了此处显示的右侧空白空间。但我得到的答案和评论却表明并非如此。
我还可以确认,我认为的 Win 7 分区的可用空间实际上比以前(超过 100GB)小(66GB)。就好像 42GB Mint 分区从扩展分区(现在有 42 GB 可用空间)移动到 Win 分区,Win 分区以这种方式被删除,留下了 66GB 的可用空间。
这是之前 eOS 和 Ubuntu 被其他操作系统取代时分区表的样子:
我是如何陷入这种境地的:
我主要使用 Linux 和 grub 列表来启动。我缩小了左侧的大 NTFS 分区(标记为 Depo),以便在那里安装 Windows XP 32 位。我这样做了,当然也丢失了 grub。我从一个实时 eOS USB 中恢复了它。这恢复了 grub,并将我的初始 Linux(Mint Xfce)安装作为列表中的第一个,在这里可以看到它位于扩展分区的右外角,而实际上它占据了上面显示的扩展分区内的空白空间。
其他症状:
- Windows 7 分区完全无法访问;唯一一个在 grub 列表中不存在且在所有系统中不可见的分区
- 除了 Win7 之外的所有分区都可以在操作系统中访问(当然 XP 除外,因为它看不到 ext4)。
(我必须重新启动才能报告其余内容)
如果不使用 gparted,我该如何解决这个问题?
我更喜欢 GUI。
更新以回答评论和答案:
~$ cat /proc/partitions
major minor #blocks name
8 0 488386584 sda
8 1 185841664 sda1
8 2 50996224 sda2
8 3 1 sda3
8 4 41389648 sda4
8 5 51796875 sda5
8 6 52628906 sda6
11 0 1048575 sr0
该命令sudo smartctl -a /dev/sda
的结果如下:http://pastebin.com/MLEXi8TF
该命令sudo dd if=/dev/sda bs=512 count=1 | xxd | cat
的结果如下:http://pastebin.com/z10QbqqQ
回答后更新:
42 GB Mint 分区与已删除的 100 GB 分区重叠。要解决此问题,我是否应该删除 42 GB Mint 分区?
在最新的 gparted live usb 中我收到两条错误消息,但随后我看到了以下内容:
答案1
感谢 xxd 输出。通过将其转换回二进制文件xxd -r
并使用 sfdisk 研究该文件,我看到以下内容:
Device Boot Start End #cyls #blocks Id System
xxd.bin1 * 25+ 23161- 23137- 185841664 7 HPFS/NTFS
xxd.bin2 23161+ 29510- 6349- 50996224 7 HPFS/NTFS
xxd.bin3 29510+ 47663- 18154- 145817169+ 5 Extended
xxd.bin4 42511+ 47663- 5153- 41389648+ 83 Linux
因此,您的主分区 4 实际上与扩展分区 3 重叠。它们都以相同的位置结束。从 MBR 中的分区表无法获取有关逻辑分区的信息。该数据位于 /dev/sda3 的开头,可能更难研究。
我猜你以某种方式在 gparted 中指向并单击,并将 Mint 的逻辑分区设为主分区。你知道 Mint 分区是否曾经是编号为 5 或更高的逻辑分区吗?
不知何故,gparted 现在似乎太混乱了。如果你幸运的话,parted 仍然可以从命令行使用。说什么parted -l
?
要删除主分区 4,请执行以下操作:
1)从使用 xxd 创建的磁盘前 512 个字节的文本文件开始。
2)编辑该文件的末尾:
`00001e0: ffff 05fe ffff feff 411c a3fc 6111 00fe ........A...a...`
`00001f0: ffff 83fe ffff 00e0 b428 a11c ef04 55aa .........(....U.`
到:
`00001e0: ffff 05fe ffff feff 411c a3fc 6111 0000 .......$....hQ..`
`00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.`
3)从文本文件创建一个二进制文件,如下所示:
xxd -r xxd2.txt > xxd2.bin
创建的二进制文件大小应为 512 字节。
4)将二进制文件复制到磁盘的开头:
dd if=xxd2.bin of=/dev/sda
5) 现在您应该不再有任何第 4 个主分区,也没有重叠分区。如果您幸运的话,您现在可以使用 parted 恢复逻辑 Mint 分区和主 Windows 分区。如果您不幸,事情会变得比以前更混乱。确保您有备份并知道如何使用备份!
答案2
从 /proc/partitions 我们可以看到以下内容:
1) 您有 4 个主分区 (1-4)。DOS 分区表最多可以有 4 个主分区,在 Linux 中编号为 1-4。其中一个主分区可以是包含更多分区的扩展分区。您的分区编号 3 是一个扩展分区。
2) 您的扩展分区中有 2 个逻辑分区。它们是 sda5 和 sda6。
因此看起来 Gnome-disks 似乎是正确的,您的扩展分区中只有两个分区,并且主分区 4 不属于您的扩展分区。
不幸的是 /proc/partitions 没有显示扩展分区的大小。为此,我们需要输出fdisk -l
或至少fdisk -l /dev/sda
所以我不能确定您的主分区 4 是否与扩展分区 3 中未使用的空间重叠。
由于 fdisk 没有显示任何输出,您的分区表可能存在问题。也许 cfdisk 更有用。
答案3
因为Henrik Carlqvist 的回答对于我的技能来说似乎太“高级”了,我试图在实时 Gparted usb 会话中删除 mint 分区,结果显示了此图像
但这仍然不准确,因为 mint 分区的 39.47 GB 空间既出现在扩展分区的内部,也出现在 ex-Win7 分区的 100 GB 空间之外:驱动器显示为比实际多 39.47 GB。无论如何,我继续。在 Gparted 会话中删除 Mint 分区(显示为主分区)似乎有效,但我还将 eOS 分区向右扩展到 mint 初始逻辑分区的 39.47 GB 空间。这导致两者合并为一个未分配的空间:好像空白空间已被扩展……eOS 分区因此丢失。
因此,我决定删除所有分区,清理所有驱动器。
我注意到“磁盘”(`gnome-disk-utility',可在源中找到,Unity 中的默认设置)不仅能够查看分区的正确情况,还可以创建(备份)和恢复磁盘映像。我用这种方式保存然后恢复了我的其中一个系统(我不关心其余的)。
很明显,Gparted 看错了,于是寻找解决方案,询问一个新问题并继续如下:
在实时 USB 会话中启动并执行
sudo dd if=/dev/urandom of=/dev/sda bs=1M
但这似乎并没有像我想要的那样工作,因为处理器工作灯大部分都熄灭了(或者是硬盘灯?),而冷却器很响。
然后我读到 urandom 命令非常慢,因为它实际上试图生成真正的随机数。出于安全考虑,我并不想擦除所有数据,只是想清除所有分区(它们有问题),所以我停止了该过程并执行以下操作:
sudo dd if=/dev/zero of=/dev/sda bs=1M
这样,冷却器就会平静下来,同时“工作灯”会一直亮着。
为了查看进度,我打开了单独的终端窗口 并且做到了
watch -n5 'sudo kill -USR1 `pgrep ^dd`'
每 5 秒在初始终端窗口中报告一次进度(来源)
245423407104 bytes (245 GB) copied, 3430.82 s, 71.5 MB/s
234354+0 records in
234354+0 records out
245737979904 bytes (246 GB) copied, 3435.84 s, 71.5 MB/s
234655+0 records in
234655+0 records out
246053601280 bytes (246 GB) copied, 3440.88 s, 71.5 MB/s
234956+0 records in
234956+0 records out
246369222656 bytes (246 GB) copied, 3445.91 s, 71.5 MB/s
... 在一台使用 4 年、配备 4GB 内存的普通笔记本电脑上,读取 500GB 硬盘需要 2 小时 30 分钟。
我使用磁盘实用程序恢复了我的一个系统的映像,这似乎是一个很棒的工具。