我目前在 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(或其他发行版和版本):
答案2
免责声明:我已经采取了步骤这手动将 Ubuntu 移动到 f2fs 分区。
首先我有一个问题:您是从活动系统运行 dd 还是使用实时启动的系统来克隆当前安装?
我建议采取以下步骤:
- 在新的目标驱动器上创建所需的分区
- 使用 rsync 将安装从外部启动的实时系统复制到新位置
- 绑定几个文件夹并 chroot 到新的目标副本中
- 更新 /etc/fstab 以获取新位置
- 安装并更新 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 选项:
将 grub 安装到 ssd 上,验证系统是否能从新位置正常启动,在 ssd 上安装 Windows(很可能再次删除 grub)并重新运行我列表中的第 3-5 点。这样,您将拥有相同的启动顺序。
将 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,然后就好了!