免重装将Linux迁移至SSD

Posted by wyj on August 28, 2019

准备把Ubuntu迁移到之前一不小心被我dd了的SSD上。

参考教程,不知道管不管用。

创建分区

发现我还没有装gparted,就先装了。研究了一下这个东西是怎么自动以root权限执行的。

然后进行几项操作。怎么全都是待进行?我等了很久,最后等不及,直接关了。我以为是gparted垃圾,就用了自带的parted,做的几个操作都挺成功的。然而parted的命令行界面过于晦涩难懂,我就放弃了。

Google之后发现这个神奇的gparted是要在”应用全部操作”之后才能操作。这软件太不友好了。

他是BIOS,我是UEFI,所以自己稍微魔改了一下,不知道能不能行。

复制文件

首先是/boot,由于此目录包含不止一个分区,所以稍繁琐。

然后是普通目录们。

在复制/home之前,已经可以正常chroot了。

先去睡觉了。

晚上后台复制完了/home,早上起来已经可以正常的在chroot后的文件系统登录自己的账户了。(还可以双重chroot,即chroot /snap/core18/current……)

挂载分区

即修改新系统的fstab中UUID。

尝试启动

真的很慌。之前由于手贱删了Windows,把开机时的grub界面搞没了。不知道现在还能不能成功在grub中手动启动。

然后发现grub果然不能出现。于是我update-grubgrub-install,重启时成功出现了grub的界面。我选择SSD启动,结果仍然启动了之前的系统。

\[\textrm{分割线}\]

然后进入熟悉的grub命令行操作。一遍成功。开机是真的快,15秒以内。所有东西真的都是完美的克隆,连Chrome都还记得上次打开的标签页。另一件让我惊奇的事是Mathematica可以照常运行。(那还要激活干什么,不是一个U盘就可以完美复制\(\infty\)份了)

结果在新系统中运行update-grubgrub-install还是不行,不知道怎么回事。然后进grub命令行看了看选项,发现这个智障grub有一个UUID没有跟着改(别的都改了),把这个UUID改成正确的值,就引导成功了。

于是就先进入旧系统,仔细研究了一下grub的配置文件结构。果断决定直接编辑那个”DO NOT EDIT THIS FILE”的/boot/grub/grub.cfg。然后再update-grub果然没有覆盖我的修改。看来这应该是update-grub的Bug,它忘了修改

linux /boot/vmlinuz-5.0.0-25-generic root=UUID=....

一行中的UUID。这既是之前引导失败的原因,也是现在可以成功修复错误的原因。

于是再次重启之后引导成功。

虚拟机移动

由于我SSD只有128G,而之前是200G,所以空间稍显紧张。于是我打算把VirtualBoxqemu搬出去。

qemu搬得很顺利,直接mv过去就可以正常运行。然而VirtualBox加载vdi文件发生了一些偏差,一运行就到emergency mode了。

试着把原来的文件放回去(而不是用vdi新建一个虚拟机),VBox就说什么UUID不匹配。网上找的解决方法都不管用。只好把~/.config/VirtualBox也拷过来,就回到最初的起点。

然后导出,把ova文件放到700多G的盘上,再导入。就成功了。