将 Ubuntu 16.04 从内置 SSD 克隆到外置 HDD 后的 Grub 终端

将 Ubuntu 16.04 从内置 SSD 克隆到外置 HDD 后的 Grub 终端

我目前在 E580 ThinkPad 的 240 SSD 上安装了 Ubuntu 16.04。我想将我的安装克隆到外部 1Tb HDD,然后在 SSD 上用 Windows 10 替换 ubuntu。原因是我需要运行只能在 Windows 上运行的 3D CAD 软件 SolidWorks (SW)。我目前在外部 USB 3.0 1TB HDD 上安装了 Windows 10 和 SW,但结果相当滞后。

使用fdisk -l我发现SSD是/dev/nvme0n1和新的HDD是/dev/sda。作为描述在这里我已经尝试过通过从 Ubuntu Live CD 启动然后使用 将 SSD 克隆到 HDD dd if=/dev/nvme0n1 of=/dev/sda bs=64K conv=noerror,sync,但从 HDD 启动时我得到了 grub 终端。我对此还很陌生,所以我不知道下一步该怎么做。任何帮助都将不胜感激。

答案1

您可以使用这个脚本:Bash 脚本将 Ubuntu 克隆到新分区以测试 18.04 LTS 升级克隆 Ubuntu 16.04(或其他发行版和版本):

克隆-ubuntu.png

答案2

免责声明:我已经采取了步骤手动将 Ubuntu 移动到 f2fs 分区。

首先我有一个问题:您是从活动系统运行 dd 还是使用实时启动的系统来克隆当前安装?

我建议采取以下步骤:

  1. 在新的目标驱动器上创建所需的分区
  2. 使用 rsync 将安装从外部启动的实时系统复制到新位置
  3. 绑定几个文件夹并 chroot 到新的目标副本中
  4. 更新 /etc/fstab 以获取新位置
  5. 安装并更新 grub

1. 复制到新目标
从 Ubuntu 安装磁盘启动并使用 synaptics 查看目标驱动器,并在必要时创建分区。

之后,打开 bash,进入 root shell 并执行:

cd /media
mkdir -p ubuntu ubuntu/oldRoot ubuntu/newRoot
cd ubuntu

现在检查你的分区。作为示例,我选择以下内容:

  • /dev/sda1——旧根
  • /dev/sdb1-新根

安装它们:

mount /dev/sda1 ./oldRoot
mount /dev/sda2 ./newRoot

2. 复制到新位置

rsync -avWHAX --progress ./oldRoot/* ./newRoot/

3. Chroot 到新位置

mount -o bind /dev ./newRoot/dev
mount -o bind /sys ./newRoot/sys
mount -o bind /proc ./newRoot/proc

chroot ./newRoot

4. 更新新位置的 fstab
检查分区的新 UUID 并/etc/fstab用它替换旧 UUID。

5.安装并更新grub

我猜你现在将 SSD 作为了第一启动设备。你可以选择如何操作,请阅读下文。
我将向你展示第二种方法:

grub-install /dev/sdb
update-grub

exit
umount ./*

现在您应该可以从新位置启动 Ubuntu。

Grub 选项:

  1. 将 grub 安装到 ssd 上,验证系统是否能从新位置正常启动,在 ssd 上安装 Windows(很可能再次删除 grub)并重新运行我列表中的第 3-5 点。这样,您将拥有相同的启动顺序。

  2. 将 grub 安装到 Ubuntu 所在的 HDD 上,并在将 Windows 安装到 SSD 上后执行更新 grub。这样,您必须将启动顺序更改为 HDD,但即使移除其中一个磁盘,它也能让您的系统正常运行。对于 Windows,您只需再次更改启动顺序,您的 Ubuntu 就可以在没有 SSD 的情况下启动。



dd 的附注

dd 是一个低级工具,它只是复制块,就像它们散落在各处一样。这意味着您的目标设备必须至少与源设备一样大。如果您有一个大分区,几乎没有填满,您仍然会将所有空白空间从源复制到该分区。使用 rsync 执行此任务会将现有文件复制到另一侧,并且如果您过去认为有东西想要更改,您可以自由更改分区布局,这就是机会^^。

答案3

我最近将双启动 (Windows 10 + Ubuntu 20.04) 从 HDD 克隆到新的 M.2 NVMe SSD 后遇到了 Ubuntu 无法启动的问题。Windows 启动正常,但 Ubuntu 只显示 Grub shell。

根据 AskUbuntu 的另一篇文章和其他一些论坛的建议,我使用了 Ubuntu Boot-Info 工具,它显示问题是,在克隆过程中,GRUB 安装在分区 1 中,而不是我安装 Ubuntu 的分区 7 中。所以我使用了 Ubuntu Boot-Repair 工具,它在正确的分区中重新安装了 GRUB,然后就好了!

相关内容