准备把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-grub
,grub-install
,重启时成功出现了grub
的界面。我选择SSD启动,结果仍然启动了之前的系统。
然后进入熟悉的grub
命令行操作。一遍成功。开机是真的快,15秒以内。所有东西真的都是完美的克隆,连Chrome都还记得上次打开的标签页。另一件让我惊奇的事是Mathematica可以照常运行。(那还要激活干什么,不是一个U盘就可以完美复制\(\infty\)份了)
结果在新系统中运行update-grub
,grub-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,所以空间稍显紧张。于是我打算把VirtualBox
和qemu
搬出去。
qemu
搬得很顺利,直接mv过去就可以正常运行。然而VirtualBox
加载vdi文件发生了一些偏差,一运行就到emergency mode了。
试着把原来的文件放回去(而不是用vdi新建一个虚拟机),VBox
就说什么UUID不匹配。网上找的解决方法都不管用。只好把~/.config/VirtualBox
也拷过来,就回到最初的起点。
然后导出,把ova文件放到700多G的盘上,再导入。就成功了。