如何在 VirtualBox 虚拟机中使用安装了 Windows 7 的真实分区?

如何在 VirtualBox 虚拟机中使用安装了 Windows 7 的真实分区?

我的 Ubuntu 12.04 安装在 上/dev/sda5 ,Windows 7 安装在 上/dev/sda1。当我运行 Ubuntu 时,我想使用 Virtualbox 在虚拟机中运行 Windows 7。Windows 7 分区为 1 TB,已满一半,即很大,所以我不想将其复制到虚拟硬盘中。

我读到过,Virtualbox VM 可以使用真实硬盘,但我发现的各种说明各不相同,似乎无法使其工作。有谁知道如何在 Ubuntu 12.04 和 Virtualbox 2.1.12_Ubuntu r77245(最新安装的 Ubuntu 存储库)中使其工作?

请发布它对您的作用,因为我想重试任何可能有效的方法。

答案1

你想要的命令是

VBoxManage internalcommands createrawvmdk -filename Win7.vmdk -rawdisk /dev/sda -partitions 1

这将创建一个特殊的 VMDK 虚拟磁盘文件(Win7.vmdk),它实际上是指向主机磁盘分区的指针/dev/sda1

理论上,您可以将其用作虚拟机的磁盘文件,直接从实际磁盘分区运行,但是......

  • (a)我从未尝试过,所以不知道它有多可靠
  • (b)您可能会遇到 Windows 激活问题,具体取决于您的许可证密钥以及 Windows 是否确定检测到的“硬件”发生了重大变化

答案2

是的,你可以使用内部createrawvmdk命令来做到这一点,它将不是创建整个磁盘映像,但指向实际硬件。

有两种方法可以做到这一点

  • A。完整磁盘映像(/dev/sdb)

    sudo VBoxManage internalcommands createrawvmdk -filename sdb.vmdk -rawdisk /dev/sdb
    
  • B.分区映像

    正如@StarNamer 所示,您只能使用一个或几个分区。

    要创建一个(/dev/sda1)分区的映像:

    sudo VBoxManage internalcommands createrawvmdk -filename sda1.vmdk -rawdisk /dev/sda -partitions 1
    

    要创建按以下顺序映射 /dev/sda2 和 /dev/sda1 的自定义分区表:

    sudo VBoxManage internalcommands createrawvmdk -filename sda2_1.vmdk -rawdisk /dev/sda -partitions 2,1
    

最显著的区别是完整磁盘映像将使用与磁盘中完全相同的引导加载程序和分区表,因此理论上(我以前只在 qemu 中这样做过)您将能够从虚拟机中设置操作系统。从我有限的经验来看,我可以说完整磁盘映像将完全按照qemu -hda /dev/sdb.

注意:如果您使用用户访问磁盘,则需要将其添加到diskvboxusers组,例如

sudo usermod -aG disk,vboxusers ubuntu

然后确保重新登录或重新启动计算机。

进一步阅读:

答案3

有一个名为“不可变”的磁盘选项,因此理论上如果您为链接到原始磁盘的 vmdk 选择此选项,它不应该更改原始分区。

为此,请打开“文件”下的“虚拟媒体管理器”,选择您的图像并单击“修改”(您必须确保此图像未附加到任何机器,否则会出现错误)。现在您可以将媒体类型设置为“不可变”。

不过,我还没有测试过。如果有人测试过(当然是使用测试设置),最好在这里报告一下。

有谁反对这个想法吗?

答案4

经过多次尝试,我最终找到了一个干净利落的解决方案:

  1. 启动您想要虚拟化的 Windows 分区
  2. 下载磁盘2VHDSysinternals 的实用程序
  3. 如果你有 UEFI 分区按照这些说明操作
  4. 创建 VHD(不是 VHDX)C 分区的映像、恢复、UEFI(如果有)以及您想要的其他任何内容
  5. 返回 Linux,打开 VirtualBox 并根据您的 Windows 操作系统规格创建一个 VM
  6. 将第 4 点创建的 VHD 磁盘附加到该 VM
  7. 就是这样
  8. 利润

UEFI 情况下的故障排除:

  1. 在虚拟机设置中,在 VirtualBox 中,选中“系统”选项卡下的“启用 EFI”选项
  2. 如果您在 EFI Shell 处遇到困难,请运行以下命令:

    fs0:\EFI\Boot\bkpbootx64.efi
    

相关内容