VirtualBox:如何从命令行添加(挂载)ISO 映像文件?

Sop*_*rez 24 virtualbox iso-image command-line

一毛钱以前在VirtualBox 命令行中有一个具有以下语法的命令:

VBoxManage controlvm <VM> dvdattach <filename>
Run Code Online (Sandbox Code Playgroud)

因此,附加(插入)CD/DVD 就像:

VBoxManage controlvm "MyVM Windows 7" dvdattach MyDVD.iso
Run Code Online (Sandbox Code Playgroud)

但是现在这个命令已经消失了
我一直在浏览VirtualBox 手册,我发现的只是一些storageattach 命令,它指的是其他一些不够简洁的storagectl(我讨厌没有示例的文档),没有一个指的是.ISO 文件之类的东西。
我一直无法在它自己的论坛上找到解决方案,至少除了模棱两可且不简洁的解释之外,没有什么比这更重要的了:

使用 storagectl(或通过 GUI)安装控制器后,请查看 VBoxManage storageattach

与其开始随机测试选项,我更愿意先在这里询问是否有人成功做到了这一点,并且可以给我一些帮助。

and*_*415 25

管理 IDE 控制器

如果 VM 没有 IDE 控制器,您可以使用以下storagectl命令添加一个:

VBoxManage.exe storagectl "<uuid|vmname>" --name IDE --add ide
Run Code Online (Sandbox Code Playgroud)

附加磁盘映像文件

以下是可用于附加 CD/DVD 映像文件的示例语法:

VBoxManage.exe storageattach "<uuid|vmname>" --storagectl IDE --port 0 --device 0 --type dvddrive --medium "X:\Folder\containing\the.iso"
Run Code Online (Sandbox Code Playgroud)

分离磁盘映像文件

要分离图像文件,语法类似:您只需要将文件路径替换为"none". 所述--type参数可以被省略:

VBoxManage.exe storageattach "<uuid|vmname>" --storagectl IDE --port 0 --device 0 --medium "none"
Run Code Online (Sandbox Code Playgroud)

进一步阅读

  • 此外,可以使用“VBoxManage showvminfo”发现有关虚拟机的所有相关信息。这包括存储控制器及其名称。 (3认同)

Sop*_*rez 13

首先,检查是否安装了CD/DVD驱动器,是否为空(注意使用find命令过滤结果):

1.- 是否有空的 CD/DVD驱动器?

C:\Oracle\VirtualBox>vboxmanage showvminfo "Windows 7 SP1 - SandBox 01" | find "empty" /i
SATA (1, 0): Empty
Run Code Online (Sandbox Code Playgroud)

恭喜,您已找到一个可能为空的 CD/DVD驱动器。所以你可以将你的 ISO 附加到它,但是......

...为了面对最坏的情况,让我们展示另一种找到 CD/DVD 驱动器的方法(如果已安装):

2.- 找到您的 VM名称

C:\Oracle\VirtualBox>VBoxManage.exe list vms
"Windows 7 SP1 - SandBox 01" {e016fcf2-9b6e-4b8e-b89b-49a3c8ba0898}
Run Code Online (Sandbox Code Playgroud)

3.- 列出其存储控制器(注意find过滤过多输出数据的命令)(*):

C:\Oracle\VirtualBox>vboxmanage showvminfo "Windows 7 SP1 - SandBox 01" | find "storage controller name" /i
Storage Controller Name (0):            IDE
Storage Controller Name (1):            SATA
Run Code Online (Sandbox Code Playgroud)

4.- 显示其连接的设备

C:\Oracle\VirtualBox>vboxmanage showvminfo "Windows 7 SP1 - SandBox 01" | find "IDE"
Storage Controller Name (0):            IDE
Run Code Online (Sandbox Code Playgroud)

(这个是空的,所以没有设备控制器,无论是硬盘还是CD/DVD驱动器)

C:\Oracle\VirtualBox>vboxmanage showvminfo "Windows 7 SP1 - SandBox 01" | find "SATA"
Storage Controller Name (1):            SATA
SATA (0, 0): d:\VirtualBox VMs\Windows 7 SP1 - SandBox 01\SnapShots/{71b8bf72-dca1-4816-89ff-feba271ec262}.vmdk (UUID: 71b8bf72-dca1-4816-89ff-feba271ec262)
SATA (1, 0): Empty
Run Code Online (Sandbox Code Playgroud)

