我可以在不启动失败的情况下移动我的根分区吗?

我可以在不启动失败的情况下移动我的根分区吗?

我当前磁盘的布局是:

在此输入图像描述

我正在遵循以下建议https://unix.stackexchange.com/a/501410/674重新排列磁盘上的分区。下面的步骤可以吗?

  • 将 sda3 (/) 缩小到 60G,并在磁盘末尾留下 204G 未分配区域(我已经这样做了)
  • 将sda4(/home)移动到93G未分配空间的前面(此步骤正在进行中)
  • 将sda3(/)移动到磁盘末尾,即204G新未分配区域的后面,以便将两个未分配区域(93G和204G)合并为一个297G未分配区域。
  • 扩展 sda4 (/home) 以包含 297G 未分配区域

我现在正在实时 Lubuntu 中的 gparted 中执行第二步,gparted 警告我,如果要移动的分区包含 /boot 或者是 Windows 系统分区 C:,则移动分区很可能无法启动。我有一个 BIOS Grub 分区、一个根分区和一个主分区。 /boot位于分区 sda3 (/) 中。我能否在步骤 3 中将 sda3 (/) 移动到磁盘末尾,而不会导致启动失败?看来我需要根据以下内容重新安装grubhttps://askubuntu.com/questions/299886/partitions-is-it-safe-to-move-partition-containing-boothttps://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd

更新:经过上述步骤后,磁盘的布局是

在此输入图像描述

我不需要对 grub 进行任何操作,并且可以成功重新启动到磁盘上的 Lubuntu。为什么在移动/包含 sda3 ( ) 的分区后,我不需要对 grub 执行任何操作/boot?难道是因为原来sda3(/)占用的区域目前在sda4(/home)中没有使用?如何验证我的 Lubuntu 是从重新定位的 sda3 ( /) 启动的,而不是从其原始区域(现在 sda4 (/home) 中的可用空间)启动的?

$ cat /boot/grub/grub.cfg |grep boot
   set boot_once=true
  set boot_once=true
  if [ -z "${boot_once}" ]; then
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
        linux   /boot/vmlinuz-4.15.0-45-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-4.15.0-45-generic
            linux   /boot/vmlinuz-4.15.0-45-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-45-generic
            linux   /boot/vmlinuz-4.15.0-45-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-45-generic
            linux   /boot/vmlinuz-4.15.0-44-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-44-generic
            linux   /boot/vmlinuz-4.15.0-44-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-44-generic
            linux   /boot/vmlinuz-4.15.0-43-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-43-generic
            linux   /boot/vmlinuz-4.15.0-43-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-43-generic
            linux   /boot/vmlinuz-4.15.0-42-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-42-generic
            linux   /boot/vmlinuz-4.15.0-42-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-42-generic
            linux   /boot/vmlinuz-4.15.0-39-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-39-generic
            linux   /boot/vmlinuz-4.15.0-39-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-39-generic
            linux   /boot/vmlinuz-4.15.0-38-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-38-generic
            linux   /boot/vmlinuz-4.15.0-38-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-38-generic
            linux   /boot/vmlinuz-4.15.0-36-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-36-generic
            linux   /boot/vmlinuz-4.15.0-36-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-36-generic
            linux   /boot/vmlinuz-4.15.0-33-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-4.15.0-33-generic
            linux   /boot/vmlinuz-4.15.0-33-generic root=UUID=d0fed0a4-c82a-414e-8fb2-aa10070bf938 ro recovery nomodeset 
        initrd  /boot/initrd.img-4.15.0-33-generic
    knetbsd /boot/memtest86+.elf
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8

谢谢。

答案1

将 sda3 (/) 缩小到 60G,并在磁盘末尾保留 204G 未分配空间:您已完成此步骤。

将sda4(/home)移动到93G未分配空间的前面:这一步正在进行中。执行此步骤之前请务必备份重要数据。

将sda3(/)移动到磁盘末尾,即204G新的未分配空间之后,使两个未分配区域(93G和204G)合并为一个297G未分配区域:在这一步之前,请确保sda4已成功移动到步骤 2 没有任何问题。对于此步骤,由于您的 /boot 目录位于 sda3 (/) 中,因此您可能需要重新安装 GRUB 引导加载程序以确保系统能够引导。在执行此步骤之前,请确保您阅读并理解提供的链接和说明。

扩展 sda4 (/home) 以包含 297G 未分配空间:完成前三个步骤后,您应该能够使用 gparted 或其他磁盘实用程序将未分配空间添加到 sda4。

关于您有关 GRUB 引导的问题,通常当您移动包含 /boot 目录的分区时,您需要更新 GRUB 引导加载程序以反映该分区的新位置。但是,如果您的新位置未被使用,GRUB 可能会自动检测分区更改并在引导时进行调整。这可能是移动 sda3 (/) 后不需要重新安装 GRUB 的原因之一。

要验证您的 Lubuntu 是否从重新定位的 sda3 (/) 启动,您可以检查:

打开终端并执行以下命令:

lsblk -f

这将显示您的磁盘和分区的详细信息。检查 /dev/sda3 的文件系统 UUID 是否与 /boot/grub/grub.cfg 文件中的 UUID 匹配。如果匹配,则意味着 Lubuntu 正在从重新定位的 sda3 (/) 启动。

可选:您还可以检查 /boot/grub/grub.cfg 文件的修改日期和时间,以查看自执行分区移动以来是否已进行更改。如果文件的修改日期和时间与移动分区后的时间匹配,这也表明 Lubuntu 已从新位置启动。

答案2

您不需要重新安装 GRUB,因为它的核心映像位于 中/dev/sda1,该目录没有变化。核心映像通常具有分区表和用于包含 的文件系统类型所需的驱动程序/boot/grub,因此在此之后磁盘块位置不再重要,因为 GRUB 将能够识别分区和文件系统。

GRUB 配置似乎使用文件系统 UUID 来指定 Linux 根分区。由于将根文件系统移动到磁盘上并没有更改其 UUID,因此内核仍然可以很好地找到其根文件系统。

GRUB 核心映像具有嵌入的路径前缀,用于查找 GRUB 配置文件。就你而言,它可能类似于(,gpt3)/boot/grub. (未指定磁盘部分意味着“加载 GRUB 核心映像的同一磁盘”。)您的/boot目录似乎包含在 Linux 根分区中,该分区在更改之前由第三个分区插槽指定,并且仍然是第三个更改后的分区槽,因此路径前缀仍然有效。

如果您的分区工具重新排列了分区槽以匹配磁盘上分区的物理顺序,那么 GRUB 将会失败。

相关内容