如果我启动到 GRUB2,为什么 /dev/sd4 被标记为可启动?

如果我启动到 GRUB2,为什么 /dev/sd4 被标记为可启动?

这是输出fdisk

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419424255   209711104   83  Linux
/dev/sda2       419424256  1258291199   419433472   83  Linux
/dev/sda3      1258291200  1300236287    20972544    f  W95 Ext'd (LBA)
/dev/sda4   *  1300236288  1709836287   204800000    7  HPFS/NTFS/exFAT
/dev/sda5      1258293248  1275062271     8384512   82  Linux swap / Solaris

这是输出cfdisk

Name         Flags       Part Type   FS Type           [Label]         Size (MB)
--------------------------------------------------------------------------------
                                     Unusable                               1.05  *
sda1                      Primary    ext4                              214744.18  *
sda2                      Primary    ext4                              429499.88  *
sda5         NC           Logical    swap                                8586.79  *
                          Logical    Free Space                         12889.10  *
sda4         Boot         Primary    ntfs                              209715.20  *
                                     Unusable                          124768.71  *

我应该有 2 个 Linux 分区、1 个 Windows 分区扩展分区(约 20 GB),带有 8GB 逻辑交换分区和大约 130GB 的未分区空间。

好像这还不够,输出gparted也有点不同。 在此处输入图片描述

我对我在此处发布的输出感到困惑。

  1. 为什么/dev/sd4如果我启动到 GRUB2 就会被标记为可启动?
  2. /dev/sda3 是什么?它的类型是什么(主/逻辑)?为什么它没有显示在cfdisk
  3. 为什么那个可用空间(我猜是 124768 cfdisk)被标记为不可用?
  4. cfdisk交换分区中的 NC 标志是什么意思?

答案1

如果我启动到 GRUB2,为什么 /dev/sd4 被标记为可启动?

可引导是 MBR 中的一个标志(实际上是一个与 0x80 进行比较的字节)。该条目被标记为可引导。“传统”引导加载程序读取 MBR,查找具有可引导标志的条目,并将控制权交给它。当您使用 grub 时,它会做一些完全不同的事情,因为它改为使用它的配置文件。但工具会告诉您分区的情况配置(实际上,MBR 中的引导加载程序可能将您跳转到 /dev/sda4,并且 grub2 安装在那里)。

/dev/sda3 是什么?它的类型是什么(主/逻辑)?为什么它没有显示在 cfdisk 中?

/dev/sda3 是主分区类型扩展分区。它是用作其他分区的容器的分区。gparted 在其图形上很好地显示了它。

你可以争论它是否真的是一个分区,一方面它在 MBR 中占据一个位置,另一方面它是一个分区容器,您没有在那里放置文件系统。

分区工具对它们进行特殊处理,因此 cfdisk 似乎不愿意显示它。例如,fdisk 也不允许对这些分区执行某些操作。

为什么那个可用空间(我假设是 cfdisk 中的 124768)被标记为不可用?

我认为这些是 gparted 最后显示的 116.20 GiB

您最多只能有 4 个主分区(包括扩展分区)。这来自插槽在 MBR 的末尾。由于您已经有 4 个这样的分区,所以末尾的未分配空间无法进行分区(您不能在那里放置逻辑分区,因为您只能有一个扩展分区,并且它必须是连续的)。

使用该空间的(简单)选项可以是以下任一项:

  • 扩展 /dev/sda4 以使用它
  • 扩展 /dev/sda3 以包含 /dev/sda4(最好也扩展到磁盘末尾)并使 /dev/sda4 成为逻辑分区

cfdisk 中交换分区的 NC 标志是什么意思?

引用cfdisk 手册页“标志可以是 Boot(指定可启动分区)或 NC(代表“与 DOS 或 OS/2 不兼容”)。”没什么好担心的

答案2

让我们开始吧...

  1. 它被标记为可启动,因此 Windows 可以从中加载其引导加载程序。即使 Grub 可能首先加载,但如果从列表中选择了 Windows,它也会“链式加载”到 Windows 引导加载程序中。要运行 Windows 引导加载程序,它需要位于可启动分区上(有人可以帮我再检查一下吗?我从未尝试过在 Windows 7 安装中删除可启动标志...)

  2. SDA3 实际上扩展 分区。您的磁盘格式为膜生物反应器, 代替谷氨酰胺磷酸酶. 其中一个限制是 MBR 只能有最多 4 个主分区。为了解决这个问题,您可以使用扩展主分区,然后在里面创建多个较小的逻辑分区(获得超过 4 个分区)。

  3. 由于 MBR 限制,无法创建第五个主分区扩展逻辑分区之外。这是正常的。如果您扩展了扩展分区,那么您应该能够在其中创建一个新分区,并使用剩余的磁盘空间。

  4. 来自cfdisk 手册页