SATA(0,0) 有一个(the)虚拟磁盘,SATA(1,0) 为(括号内的第一个数字为type,第二个数字为device),所以它应该是CD/DVD 驱动器

5.- 让我们将 ISO映像文件(例如 Office 2013)附加到它:

C:\Oracle\VirtualBox>vboxmanage storageattach "Windows 7 SP1 - SandBox 01" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium "Office2013-VL-SP1.iso"
Run Code Online (Sandbox Code Playgroud)

(屏幕上没有结果意味着OK)。

$-删除保存 CD/DVD 驱动器控制器的 ISO

C:\Oracle\VirtualBox>vboxmanage storageattach "Windows 7 SP1 - SandBox 01" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium "emptydrive"
Run Code Online (Sandbox Code Playgroud)

$- 对于没有安装“空”CD/DVD 驱动器控制器的情况,VirtualBox 应该向现有控制器添加一个新控制器,假设我们选择一个未被占用的端口/设备,例如对于 SATA 控制器:

C:\Oracle\VirtualBox>vboxmanage storageattach "Windows 7 SP1 - SandBox 01" --storagectl "SATA" --port 5 --device 0 --type dvddrive --medium "Office2013-VL-SP1.iso"
Run Code Online (Sandbox Code Playgroud)

(注意我们使用了端口 5)
对于 IDE 控制器:

C:\Oracle\VirtualBox>vboxmanage storageattach "Windows 7 SP1 - SandBox 01" --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "Office2013-VL-SP1.iso"
Run Code Online (Sandbox Code Playgroud)

(注意我们使用了(0,0),这是第一个端口和第一个设备)

$- 如果我们想删除(销毁)(任何)设备(例如最后一个 IDE 一个):

C:\Oracle\VirtualBox>vboxmanage storageattach "Windows 7 SP1 - SandBox 01" --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "emptydrive"
Run Code Online (Sandbox Code Playgroud)

(ISO 映像在执行此命令的同时被卸载)。

$- 最后,如果我们想创建一个新控制器而不是使用现有控制器(例如我们将命名为 SATA3 的 SATA 控制器):

C:\Oracle\VirtualBox>vboxmanage storagectl "Windows 7 SP1 - SandBox 01" --name SATA3 --add sata
Run Code Online (Sandbox Code Playgroud)

$- 可能稍后删除

C:\Oracle\VirtualBox>vboxmanage storagectl "Windows 7 SP1 - SandBox 01" --name SATA3 --remove
Run Code Online (Sandbox Code Playgroud)

(*) 如果名称不足以(可能已更改)来确定它是哪种控制器,请尝试:

C:\Oracle\VirtualBox>vboxmanage showvminfo "Windows 7 SP1 - SandBox 01" | find "storage controller" /i
Storage Controller Name (0):            IDE
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
Storage Controller Name (1):            SATA
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      2
Run Code Online (Sandbox Code Playgroud)

如我们所见,名为IDE(#0) 的控制器是 PIIX4 设备 (IDE),名为SATA(#1) 的控制器是 IntelAhci (SATA)。

注意:IDE 控制器接受 4 种配置的可能图像文件:(0,0)、(0,1)、(1,0) 和 (1,1)。选择一个未被占用的。SATA 控制器接受 30。这些参数可以在 VM 属性上配置。请记住,在这两种情况下,计数都从 开始0,而不是1

注2:根据操作系统和设备的不同,可以在 VM 执行(运行)期间创建某些设备。例如,可以在运行时为 Windows 7 VM 创建 SATA 设备。无论如何,始终可以在运行时ISO CD/DVD 映像文件插入任何空介质中。您可以通过执行以下操作来检查正在运行的 vms:

C:\Oracle\VirtualBox>vboxmanage list runningvms
Run Code Online (Sandbox Code Playgroud)

感谢@and31415 和@DanielB 的评论和信息。