如何将引导和根分区移动到另一个驱动器

mli*_*ner 36 partitioning fstab

我的计算机上有两个驱动器,它们具有以下配置:

Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /
Run Code Online (Sandbox Code Playgroud)

不幸的是,驱动器 2 似乎快要死了,因为尝试写入它会给我带来错误,并且检查 SMART 设置显示了一个可悲的状态。

我在驱动器 1 上有足够的空间,所以我想做的是将 / 和 /boot 分区移动到它,从系统中删除驱动器 2,用新驱动器替换驱动器 2,然后反转该过程。

我想我需要对 grub 进行一些更新,并且我需要移动一些东西,但是我很困惑如何准确地做到这一点。因为这是我的主电脑,所以我要小心不要搞砸了,所以我无法启动。

mac*_*aco 32

您需要从实时 CD 启动。为它们添加分区到磁盘1,将所有内容复制过来,然后使用sudo blkid获取每个分区的UUID。在磁盘 1 的新 / 上,编辑 /etc/fstab 以使用您刚刚查找的新 UUID。

更新 GRUB 取决于是 GRUB1 还是 GRUB2。如果是 GRUB1,则需要编辑 /boot/grub/device.map

如果是 GRUB2,我认为您需要按照实际情况安装分区。例如:

sudo mkdir /media/root
sudo mount /dev/sda1 /media/root
sudo mount /dev/sda2 /media/root/boot
sudo mount /dev/sda3 /media/root/home
Run Code Online (Sandbox Code Playgroud)

(当然,填写您将内容复制到的实际分区)

然后在 /media/root 中绑定 mount /proc 和 /dev:

sudo mount -B /proc /media/root/proc
sudo mount -B /dev /media/root/dev
sudo mount -B /sys /media/root/sys
Run Code Online (Sandbox Code Playgroud)

现在 chroot 进入驱动器,以便您可以强制 GRUB 根据新布局更新自身:

sudo chroot /media/root
sudo update-grub
Run Code Online (Sandbox Code Playgroud)

第二个命令将提出一个抱怨(我忘记了它是什么......),但可以忽略。

通过移除坏驱动器来测试它。如果它不起作用,坏驱动器应该仍然能够启动系统,但我相信这些都是必要的步骤。

  • 仅供查看这些天的任何人,这不适用于 EFI 设置。您需要挂载 `/media/root/boot/efi` 等。 (5认同)

sBl*_*att 6

如果您立即更换驱动器,则可以使用dd(几个月前在我的服务器上尝试过,效果很好)。

为此,您还需要一张引导 CD。

  1. 启动引导光盘
  2. 仅挂载驱动器 1
  3. 运行dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 是您的根 ( /) 分区。这会将整个分区保存在一个文件中。
    • 同样的 /boot
  4. 关机,更换磁盘,开机
  5. 运行dd if=/media/drive1/backuproot.img of=/dev/sdb1- 写回来。
    • 同样的 /boot

以上将创建 2 个分区,其大小与以前完全相同。您可能需要调整 grub(查看 macos 帖子)。

如果您想调整分区大小(就像我所做的那样):

  1. 在新驱动器上创建 2 个分区(用于//boot; 任何你想要的大小)
  2. 挂载备份映像: mount /media/drive1/backuproot.img /media/backuproot/
  3. 挂载空/分区:mount /dev/sdb1 /media/sdb1/
  4. 将其内容复制到新分区(我不确定此命令,保留所有权非常重要,cp -R不会这样做!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • 同样的 /boot/

这应该这样做。


mli*_*ner 6

我对此的最终解决方案是多种技术的组合:

  1. 我同时将即将失效的驱动器及其替代品连接到计算机。
  2. 新驱动器比旧驱动器小,所以我使用 GParted 缩小了旧驱动器上的分区。
  3. 这样做之后,我复制了旧驱动器上的分区,并将它们粘贴到新驱动器上(也使用 GParted)。
  4. 接下来,我将引导标志添加到新驱动器上的正确分区,因此它实际上是旧驱动器的镜像。

这一切都运行良好,但我需要按照此处的说明更新 grub2 。

这一切都完成后,事情似乎奏效了。