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

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

Drive 1: 160GB, /home Drive 2: 40GB, /boot and / 

不幸的是,驱动器2似乎正在消亡,因为尝试写入它会给我带来错误,并且检查SMART设置会显示一种悲伤的状态。

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

我想我需要做一些更新到grub,我需要移动一些东西,但我很困惑如何完全解决这个问题。 由于这是我的主计算机,我要小心不要搞砸了,所以我无法启动。

你需要从live 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 

(当然,填写你复制的东西的实际分区)

然后在/ 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 

现在chroot到驱动器中,以便您可以强制GRUB根据新布局更新自己:

 sudo chroot /media/root sudo update-grub 

第二个命令将提出一个投诉(我忘了它是什么……),但是可以忽略。

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

如果您立即更换驱动器,您可以使用dd (几个月前在我的服务器上试过它,它就像一个魅力)。

你也需要一张启动CD。

  1. 启动boot-CD
  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 post)。

如果你想调整你的分区大小(就像我一样):

  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/

这应该做到这一点。

我对此的最终解决方案是多种技术的结合。 我同时将dyring驱动器及其替换件连接到计算机。 新驱动器比旧驱动器小,所以我使用gparted缩小旧驱动器上的分区。 在这之后,我复制旧驱动器上的分区,并将它们粘贴到新驱动器上(也使用gparted)。 接下来,我将引导标志添加到新驱动器上的正确分区,因此它实际上是旧驱动器的镜像。

这一切都很好,但我需要按照这里的说明更新grub2: https : //help.ubuntu.com/community/Grub2/Installing#Reinstall_from_the_LiveCD

完成所有这些后,事情似乎有效。 感谢大家的帮助。