NotePublic/Software/Applications/VirtualBox/命令行下使用_Virtualbox.md

72 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 命令行下使用 Virtualbox
## 设置虚拟机
```bash
# 创建并注册虚拟机
VBoxManage createvm --name <vm name> --register
# 为虚拟机创建一个硬盘镜像
VBoxManage createhd --filename <hd name> --size <hd size>
# 为虚拟机创建一个存储控制器
VBoxManage storagectl <vm name> --name <controller name> --add ide|sata|scsi|floppy --controller LsiLogic|LSILogicSAS|BusLogic|IntelAhci|PIIX3|PIIX4|ICH6|I82078 --bootable on
# 添加网络连接功能
VBoxManage modifyvm <vm name> --nic1 nat --nictype1 82540EM --cableconnected1 on
# 添加音频功能
VBoxManage modifyvm <vm name> --vram 128 --accelerate3d on --audio alsa --audiocontroller ac97
```
modifyvm 参数可控制的内容比较多,下表不完整的收集了一些信息:
| VBoxManage modifyvm | Description |
|-------------------------|--------------|
| --name \<name\> | 改变虚拟机的名称 |
| --ostype \<ostype\> | 设置虚拟机从主机分配的内存大小单位MB |
| --memory \<memorysize\> | 指定虚拟机中将运行的操作系统使用VBoxManage list ostypes了解这里可用的各种标识符 |
| --vram \<vramsize\> | 指定虚拟显卡可以使用的显存大小 |
| --acpi on\|off | 相应地决定虚拟机是否支持ACPI和I/O APIC |
| --cpus \<cpucount\> | 为虚拟机设置虚拟CPU的个数 |
| --synthcpu on\|off | 决定VirtualBox是否为客户机提供合成CPUsynthetic CPU以允许在显著不同的主机系统之间实时迁移 |
| --pae on\|off | 启用或禁用PAE |
| --hwvirtex on\|off\|default | 启用或禁用主机处理器的硬件虚拟化扩展Intel VT-x或AMD-V |
| --hwvirtexexcl on\|off | 启用或禁用VirtualBox对主机处理器硬件虚拟化扩展Intel VT-x或AMD-V的独占。如果想和其他管理器共享这些扩展你必须禁用些选项。但这样做会有性能损失 |
| --nestedpaging on\|off | 如果启用硬件虚拟化此附加选项启用或禁用主机系统处理器的nested paging功能 |
| --vtxvpid on\|off | 如果启用硬件虚拟化此附加选项启用或禁用主机系统处理器的标签TLBVPID功能 |
| --accelerated3d on|off | 如果安装有客户机附件决定硬件3D加速是否可用 |
| --snapshotfolder default\|\<path\> | 指定虚拟机快照存放的目录 |
| --firmware efi\|bios | 指定虚拟机使用的启动固件EFI或BIOS |
## 查询和启动虚拟机
```bash
# 获取虚拟机列表
VBoxManage list vms
# 查看正在运行的虚拟机
VBoxManage list runningvms
# 开启虚拟机
VBoxManage startvm <vm uuid>|<vm name> [--type gui|sdl|headless]
# 虚拟机状态控制
VBoxManage controlvm <vm uuid>|<vm name> pause|resume|reset|poweroff|savestate|acpipowerbutton
```
* --type
* gui图形化界面
* sdl图形化界面但是没有菜单常用于调试
* headless在后台运行默认开启 vrdp 服务,可通过 RDP 远程桌面连接
以下命令都可以启动虚拟机并进行远程 RDP 连接:
```bash
VBoxManage startvm <vm uuid>|<vm name> --type headless
VBoxHeadless --startvm <vm uuid>|<vm name>
```
区别是 VBoxManage 是异步执行VBoxHeadless 默认是同步执行,会阻塞命令行。
## 关于 VNC 的一点说明
VNC 需要使用特别的 extension pack而且目前 VNC 不被 Oracle 官方支持,只能从源码构建该 extension pack。
## 外部参考资料
1. [VBoxManage 命令行使用](https://www.cnblogs.com/luhouxiang/p/3275102.html)