我在单个硬盘上安装了 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 的作者,请告诉他:
- 我永远感谢
- 他应该从完全填充的主屏幕开始配置,然后删除、重新排序和修改图标。这样就可以立即获得可用的配置,而不必进行大量操作才能开始。