将 Vultr(云)VM 转换为 Virtual Box VM

将 Vultr(云)VM 转换为 Virtual Box VM

我最近将 Vultr VPS 的 DD 映像传输到我的家用电脑。我使用 Debian VirtualBox VM 制作了一个新的虚拟磁盘,挂载了 DD 映像,并将 DD 映像中的所有文件 rsync 到新的虚拟磁盘。我/etc/fstab使用新的 UUID 编辑了根文件系统,并/etc/networking/interfaces使用虚拟磁盘上的新接口进行了编辑。然后我将其从此 VM 中分离出来。

我创建了一个全新的 VirtualBox VM,并连接了这个新创建的虚拟磁盘,并假设它会启动。但事实并非如此。我只看到黑屏上闪烁的光标。没有其他反应。我甚至/boot从正在运行的 Debian VirtualBox VM 进行了 rsync。仍然只是一个闪烁的光标。

我是否遗漏了某些显而易见的东西?有什么想法吗?感谢您的意见。

答案1

有。

在启动过程中出现文件系统概念之前,需要加载一段能够理解文件系统的代码 - 这被称为引导加载程序,通常位于磁盘的前几个扇区或特殊 UEFI 分区上的特殊文件夹中。

在您的情况下,它很可能是 GRUB,需要安装在新映像上(再次:在根文件系统之外!)

从具有恢复模式的实时 Linux 系统启动并在虚拟磁盘上(重新)安装 Grub。

答案2

感谢@Eugen Rieck 的回答,我成功了!

还要感谢https://unix.stackexchange.com/questions/191218/how-to-install-grub-on-a-new-drive如何修复 grub.cfg 中的错误 UUID?

解决方案:

  • 我启动了 GParted Live 并运行了终端会话。
  • sudo mount /dev/sda1 /mnt
  • sudo /mnt/usr/sbin/grub-install /dev/sda --skip-fs-probe --boot-directory=/mnt/boot
  • sudo sed -i 's/OLD-UUID/NEW-UUID/g' /mnt/boot/grub/grub.cfg(我从 grub.cfg 文件中获得了旧的 UUID。它被列出了几次,因此用 进行全局替换sed。而新的 UUID 来自blkid。)

相关内容