直接说明

直接说明

使用虚拟盒,我如何将操作系统安装到辅助物理磁盘,并在两个虚拟盒(不同时间)中启动它,以及作为典型的辅助操作系统安装?

答案1

当这个问题最初发布时,我自鸣得意地评论道(“直截了当”),几个月后,我发现自己在这个页面上寻找同样的答案


直接说明

今天,我成功从物理驱动器启动。实现此目标需要:

  • 60 分钟直读
  • 写这篇文章需要 30 分钟
  • 20 分钟尝试 VirtualBox 中的不同选项

亲爱的读者,您的注意力将集中在这样一个事实上:当以这种方式访问​​磁盘时,删除数据同样是件很简单的事情。如何完成此操作的过程留作练习...

图片(确实发生了:)

grub 2

1. 创建从真实驱动器读取的 vmdk 驱动器

要在 Linux 主机上创建代表整个物理硬盘的映像(它不包含任何实际数据,因为这些数据都将存储在物理磁盘上),请使用以下命令

VBoxManage internalcommands createrawvmdk \
    -filename /path/to/file.vmdk \
    -rawdisk /dev/sda

您必须具有对物理磁盘设备文件的读取权限/dev/sda。为此,您可以更改设备文件的所有者和访问权限,或者VBoxManage internalcommands createrawvmdk以 root 身份运行...(放在sudo命令前面)。

在 Windows 主机上,不要使用上述设备规范,而是使用 eg \\.\PhysicalDrive0(请参阅下面的“在 Windows 中枚举物理驱动器”部分)。在 Mac OS X 主机上,使用 eg /dev/disk1(并卸载 disk1 上的所有分区)。

(all on one line)
C:\VirtualBoxDrives>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
    internalcommands createrawvmdk
    -filename C:\VirtualBoxDrives\raw-0.vmdk 
    -rawdisk \\.\PHYSICALDRIVE0

(output)
RAW host disk access VMDK file C:\VirtualBoxDrives\raw-0.vmdk created successf..

2023 年虚拟盒 7 中不再使用内部命令,因此请改为执行以下操作:

VBoxManage.exe createmedium -filename 3.nvme-pro.vmdk --variant RawDisk --format=VMDK --property RawDrive=\\.\PhysicalDrive3

 

2. 将 vmdk 驱动器分配给虚拟机

VM -> 设置 -> 存储 -> 添加 ide / sata -> 选择现有磁盘 -> 浏览

分配

 

3. 设置其中一种 Writethrough 模式。

文件 -> 虚拟媒体管理器 -> 例如 raw-0.vmdk -> [修改] -> (o) Writethrough

  • 对所有驱动器重复此操作

设置直写

 

3. 重新排序启动优先级(半可选)

虚拟机->设置->系统->启动顺序

[./] Hard Disk
[./] CD/DVD
[  ] Floppy
[  ] Network

VM -> 设置 -> 存储 -> 控制器:SATA -> 例如 raw-5.vmdk -> 硬盘:Sata 端口 0

 

