如何在 VirtualBox 中使用现有的 ext4 硬盘?

Nul*_*uli 5 windows virtualbox hard-drive ubuntu

我有一个现有的硬盘,一个装有 Ubuntu Linux 的 NVME 驱动器。我有另一个装有 Windows 10 的 nvme 驱动器,用作我的主要操作系统(游戏、网页浏览等)。虽然我可以在一分钟之内在操作系统之间重新启动,但我希望有不这样做的自由。所以,我想知道,我可以“只”在 Virtual Box 中使用我的 Linux 驱动器吗?虚拟启动和真实启动一样吗?我该如何设置呢?

确实从这个问题中看到,VirtualBox 文档有一些关于使用“原始磁盘”作为虚拟存储的信息(第 9.7 章) ——但根据文档的格式,它看起来似乎没有在虽然或可能不是经常探索的配置,所以我担心正确性,并想知道该领域是否有现实世界的成功故事

更新 (2020-07-25)

通过创建 VDMK 后

# CWD: C:\Program Files\Oracle\VirtualBox

VBoxManage.exe internalcommands createrawvmdk -filename "C:\Users\me\VirtualBox VMs\Ubuntu (local NVMe)\local-nvme.vmdk" -rawdisk \\.\PhysicalDrive1
Run Code Online (Sandbox Code Playgroud)

并关闭/退出 VirtualBox 和相关服务,然后以管理员身份启动 VBoxSVC.exe 和 VirtualBox.exe 程序,

我收到错误:

The I/O cache encountered an error while updating data in medium "ahci-0-0" (rc=VERR_ACCESS_DENIED). Make sure there is enough free space on the disk and that the disk is working properly. Operation can be resumed afterwards.
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为磁盘当前处于联机状态并且需要脱机,但我没有找到一种在没有其他错误的情况下使磁盘脱机的方法 在此输入图像描述

磁盘 1 上有一个 EFI 分区 - 但现在不应该了 - 我曾经使用 Ubuntu 双引导,因此 512MB 分区应该只是 grub2。

注意:磁盘 0 是我的系统驱动器/装有 Windows 的驱动器。另外,我目前不使用 Grub 作为引导加载程序。

Nul*_*uli 2

这真是一次冒险!

我将尝试在这里分解我的过程,这样它比上面关于该问题的评论线程更容易阅读。

步骤 1:找出您要使用的原始磁盘的驱动器号

两种方式:

  • 打开“磁盘管理”,记Disk #下卷名列中代表您要在 VirtualBox 中使用的物理磁盘的 Windows 10 磁盘管理实用程序

    对我来说,它恰好是Disk 1。请注意,如果驱动器当前已安装在您的系统上,“卷”列可能会显示分区标签而不是Disk # Partition #.

  • 另一种方法是打开命令提示符(通过Windows+R并键入cmd然后按)并在命令提示符窗口打开后Enter运行命令。diskpartWindows 会询问您是否允许 lprogram 运行(标准管理权限提示)。一旦diskpart.exe打开它自己的窗口,您就可以运行list disk来列出您的磁盘。 项目清单

步骤2:在virtual box中创建虚拟机,但不带硬盘

我将我的命名为“Ubuntu(本地NVMe)”,位于默认位置

C:\Users\<UserFolder>\VirtualBox VMs\Ubuntu (local NVMe)\
Run Code Online (Sandbox Code Playgroud)

更多详细信息,请访问https://www.serverwatch.com/server-tutorials/using-a-physical-hard-drive-with-a-virtualbox-vm.html

步骤 3:创建vdmk与 Virtual Box 一起使用的虚拟磁盘文件

# CWD: C:\Program Files\Oracle\VirtualBox

VBoxManage.exe internalcommands createrawvmdk -filename "C:\Users\<UserFolder>\VirtualBox VMs\Ubuntu (local NVMe)\local-nvme.vmdk" -rawdisk \\.\PhysicalDrive1
Run Code Online (Sandbox Code Playgroud)

这里的重要部分是\\.\PhysicalDrive1最后的。确保后面的数字PhysicalDrive与您在步骤 1 中标识的驱动器号匹配。

步骤 4:关闭 Virtual Box 并以管理员身份重新打开

我通过右键单击任务栏中的快速快捷方式来执行此操作:在此输入图像描述

步骤 5:确保原始磁盘处于“离线”/未安装状态

当我们在虚拟机中使用磁盘时, Windows 无法真正控制该磁盘,因此我们需要确保它处于脱机状态。

  1. 再次运行diskpart
  2. 列出磁盘
  3. 选择磁盘 1(或您的磁盘的编号)
  4. 离线磁盘

这是我在原始问题中遇到的问题的一部分。我无法使磁盘脱机,因为该磁盘上有 Windows EFI 分区。

错误如下:

Disk attributes may not be changed on the current system disk or bios disk 0
Run Code Online (Sandbox Code Playgroud)

这怎么发生的?我曾经经常使用双引导,管理多引导系统的常见策略是配置 Grub(默认的 Ubuntu Linux 引导加载程序)以了解计算机上的所有其他操作系统。

我首先尝试删除 Ubuntu 驱动器 EFI 分区中的 EFI/Microsoft 文件夹——结果发现该文件夹正在被使用(如错误所述)。

因此,要恢复默认的 Microsoft EFI 分区,您需要遵循以下指南:http ://woshub.com/how-to-repair-deleted-efi-partition-in-windows-7/

长话短说:

  1. 如果 EFI 分区不存在,请启动实时 gparted 磁盘(或通过重新启动在另一个驱动器上的 Linux 安装上使用 gparted)并调整大小/为 100MB fat32 分区腾出空间
  2. 按照 woshub.com 链接上的其余说明进行操作
  3. 您现在可以再次启动进入 Windows!

第 6 步:在 Virtual Box 中,将 vdmk 连接到新虚拟机

您可能需要更改文件浏览器以查看“所有文件”才能看到它