「VirtualBox」- 挂载物理磁盘,并从物理磁盘启动

  CREATED BY JENKINSBOT

问题描述

操作系统已安装到物理磁盘(或者 USB 设备),我们希望虚拟机能够直接挂载该磁盘,并从该磁盘中启动。

该笔记将记录:在 VirtualBox 中,如何在虚拟机中添加物理磁盘,并从中启动,及相关问题的处理方法。

在 Linux 中

# 创建硬盘的虚拟硬盘文件
# -filename:指定 硬盘 要映射到的 虚拟机硬盘文件名;
# -rawdisk:指定要启动的硬盘,我们这里是 /dev/sda 设备;
vboxmanage internalcommands createrawvmdk  \
	-filename /vbox/filename.vmdk          \
	-rawdisk /dev/sda

# 将当前用户加入 disk Group,以授予 VirtualBox 访问该磁盘的权限;
# 否则,虚拟机将无权限访问物理磁盘文件;
ll /dev/sda                                # 注意不同 Linux 发行版,磁盘属于不同组;
usermod -a -G disk $(whoami)               # 在 Ubuntu 20 中,属于 disk 组;

# 配置虚拟机启动时加载的 vmdk 文件;
# 如果是 EFI 引导,需要 System / Motherboard 配置,勾选 Extened Features / Enable EFI 选项;
# 其他细节,这里不再赘述

在 Windows 中

Windows ,与 Linux 类似,只是命令行参数稍有不同,命令如下:

VBoxManage internalcommands createrawvmdk -filename F:\usb.vmdk -rawdisk \\.\PhysicalDrive2

# -rawdisk:该参数的指定的是磁盘标识符。

注意,需要以管理员身份运行 CMD 程序,即该命令需要以管理员身份运行。

如何填写 -rawdisk 的参数

通过命令行确定:

# diskpart
...

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          476 GB  1024 KB        *
  Disk 1    Online          476 GB  2048 KB        *
  Disk 2    Online          238 GB      0 B

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    System             300 MB  2048 KB
  Partition 2    Reserved           128 MB   302 MB
  Partition 3    Unknown             46 GB   430 MB
  Partition 4    Unknown             48 GB    46 GB
...
  
// 根据分区表,来确定 Disk 0 确实是我们需要使用的磁盘
// 此时,应该使 \\.\PhysicalDrive0 作为参数 

通过图形化工具确定:
1)Win + R,运行 diskmgmt.msc 命令,进入磁盘管理;
2)在磁盘管理中,点击要启动的硬盘;
3)下面会显示当前是磁盘的编号(如图);
4)在命令行中 PhysicalDrive 后面的数字为磁盘的编号,

如图为磁盘 2,则参数 -rawdisk 值为 \\.\PhysicalDrive2

注意事项

在 Linux 下,当安装 VirtualBox 程序后,命令 VBoxManage 通常会自动加入环境变量中。如果不在环境变量中,则在 VirtualBox 的安装目录中。Windows 也是如此。

参考文献

VirtualBox怎么设置从u盘启动,虚拟机从U盘启动
Using a Physical Hard Drive with a VirtualBox VM
How to Use DiskPart Utility in Windows
permissions – VERR_ACCESS_DENIED when trying to add a raw disk to virtual box – Unix & Linux Stack Exchange
Booting a Physical Windows 10 Disk Using VirtualBox on Linux