无法使用 createrawvmdk 命令创建并指定分区的 vmdk 在 vi​​rtualbox 中运行本机 Ubuntu

无法使用 createrawvmdk 命令创建并指定分区的 vmdk 在 vi​​rtualbox 中运行本机 Ubuntu

我在单个硬盘上安装了 Win7 x64 和 Ubuntu 11.10 x64 双启动设置。

我想在 Win7 主机上运行的 Virtual-box 中将原生 Ubuntu 作为客户操作系统运行。

我使用以下命令列出分区:

C:\ >vboxmanage internalcommands listpartitions -rawdisk \\.\physicaldrive0
Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0x07  0   /32 /33  153 /27 /2           1200         2048
2       0x07  153 /27 /3   1023/254/63        363337      2459648
5       0x82  1023/254/63  1023/254/63          9537    746575872
6       0x83  1023/254/63  1023/254/63         46430    766107783
7       0x83  1023/254/63  1023/254/63         46431    861200384
4       0x07  1023/254/63  1023/254/63         10000    956291072

然后我创建了如下 vmdk 文件(指定 ubuntu 分区 5、6 和 7):

C:> vboxmanage internalcommands createrawvmdk -filename“C:\ubuntu_01.vmdk”-rawdisk \.\physicaldrive0 -partitions 5,6,7


vmdk 文件已成功创建,但当我创建虚拟机并指定此虚拟驱动器时,虚拟机无法启动,只有一个空白的黑屏,左上角有一个白色光标。它甚至没有显示 Grub 启动菜单。

然后我创建了另一个 vmdk 文件,但没有指定分区。

C:> vboxmanage internalcommands createrawvmdk -filename“C:\ubuntu_02.vmdk”-rawdisk \.\physicaldrive0

这次 VM 启动了,并且 ubuntu 从 VM 内部成功启动(出现 grub 2 启动菜单,选择 Ubuntu 后,它成功启动)。

如何在 VirtualBox 中为客户机 ubuntu 操作系统仅使用特定的本机 ubuntu 分区而不是整个磁盘?请帮忙。

主机:Win 7 x64
客户机:Ubuntu 11.10 x64
Vbox 版本:4.1.6 r74713,安装了最新的客户机添加组件。

答案1

当您使用您提到的方法从“虚拟化”真实硬盘启动 Ubuntu 时,它将找不到其启动管理器 Grub,因为在您的双启动设置中,Grub 很可能驻留在物理硬盘上第一个(启动)分区的 MBR 中。从那里,Grub 决定您选择启动 Windows 还是 Ubuntu。

如果您想从虚拟机启动 Ubuntu,那么您需要一个启动管理器(Grub),就像您在真实系统上需要它一样。

为了实现这一点,您需要在 Ubuntu 分区中安装 Grub,或者为 Grub 创建一个小型启动分区,以便轻松将其添加到虚拟机中。阅读这里,并且在GNU Grub 手册了解更多详情。

警告:如果您操作错误,这两种方法都可能破坏您的双启动设置,或者导致您的 Windows 或 Ubuntu 系统无法启动。


安全的方法:

访问主机和客户机数据的更安全方法是将 Ubuntu 安装在其自己的 10-15 GB VDI 上,然后将主机安装/home在客户机操作系统中以进行数据访问。通过这样做,您还可以加载主机或客户机内核模块,而不会破坏主机 Ubuntu 安装。

答案2

我找到了一个完美的解决方法。sda7是我安装 Linux 的分区,5,6,7是我想要虚拟化的本机分区,“ceztko”是我的家:P

  • 来自本国的linux,重新安装 grub 到原生 Linux 分区sudo grub-install --force /dev/sda7
  • 将分区引导扇区复制到你的主目录: # dd if=/dev/sda7 of=/home/ceztko/virtualbox-native.mbr bs=512 count=1
  • 复制virtualbox-native.mbr到你的 Windows 安装
  • 重新启动 Windows 并从管理员提示符开始:

    VBoxManage internalcommands createrawvmdk -filename C:\users\ceztko\ubuntu.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 5,6,7 -mbr c:\users\ceztko\Dropbox\resources\virtualbox-native.mbr

  • 运行 VirtualBox 并将新的虚拟驱动器分配给虚拟机。
  • 享受!

这可能是 Virtualbox 的一个错误。但我猜这更可能是 grub 的一个错误,当在启动盘中安装为 mbr 时,它会与无法访问的 Windows 分区混淆。  

答案3

我遇到了类似的问题,并且用稍微不同的方法解决了它,即无需启动本机 Linux。

如果您为 .vmdk rawdisk 指定了 -partitions 参数,还会创建 MBR 和一些后续扇区的映像,您可以在虚拟 Linux 中直接覆盖这些映像,而不会影响原始物理扇区。请查看 vmdk 文件以供参考。在我的情况下,平面映像覆盖了前 32kb。

为了首次启动虚拟 Linux,你可以使用例如超级Grub磁盘ISO 映像。成功启动后,照常修复虚拟环境下本地安装的 MBR。

请注意,如果您想在虚拟 MBR 上安装 grub,则 MBR 可能不够大,无法容纳整个 grub 映像。只有在尝试启动系统时才会注意到这一点。在这种情况下,您可以放大代表硬盘第一个扇区的平面映像。您需要相应地调整 .vmdk 文件。

答案4

完整的解决方案:

操作系统加载程序(Grub 就是其中之一)的正常位置是“PBR 上”,位于分区内。这是最安全的位置,可以防止其被破坏,而不是暴露在 MBR 上。

这使得 Linux 以常规方式启动,即加载 PBR 并执行它。插科打诨是一款不错的程序,可以进行多重引导和/或引导逻辑分区。最好将其放在 CD 上,例如系统救援光盘以及一系列工具。刻录 CD 或使用 ISO 文件启动它,然后选择 GAG 并进行配置,就完成了。

如果您在 Linux 允许的 6 个月内不暂停/恢复,Tux 会每天问候您。感谢您提示 GAG 将重写该虚拟 MBR。

如果你可以联系 GAG 的作者,请告诉他:

  1. 我永远感谢
  2. 他应该从完全填充的主屏幕开始配置,然后删除、重新排序和修改图标。这样就可以立即获得可用的配置,而不必进行大量操作才能开始。

相关内容