标志可以是引导,指定可启动分区或数控,代表“与 DOS 或 OS/2 不兼容”。

答案3

分区 1 至 4 按照惯例是“物理”的(它们是当时唯一可用的类型)。因此您有:

Device    Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419424255   209711104   83  Linux
/dev/sda2       419424256  1258291199   419433472   83  Linux
/dev/sda3      1258291200  1300236287    20972544    f  W95 Ext'd (LBA)
/dev/sda4   *  1300236288  1709836287   204800000    7  HPFS/NTFS/exFAT

/dev/sda5      1258293248  1275062271     8384512   82  Linux swap / Solaris

...sda1是物理的,Linux。sda2是物理的,又是 Linux。sda3逻辑分区在哪里其他分区(5 及以上)可以驻留。最后sda4是 Windows 分区,标记为可启动 - 我认为只有 Windows 关心这一点。GRUB2 很乐意启动您想要的任何分区,但 Windows 希望位于可启动分区上。

现在,里面逻辑分区sda3,虽然cfdisk没有显示出来,但实际上还有更多的物理分区。在本例中只有sda5

并且由于sda3从扇区 1258M 延伸到扇区 1300M,但sda5只使用了到 1275M,因此扇区 1275062272 到 1300236287 是空闲的(但可以分配给sda6)。

最后,您的sda4(最后一个可能的物理分区 - MBR 仅容纳四个)没有填满磁盘的末尾。它留下了大约 116Gb。该空间是无法使用因为您无法创建物理分区来覆盖它(扩展分区sda3无法增长,因为其范围被“阻止”了sda4):

[SDA3...(sda5)...| FREE    ][...sda4...][ UNREACHABLE SPACE ]end-of-disk

恢复不可用空间的解决方案

恐怕没有无痛。根据几何形状,您可以删除sda4并注释其边界。然后扩大sda3到包含整个磁盘(相同的起始,1258291200,但结束于磁盘末尾),或删除它并以相同的起始和最大结束重新创建。现在您可以sda6在 内创建一个分区sda3,并使其在扇区 1300236288 之前的柱面处结束。这将占用现有 中当前剩余的可用空间sda3。最后,您在 内创建一个分区sda3,它将是sda7,告诉系统它从 1300236288 延伸到 1709836287 并且是类型 7。

如果不格式化该分区,内容将保持原样,并且它是一个有效的 Windows 分区。

当然,如果出现问题,您可能会丢失所有数据。物理分区(如 Windows 现在的分区sda4)和物理内部逻辑分区(如它成为的分区sda7)不一定混合;有些工具会直接拒绝创建它们。我建议在相同大小的虚拟磁盘上进行测试,该虚拟磁盘创建在稀疏文件内(文件本身实际上只有几 GB)或外部磁盘上。

另一种方法(可能更安全)是删除sda5(只是交换)和sda3,将sda4参数移动到sda3(这可能意味着删除sda4sda3使用旧sda4的参数重新创建),这将使sda4插槽空闲(并在磁盘中间留出一个“洞”)。大多数 BIOS 允许无序分区表。同样,这不需要复制任何内容。sda4现在成为sda3并保持物理分区,因此其几何形状应该更好地符合分区工具的假设。

当然受到推崇的最安全(也是最慢)的方法就是备份全部分区,重新格式化它们全部,并在正确“重新定位”它们之后恢复它们,扩展分区最后并占据整个剩余硬盘。这将摆脱 sda3 中的可用空间并回收末尾不可用的空间,没有任何风险(如果备份正确完成 - 备份后请检查。我曾经在有故障的外部磁盘上备份,但在恢复时它坏了。一点也不好玩)。

答案4

除了已经说过的这一切的含义之外,我认为最轻松的解决方案是在最后的大区域中拥有交换空间,并将中间的空白空间添加到您的/home

要做到这一点,你必须

  • 一旦不再使用交换文件,就立即删除它,以及保存它的扩展分区
  • 扩展您的sda2以包含其后的完整空白空间(您必须删除并重新创建它)。
  • 重新创建扩展分区sda3,并使用它来容纳您想要的任意数量的分区(在一定限制内)。

使用 最容易做到这一点cfdisk,因为它可以动态处理扩展分区。但要注意sda2保留其起始 LBA,否则您将丢失其内容。

扩展分区大小后,您必须调整所包含的文件系统的大小以利用全部空间。

相关内容