![如何将启动分区和根分区移动到另一个驱动器](https://linux22.com/image/806024/%E5%A6%82%E4%BD%95%E5%B0%86%E5%90%AF%E5%8A%A8%E5%88%86%E5%8C%BA%E5%92%8C%E6%A0%B9%E5%88%86%E5%8C%BA%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8.png)
我的计算机上有两个驱动器,其配置如下:
Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /
不幸的是,驱动器 2 似乎已经坏了,因为尝试写入它时出现了错误,而检查 SMART 设置则显示了令人沮丧的情况。
我在驱动器 1 上有足够的空间,因此我想要将 / 和 /boot 分区移动到该驱动器,从系统中删除驱动器 2,用新驱动器替换驱动器 2,然后逆转该过程。
我想我需要对 grub 进行一些更新,并且需要移动一些东西,但我对如何进行操作感到困惑。由于这是我的主计算机,所以我要小心,不要弄乱一切,以免无法启动。
答案1
您需要从 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 中绑定挂载 /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
第二条命令会发出一个抱怨(我忘了它是什么了......),但可以忽略。
通过移除坏驱动器进行测试。如果不行,坏驱动器应该仍然能够启动系统,但我相信这些都是必要的步骤。
答案2
我最终的解决方案是结合多种技术:
- 我同时将损坏的驱动器及其替换件连接到计算机。
- 新驱动器比旧驱动器小,因此我使用 GParted 缩小了旧驱动器上的分区。
- 完成后,我复制了旧驱动器上的分区,并将其粘贴到新驱动器上(也使用 GParted)。
- 接下来,我将启动标志添加到新驱动器上的正确分区,因此它实际上就是旧驱动器的镜像。
一切正常,但我需要按照说明更新 grub2这里。
完成所有这些之后,事情似乎进展顺利。
答案3
如果您立即更换驱动器,则可以使用它dd
(几个月前在我的服务器上尝试过,并且效果很好)。
为此,您还需要一张启动 CD。
- 启动CD
- 仅安装驱动器 1
- 运行
dd if=/dev/sdb1 of=/media/drive1/backuproot.img
- sdb1 是您的根 (/
) 分区。这会将整个分区保存在一个文件中。- 同样
/boot
- 同样
- 关机,更换磁盘,开机
- 运行
dd if=/media/drive1/backuproot.img of=/dev/sdb1
—写回。- 同样
/boot
- 同样
上述操作将创建 2 个大小与之前完全相同的分区。您可能需要调整 grub(查看 macos 帖子)。
如果您想调整分区大小(就像我一样):
- 在新驱动器上创建 2 个分区(分别为
/
和/boot
;大小随意) - 挂载备份映像:
mount /media/drive1/backuproot.img /media/backuproot/
- 挂载空
/
分区:mount /dev/sdb1 /media/sdb1/
- 将其内容复制到新分区(我不确定这个命令,保留所有权非常重要,
cp -R
不会这样做!)cp -R --preserve=all /media/backuproot/* /media/sdb1
- 同样
/boot/
- 同样
这应该可以。