答案1
要移动敏感分区,您需要从 CD 或 USB 启动。
一些带有启动 CD 的免费分区编辑器是:
两者中,MiniTool 具有更好的用户界面。
我建议在开始之前,使用带有救援启动 CD 的产品在外部介质上对整个硬盘进行映像处理。创建此救援 CD 并测试它是否可以看到备份磁盘和映像,以防万一,因为任何错误都可能破坏磁盘并导致已安装的操作系统无法启动。我最喜欢的备份产品是免费的傲梅备份。
下面是启动分区编辑器的启动 CD 后要遵循的步骤。它将未分配的空间移到 EFI (sdb2) 下方,但由于未分配的空间不算作分区,因此需要移动其相邻的分区。
- 将 sdb4 向右/向下移动 400MB
- 对 sdb3 (MSR) 执行相同操作。未分配的空间现在应该直接跟在 sdb2 后面。
- 重新启动以测试磁盘是否仍能正常工作。如果无法重新启动,则无法移动 MSR - 请参阅下文。
- 调整 sdb2 的大小以包含未分配的空间
- 重启
如果工具无法移动 MSR,或者移动 MSR 后 Windows 无法启动,则需要删除并重新创建它。
这在这个答案:
启动 Windows 安装媒体,然后按 SHIFT+F10 打开命令提示符。键入
diskpart
。键入list disk
,然后select disk X
其中X
是包含启动分区的物理驱动器的编号。键入list partition
以获取分区列表。我现在在磁盘的起始处有一个 EFI 系统分区,大小为 100 MB,分区列表显示它从 1024 kB 的偏移量开始。Windows 认为一兆字节是 1024 kB,因此可用空间从 1024 + (100*1024) = 103424 kB 的偏移量开始。键入命令create partition msr size=128 offset=103424
。如果大小和偏移量正确,这应该可以工作,就我的情况而言,确实如此。
另请参阅命令的描述创建分区 msr。
答案2
TLDR:备份 - 这是一个危险的过程。然后恢复磁盘,根据需要调整分区大小。
我要采取的策略是首先备份并在恢复时调整分区大小。这似乎有点奇怪,但首先,它是万无一失的(如果你搞砸了,你只需恢复即可),许多好的备份软件都让你可以选择在恢复时调整大小,并且在许多情况下可以修复由于从头开始重新创建分区而导致的问题。
在没有备份的情况下进行任何类型的文件系统编辑都是不负责任的
我常用的备份软件veem 端点备份并且 - 我已经备份、调整大小并恢复,它似乎对我有用 - 如果我没记错的话,你右键单击分区,然后设置卷大小,你就好了。这不是专为一次性备份而设计的软件,因此macrium reflect 可能有效也一样。
答案3
所以我只能使用 100MB 的 EFI 分区,这对于多个内核来说完全不够。
鉴于这是实际问题,我将解决它。我通过删除“mkinitcpio”配置文件中的“fallback”预设解决了此问题。然后我删除了 fallback 图像(例如:)/boot/initramfs-linux-fallback.img
。fallback 图像比默认图像大很多。在执行任何这些操作之前,请阅读并确保您了解没有后备内核的风险。也就是说,如果您可以从默认内核启动并且不打算更改硬件,那么一切都会好起来。我建议您手头准备一个备份安装程序(USB 闪存驱动器或类似设备),以防您需要后备内核。
在我的例子中,Linux 配置文件位于/etc/mkinitcpio.d/linux.preset
(每个已安装的内核都应该有一个)。我注释掉了以下行:
PRESETS=('default' 'fallback')
并添加了这一行:
PRESETS=('default')
然后我运行sudo mkinitcpio -P
重建图像并测试配置文件。
安装 linux、linux-lts 和 Windows 10 后df -h
显示:
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 95M 56M 40M 59% /efi
看起来我仍有空间容纳一两个内核,并且我很高兴避免了分区调整大小的头痛/压力。
答案4
在阅读了多个指南(包括这一个)并花了一整天时间尝试所有可能的方法后,我终于找到了快速、简单且可重复的流程。
所需工具:
1. 分区映像/恢复软件 -- 我使用了 Clonezilla 和 Symantec Ghost v11.5.1.226
2. GParted -- 我使用 USB 上的 PartedMagic 来访问 Clonezilla、GParted 和 CGDisk
3.CGDisk(或者任何你喜欢的分区工具)
4. Windows PE通过 Windows 安装磁盘/拇指驱动器或 Hiren 的 BootCD - 我拥有所有这些 - 你也应该拥有!
过程:为了举例,让我布置一个我们想要更改的假设的“当前”分区磁盘。
分区1 - 100mb -- EFI 系统分区
分区2 - 16mb - MS 保留分区
分区 3 - 200gb -- Windows
分区 4 - 520mb -- MS Recovery (RE) 分区
分区 5 - 400gb - MS NTFS 格式的数据驱动器
我们的目标是安全地将分区 1(EFI)增加到 500mb
开始!
步骤1:使用您选择的映像软件制作单独的分区映像。不是磁盘映像,而是单独的分区映像。在这种情况下,我们最终会得到 5 个映像。这些分区中的大多数都非常小,因此这个过程花费的时间很少。使用这些实际数字和 Clonezilla,大概需要 20 分钟。
第2步:如果您特别偏执(我就是这样!),请恢复这些分区并确保它们坚如磐石。如果您使用 Clonezilla,并在创建后验证每个图像,那么您可能没问题。或者,如果您不偏执并且信任宇宙中的所有事物,请跳过此步骤。
步骤3:现在,在您选择使用 GParted 的环境中,打开此磁盘并删除所有 5 个分区。应用更改。准备一块布以防汗水。它将从“应用”开始。您现在有一个 100% 未分配的磁盘。快速检查 GParted 的磁盘信息并验证它是否有 GPT 分区表(当然应该有,但请记住我们很偏执!)。
让我在这里说几句话……我们制作了分区 1 (EFI) 的映像,以防万一出现严重错误,我们想要 100% 恢复一切。假设没有出现任何问题,我们将不会恢复该映像……虽然大多数映像软件允许您将映像恢复到更大的分区,但这似乎不适用于 EFI 分区。您会看到各种令人沮丧的错误消息。好吗?所以我们将从头开始重建 EFI 分区,而不是恢复分区 1。让我们继续。
步骤4:现在我们重建分区。我使用 CGDisk 来做这件事,因为我在那里速度很快。我将在这里使用该方法。假设我的目标磁盘是 /dev/sda,我会
cgdisk /dev/sda
从 CLI。在里面,我使用箭头键向下选择 FREE SPACE,然后使用箭头键向左/向右选择 NEW。我按回车键以默认启动,输入 500MiB、十六进制代码 0700(用于 MS 数据),空回车键作为分区名称。我现在看到它列在待处理写入列表中。
(注意:这是我们新的 500mb EFI 分区,但我们在这里不使用十六进制代码 ef00。这会搞砸一切,或者至少在我的情况下总是这样。我们正在欺骗实用程序,它们将非常挑剔地对标记为 ef00 的系统分区执行任何操作。所以我们最初将其设置为 0700,我们稍后会回来将其改回来。)
接下来,我选择 FREE SPACE 并创建 16MiB MS 保留分区,使用 0c01 代码,无分区名称。接下来是 Windows 分区,创建时大小为 200GB,代码为 0700,无名称。接下来是 RE 分区,创建时大小为 530MiB,代码为 2700,无名称。最后,我们创建数据分区,大小为 400GB,代码为 0700 - 无名称。
我们将其写入磁盘。退出 CGDisk。
步骤5:重新加载 GParted 或您正在使用的任何程序。将新的 500mb 分区 1 格式化为“Fat32”。应用。现在通过任何方式恢复分区 2 的映像。如果您没有遵循指南并小心翼翼地完成此操作,那么到现在为止,您可能只需要花费不到一个小时的时间。其中 95% 的时间将用于映像和恢复。
好的,在此步骤结束时,您应该有一个新的 500mb EFI 分区,标记为 msfsdata,格式化为 Fat32 并且为空。您应该有一个恢复的 16mb MS 保留分区作为分区 2,一个 200gb Windows 分区作为分区 3(最终成为驱动器 C:),一个 530mb 恢复环境作为分区 4,最后是我们的 400gb 数据分区(最终将成为驱动器 D:)。
在 GParted 中,16mb MS 保留分区上出现错误标志是很常见的。这是因为它没有有效的文件系统。您可以忽略它。但其他分区不应该有任何其他错误。接下来让我们重建 EFI 分区。
第 6 步:断开所有不必要的磁盘,只留下我们正在使用的磁盘。启动 Windows PE。我使用 Hiren 的 BootCD。无论您使用什么,请进入提升的(管理员)CMD 控制台。我们现在将使用 DISKPART。
步骤7:在 CMD 提示符下输入 DISKPART。加载后,输入
LIST VOL
(您不必使用大写字母。我在这里是为了指定输入的命令)。由于您的新 EFI 分区已格式化为 Fat32,因此它可能在卷列表中显示为 C。我们将删除与我们的磁盘关联的所有驱动器号。因此输入
SEL VOL 0
REMOVE LETTER={whatever is there for Vol 0}
进入其余卷并通过 SEL 和 REMOVE 命令删除它们的驱动器号。不要删除环境驱动器号,通常是 X 和/或 Y。查找并找到您的 Windows 卷。就我而言,我正在寻找 200gb 的大小。我看到它是卷 1,所以我输入
SEL VOL 1
ASSIGN LETTER=C
然后我找到我的 400GB 数据驱动器并看到它是卷 4
SEL VOL 4
在此处输入代码
ASSIGN LETTER=D
现在我找到新的 500mb EFI 分区 - 我看到它位于卷 3
SEL VOL 3
ASSIGN LETTER=Z (any available letter, doesn't matter)
最后再执行一次 LIST VOL 来验证我的 Windows 驱动器是 C、EFI 驱动器是 Z(或您指定的任何驱动器),并且任何其他数据驱动器都有其适当的驱动器号。现在输入 EXIT,您应该会返回到 CMD 提示符。呼!
步骤8:好的,让我们建立一个新的 BCD 存储。如果您没有使用 Z 作为 EFI 驱动器号,请将以下命令中的 Z 替换为您的驱动器号。在 CMD 提示符下输入
BCDBOOT C:\Windows /s Z: /f UEFI
您应该会收到写入启动文件成功的确认信息。您基本已经完成了。但是等等!我们有点偏执!!
步骤 9(可选):在命令提示符下输入 Z: 切换到 EFI 驱动器。输入 DIR,您应该只看到一个条目 - 一个名为 EFI 的目录。就是这样。让我们再次将其设置为可启动的 EFI 分区...
步骤10:让我们回到 GParted。加载磁盘。选择 Partition1 和“管理标志”(您可以通过右键单击分区列表中的分区,或突出显示列表中的分区,然后从顶部菜单中选择“分区”来执行此操作。进入“管理标志”GUI 后,只需单击“启动”。同时验证 GParted 是否也勾选了“esp”框。如果没有,那可能是个问题……但请勾选它。“启动”和“esp”都应勾选。退出“管理标志”窗口,标志将自动设置。无需“应用”。
步骤11:重新启动进入具有 500mb EFI 系统分区的新系统。我建议您按住进入 BIOS“启动菜单”的任何键,并确保选择该磁盘的 EFI 条目。一旦成功从该 EFI 分区启动,它下次应该是默认的。如果您只是盲目启动而没有进入 Windows,请务必在第二次尝试时这样做。确保您选择了 EFI 选项。
第 12 步:您是否特别偏执?进入 Windows 后,转到提升的 CMD。输入 DISKPART。LIST VOL、SEL VOL,即您的 500mb EFI。ASSIGN LETTER=G 或其他。打开文件资源管理器。右键单击 G: 并选择“属性”。您应该看到大约 30mb 已使用,470mb 可用。
使用这些实际驱动器大小,我完成所有这些操作的时间略多于一个小时。而且我认为这样做 100% 安全,因为您有映像。此外,我确实使用 Symantec Ghost 对我的 Windows 和数据分区(2 和 5)进行映像处理。我这样做是为了可以根据需要将它们还原到较小的分区,并且我还可以使用 Ghost Explorer 浏览映像,并提取我想要的任何单个文件或文件。
如果有人问我为什么同时使用 Clonezilla 和 Ghost,那么我回答了为什么我喜欢使用 Ghost。典型的 NTFS 数据分区是它一直处理得很好的东西。它对 EFI 和系统分区的处理不太好。它甚至看不到 MS 保留分区。所以我用 Clonezilla 来处理这些分区,用 Ghost 来处理数据分区。
我不是磁盘分区、Windows 或 Linux 方面的专家。我很清楚“这一步”或“那一步”可能不是必需的,或者可以用其他方式完成。但我可以一遍又一遍地按照列出的步骤进行操作,并取得成功。我一定会接受任何有助于提高效率或加快速度的评论。
享受。
- 基思