我想保存我的 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 的磁盘。