无法将物理 Linux 系统导出到 VirtualBox VM

无法将物理 Linux 系统导出到 VirtualBox VM

我想保存我的 Linux 系统(包括包、文件和配置) 并使用 VirtualBox 以虚拟机的形式将其导出到另一台笔记本电脑。

我已经能够创建正确格式的文件(.vdi),使用以下命令:

sudo dd if=/dev/sdb of=/media/HDD/disk.img
VBoxManage convertdd disk.img disk.vdi --format VDI

我也可以通过这一行实现这一点:

sudo dd if=DRIVE | VBoxManage convertfromraw stdin FILENAME.vdi BYTES

但是,当我在 VirtualBox 中将生成的 VDI 文件作为现有硬盘打开时,每次尝试启动时都会显示相同的错误:no bootable medium found.

我还尝试了另一种解决方案,即在实时 USB 密钥上运行 CloneZilla 工具;我能够生成系统映像并将其存储在外部硬盘上。

当我在虚拟机上进行恢复时,无法识别该映像。包含该映像的 USB 设备未出现在分区列表中。

这是我的 /dev/sdb 输出:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 24.0 GB, 24015495168 bytes
255 heads, 63 sectors/track, 2919 cylinders, total 46905264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7ef857ad

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1    46905263    23452631+  ee  GPT

此处为 UUID/boot/grub/grub.cfg匹配/etc/fstab在 /dev/sdb1 中。

答案1

在映像上安装(或重新安装或修复) GRUB2 最简单的方法是使用另一个运行 Linux 的 VM。另一种方法是toh 的回答,相当复杂。如果您启动 Linux VM,并将新磁盘映像(除了 VM 自己的磁盘)插入其中,它将被视为真实磁盘而不是文件,从而无需设备映射器(请参阅上面的链接)。

因此,启动另一个 Linux VM,挂载新的 vdi 磁盘,

       mount /dev/sdb1 /mnt

并 chroot 到其中:

   mount -o bind /proc /mnt/proc
   mount -o bind /sys  /mnt/sys
   mount -o bind /dev  /mnt/dev
   cd /mnt; chroot . 

现在可以按如下方式安装 grub

   grub-install /dev/sdb
   update-grub /dev/sdb

然后离开chroot环境(通过“exit”Ctrl+D

  umount /mnt/dev
  umount /mnt/proc
  umount /mnt/sys
  umount /mnt

您的新 vdi 磁盘现在可以启动,并且可以用作新 Linux VM 的磁盘。

相关内容