相关章节(手动的

  • 第 9 章 高级主题

    • 9.9. 高级存储配置
      • 9.9.1. 在客户机上使用原始主机硬盘
      • 9.9.1.1. 访问整个物理硬盘
         
  • 第 5 章 虚拟存储

    • 5.2. 磁盘映像文件(VDI、VMDK、VHD、HDD)
    • 5.3. 虚拟媒体管理器
    • 5.4. 特殊图像写入模式

在 Windows 中枚举物理驱动器:

C:\Users\win7>wmic diskdrive list brief

Caption                               DeviceID            Model                                 Partitions  Size
Samsung SSD 840 EVO 250GB ATA Device  \\.\PHYSICALDRIVE3  Samsung SSD 840 EVO 250GB ATA Device  6           250057228288
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE1  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE2  ST1000DM003-1CH162 ATA Device         5           1000202273280
ST1000DM003-1CH162 ATA Device         \\.\PHYSICALDRIVE0  ST1000DM003-1CH162 ATA Device         5           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE5  WDC WD1000DHTZ-04N21V0 ATA Device     6           1000202273280
WDC WD1000DHTZ-04N21V0 ATA Device     \\.\PHYSICALDRIVE4  WDC WD1000DHTZ-04N21V0 ATA Device     5           1000202273280
ST1000DM 003-1CH162 SCSI Disk Device  \\.\PHYSICALDRIVE6  ST1000DM 003-1CH162 SCSI Disk Device  5           1000202273280

您还可以使用 PowerShell 获取驱动器号:

PS C:\ Get-Disk

答案2

VirtualBox 文档涉及访问原始硬盘:

http://www.virtualbox.org/manual/ch09.html#rawdisk

要在 Linux 主机上创建代表整个物理硬盘的映像(它不包含任何实际数据,因为这些数据都将存储在物理磁盘上),请使用以下命令

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda

这将创建图像 /path/to/file.vmdk(必须是绝对的),并且所有数据将从 /dev/sda 读取和写入。

要在 Linux 主机上创建用于原始分区支持的特殊映像(如前所述,它将包含少量数据),请使用以下命令

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
  -rawdisk /dev/sda -partitions 1,5

VirtualBox 使用与 Linux 主机相同的分区编号。因此,上例中给出的数字分别指第一个主分区和扩展分区中的第一个逻辑驱动器。

请参阅文档以了解注意事项和 Windows 特定的说明。

答案3

只是想详细说明如何在 Windows 10 中执行此操作

  1. 获取物理磁盘 ID
  • 打开 powershell
  • 输入“Get-Disk”
  • 查找你的磁盘(记下数字列值)
  1. 清除只读属性(致谢:Korkman athttps://forums.virtualbox.org/viewtopic.php?f=6&t=38914#p175089
  • 运行 DISKPART(命令行实用程序)
  • 使用 SELECT DISK 仔细选择硬盘。磁盘编号从零开始。如果您知道分区应该是什么样的,您可以使用 LIST PARTITION 粗略地验证您的选择,或者使用 LIST DISK 查看磁盘大小。
  • 使用 OFFLINE DISK 将磁盘脱机。所有卷将从 Windows 资源管理器中消失。
  • 属性磁盘清除只读
  • 使用 ATTRIBUTES DISK 进行验证
  1. 更改 VirtualBox 服务帐户(感谢 Kapodamy:https://unix.stackexchange.com/questions/284704/verr-access-denied-when-trying-to-add-a-raw-disk-to-virtual-box
  • 在运行中运行 services.msc
  • 查找虚拟盒服务,将登录选项卡上的帐户更改为管理员
  • 重启服务
  1. 创建 VMDK 磁盘
  • 以管理员身份打开命令提示符
  • 键入“C:\Program Files\Oracle\VirtualBox\VBoxManage”内部命令 createrawvmdk -filename C:\VM\Kubernetes\linux.vmdk -rawdisk \\.\PHYSICALDRIVE2
  • 键入“C:\Program Files\Oracle\VirtualBox\VBoxManage”modifyhd“C:\VM\Kubernetes\linux.vmdk”settype writethrough
  • 类型“C:\Program Files\Oracle\VirtualBox\VBoxManage”storageattach Kubernetes --storagectl SATA --device 0 --port 0 --type hdd --medium“C:\VM\Kubernetes\linux.vmdk”
  1. 启动虚拟机

答案4

我试图在 macOS 上启动 Linux VM(特别是 Ubuntu 19.10),其中 Ubuntu 安装在物理 ext4 格式的分区上。我找到的许多答案,包括来自 @ЯрославРахматуллин 的答案,都帮助我解决了大部分问题,但我一直收到以下错误消息:

严重错误:未找到可启动媒体!系统停止运行。

一个答案提到启动 LiveCD 然后更改 GRUB 配置来解决这个问题。但是,我的 Mac 上甚至没有安装 GRUB。最终,我发现我的情况的关键是确保 VM 可以访问我的物理磁盘上的 EFI 分区,并在 VM 设置中启用 EFI 支持。

在此处输入图片描述

diskutil list以下是我的主机 Mac 机器的输出:

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI NO NAME                 536.9 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            161.1 GB   disk0s2
   3:       Microsoft Basic Data Development             9.1 GB     disk0s3
   4:                  Apple_HFS Recovery HD             650.0 MB   disk0s4
   5:           Linux Filesystem                         79.2 GB    disk0s5

由此,我生成了如下 VMDK 文件,为客户虚拟机提供对 EFI 分区的只读访问权限以及对 NTFS(3)和 Ext4(5)分区的完全写入访问权限。

sudo VBoxManage internalcommands createrawvmdk -filename disk0.vmdk -rawdisk -partitions 1r,3,5

现在我可以双启动 MacOS 或 Ubuntu,并且当已经在 MacOS 中时,我可以根据需要将 Ubuntu 作为 VM 启动。快乐的日子!

相关内容