我有一台只有一个驱动器的机器,在两个分区中安装了两个操作系统,一个是 Windows,另一个是 Ubuntu 16.04。已安装 Grub。
我刚刚买了一个新的物理驱动器。将它安装到机器上后,我想:
将当前驱动器一个分区中的 Ubuntu 复制到新驱动器
有一个 grub 允许我选择从 Windows、原始 Ubuntu 或新驱动器中的新 Ubuntu 启动
我做了研究,发现了一个非常相似的帖子(链接这里)在该线程中,这是建议的解决方案之一:
在新驱动器上创建一个 ext4 分区和一个交换分区。
从 LiveUSB 启动。
将旧的 Ubuntu 分区挂载到某个目录,将新的分区挂载到其他目录。
使用 cp -a 命令将所有文件从旧文件复制到新文件
将 grub 安装到新驱动器。
使用新的 UUID 更新 /etc/fstab
假设我当前驱动器中已经有 grub,并且我将把与它完全相同的 Ubuntu 复制到新驱动器,我需要将它安装在新驱动器上吗?
谢谢
答案1
在驱动器/文件系统挂载之前,Grub 会访问其配置文件。除非您复制原始驱动器,否则您可能会得到 grub 命令提示符。
您需要启动新操作系统并更新 grub。我在相同情况下做了以下操作:
- 将您的文件复制到新驱动器,并编辑新的 /etc/fstab 以反映新的 UUID。
- 更新 grub,以便您在旧 grub 中获得新驱动器的 grub 条目。
- 启动到新驱动器。重新安装 grub、更新 grub 并更新 initramfs。确保 grub 安装针对新驱动器。
- 移除旧驱动器,然后新驱动器就可以正常工作了。
- 一旦仅使用新驱动器启动,再次更新 grub 以删除旧驱动器的条目。
答案2
首先,cp -a 在这种情况下不合适。您要做的就是克隆分区。在这里我们将使用“dd”工具,但如果您愿意,还有其他带有 GUI 等的工具可用,例如 Clonezilla。
将两个驱动器连接到计算机。确保新驱动器的大小等于或大于您要复制的分区。它不需要格式化或做任何其他操作,只需保持原始状态即可。
启动实时 DVD/USB 并运行:
sudo blkid
这将列出计算机上的所有驱动器和分区。仔细记下要复制的分区,例如 /dev/sda1 和新的空白驱动器,例如 /dev/sdb(无编号)。
使用 dd 将您的分区克隆到新驱动器 - 请务必小心,如果您输入错误的命令,这可能会破坏您的数据!'if' 是您要复制的(旧)分区。'of' 是新的(空白)驱动器。不要混淆它们!例如:
sudo dd if=/dev/sda1 of=/dev/sdb status=progress
如果希望运行速度更快,可以添加 bs=4096,但我宁愿不这样做。现在走开去做其他事情,因为这将需要一段时间。
完成后(此时您仍处于实时会话中),您可以根据需要使用 gparted 向新驱动器添加交换分区,然后按如下所示安装/运行 Boot Repair - 这将在您选择的驱动器上安装一个全新的 Grub(覆盖任何现有的 Grub)并找到所连接的任何驱动器上的任何操作系统:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
重启并开始使用。注意:您需要确保您的 BIOS 正在启动带有全新 Grub 的驱动器。
~~~~~~~~~~
更新:抱歉回复迟了。所以是的,如果你现在还没有这样做,你之前说的就是你想要做的。在新驱动器上创建一个大约 20Gb 的空 ext4 分区,以安装新的 Ubuntu 系统。将旧驱动器上的 /home 分区克隆到新驱动器上(确保有足够的空间),然后最后添加交换分区。然后,你就可以从 USB 会话在新驱动器上安装系统了 - 在安装过程中选择“其他”选项,选择在空的 20Gb 分区上安装 / 并格式化,选择新克隆的 /home 分区而不格式化,并将 Grub 放在新驱动器上(参见底部的下拉选择,默认情况下应该已经选择了新驱动器),这样就可以了。
请记住,完成后,Grub 应该显示 Ubuntu x2 和 Windows x1,因此请确保您启动正确的系统。