可以使用像 VirtualBox 这样的虚拟机管理程序来启动也可以直接启动的虚拟化操作系统吗?

Wau*_*uzl 60 vmware virtualbox virtualization

这个问题比较理论化:

假设我的 PC 在两个不同的分区上有两个不同的操作系统:sda1 上的 OS1 和 sda2 上的 OS2。是否有可能在 OS1 中设置一个像 VMWare 或 Virtualbox 这样的程序来访问 sda2,启动它并运行 OS2?另一方面,OS2 也应该可以直接启动。

我意识到模拟的 OS2 会慢很多,可能没有人会真正使用这个设置,但我觉得这很有趣。

use*_*686 58

这是可能的,是的,它不一定要更慢,因为现在它不再是仿真,而是虚拟化——大多数 CPU 支持硬件辅助虚拟化(VT-x 等),但即使没有这些,VirtualBox 也有很多使软件虚拟化 VM 快速运行的技巧。

在任何情况下,它都不会比启动一个普通的旧 VM 慢。它甚至可能更快(由于使用原始分区而不是碎片磁盘映像)。


但我不完全确定如何在 VirtualBox 中做到这一点——我认为您必须创建一个特殊的 .vdi 文件,使用vboxmanage它指向真实分区?另外,我不知道如何使引导加载程序在这种情况下工作。

尽管我过去常常通过在自身内部运行当前操作系统的只读副本来调试 Linux 上的各种启动问题,使用qemu-system-x86_64 -enable-kvm -hda /dev/sda -snapshot -monitor stdio.

  • 当然,为什么不呢?它与运行常规 VM 没有太大区别。唯一重要的部分是`-snapshot`,它会生成/dev/sda 的临时副本(这样两个系统就不会破坏彼此的数据)。 (8认同)
  • 你这个人,你实际上运行了一个内部虚拟化的操作系统? (6认同)
  • 您关于使用 vboxmanage 因此设置 VDI(而非 VHD)作为原始分区占位符的暂定声明是正确的。VBOX手册有详细的解释。我喜欢你的调试技巧。从来没有想过这样做,但我已经在考虑一些用例;-) (6认同)

Law*_*ceC 28

qemu将让您使用块设备,例如/dev/sda2,等作为虚拟硬盘驱动器。VMWare 也是如此。不确定Virtualbox。

当您/dev/sda2在 VM 中启动时,它会产生类似的效果,就像您取出硬盘并在具有不同硬件的不同计算机中启动它一样。如果操作系统可以处理该更改,那么您应该可以在 VM 和本机中运行该操作系统。当然,Windows 会给您带来问题,而 Linux 可能会很好地容忍它。

您可以通过使虚拟硬件与系统上的物理硬件尽可能匹配来缓解潜在问题——当然,您必须指定更少的 RAM。特别重要的是指定相同类型的磁盘控制器(IDE、SCSI 等)。

  • 显然,virtualbox 也可以使用“VBoxManage internalcommands createrawvmdk”命令来做到这一点(见[这里](http://www.linuxquestions.org/questions/linux-virtualization-and-cloud-90/virtualbox-use-a-host-虚拟机中的块设备-845406/) ) (8认同)

Mic*_*l B 19

完全有可能,其实我以前也是这样做的!

我有一个分区/磁盘(我忘了是哪个),一个是 Windows,一个是 Linux,我想那是在 Windows XP 的时代(诚然,这确实持续了一段时间)。这是访问两组数据的好方法,而无需使用不同安装的磁盘空间负载。

我记得唯一的问题是我需要在 XP 中设置两个不同的硬件配置文件。当它启动到错误的时,它真的很困惑。

我不确定当前的激活过程将如何响应硬件的切换。这很可能会导致一些问题......(但如果你只将 Windows 作为物理机启动,并将 Linux 作为虚拟机/或物理机,那就可以解决这个问题)

我记得我是用 VMware 工作站做到的。这绝对支持从原始磁盘启动。我确定 MS 版本可以。我对 Linux VM 不太确定,但如果不是,我会感到非常惊讶。


小智 8

有趣的是,对于那些在 Mac 上运行 VMware Fusion 的用户,使用 Windows bootcamp 分区,可以启动一个在 bootcamp 分区之外运行的虚拟机:

VMware Fusion 允许您启动已安装的 Boot Camp 分区,而不会影响其本机启动的能力。这使您能够使用 Fusion 从 Mac OS 内部访问 Boot Camp 分区,也可以直接重新启动和启动 Windows。

但是请注意:

由于操作系统识别不同的硬件,系统可能会提示您重新激活 Windows。

来源:VMware - 在 VMware Fusion 中启动 Boot Camp 分区

  • 他们建议您先安装他们的工具,以便激活过程在两种情况下看到相同的“硬件”。按照说明进行操作,否则您最终将在电话上与 Microsoft 激活服务器通话。 (3认同)

gro*_*taj 7

我就是这么做的。它非常有用,但有一些限制,设置它并不简单。

  • 本机或虚拟机操作系统必须能够容忍它运行的硬件。大多数 Linux 发行版并不关心,只要 CPU 架构匹配,它们就可以在您启动它们的任何东西上运行。使用 Windows 并不是那么顺利。您还可能面临激活/许可问题。

  • 在 Windows 上,当其分区安装在主机上时,您无法在虚拟机中启动操作系统。这没什么大不了的,因为在这种情况下,您可能希望在 Windows 中启动 Linux,而 Windowsext无论如何都不支持文件系统。

  • 设置引导加载程序很棘手。您需要单独的引导配置来在 VM 中引导和本地引导。我在本地启动时使用 Grub4DOS/NeoGrub 作为第一阶段引导加载程序,然后我能够链式加载 Windows 引导加载程序或引导到 Ubuntu。VM 安装了一个小(几 MB)驱动器,其优先级高于主驱动器。该驱动器包含手动安装的 GRUB2,我用来在 VM 中启动 Ubuntu。

  • 不寻常的引导加载程序设置需要仔细更新。例如,在本地运行 Linux 时更新 GRUB 可能会破坏您的引导加载程序链。在 VM 内部更新需要手动将其安装到引导分区。