VBoxManage

Содержание
Введение
Использование
Основные опции
Команды
list vms: Существующие/Запущенные виртуальных машин
Список доступных ОС
createvm: Создать машину
showvminfo: Информация о машине
Задать размер RAM/CPU/VRAM
dhcpserver
Подключить сетевой адаптер
natnetwork
Отключить сетевой адаптер
createhd: Создать диск
Изучить/Удалить диск
startvm: Запуск виртуальной машины
Остановка виртуальной машины
Create a clone of an existing Oracle VM VirtualBox virtual machine
--delete: Удалить виртуальную машину
GNUmakefile
Похожие статьи

Введение

VBoxManage - это интерфейс командной строки для виртуальной машины Oracle VirtualBox.

С его помощью вы можете полностью управлять Oracle VM VirtualBox из командной строки операционной системы вашего хоста.

VBoxManage поддерживает все функции, к которым предоставляет вам доступ графический пользовательский интерфейс, но он поддерживает гораздо больше.

Он предоставляет все функции механизма виртуализации, даже те, к которым невозможно получить доступ из графического интерфейса.

Применение

VBoxManage [<general option>] <command>

alias

VBoxManage это очень длинная команда, я создаю alias

sudo vi ~/.bashrc

alias vbman="VBoxManage"

Либо с помощью sed

sed -i -e '$aalias vbman="VBoxManage"' ~/.bashrc

Основные опции

[-v|--version] print version number and exit [-q|--nologo] suppress the logo [--settingspw <pw>] provide the settings password [--settingspwfile <file>] provide a file containing the settings password [@<response-file>] load arguments from the given response file (bourne style)

Команды

Полный список доступных команд вы можете изучить в статье VBoxManage man

Список существующих ВМ

Список виртуальных машин можно получить, с помощью команды list с опцией vms

list [--long|-l] [--sorted|-s] vms|runningvms|ostypes|hostdvds|hostfloppies| intnets|bridgedifs|hostonlyifs|natnets|dhcpservers| hostinfo|hostcpuids|hddbackends|hdds|dvds|floppies| usbhost|usbfilters|systemproperties|extpacks| groups|webcams|screenshotformats|cloudproviders| cloudprofiles|cloudnets

VBoxManage list vms

Если вы только начали работу с VirtualBox этот список пуст

Если какие-то виртуальные машины установлены, он будет выглядеть примерно так

"ubuntu" {9ec5b764-4dce-488b-813a-ede712e2eb38} "ubuntu2" {c59d88dc-d203-4c3c-a3da-4fd6b8b22559} "CeOS7-DNS-149" {0ba8f8cf-359c-4362-b523-8452511a8ade} "CeOS7-min-nat2-192-168-15-4" {65b04638-5681-4a3f-8680-2c040e53878b} "CeOS7-net-acc-tgt__ROUTER__181" {cca3202c-2e82-40d9-9332-7b7cf83a45a2} "CeOS7_XRDP_Postgres_master-109" {e8be14a7-7d00-4a11-8417-7dbb15072f2e} "w10pr-115" {47af8e29-ec5f-46f4-8b31-1e55561bee02} "NatNetwork1-Host" {4d186d5c-ab59-48a9-8f87-ff3ad3e7dd25} "server1-186" {8296a18c-432d-46a1-88c4-d5131b5c99e7}

Запущенные машины

vboxmanage list runningvms

Список доступных ОС

Можно получить полный список выполнив

VBoxManage list ostypes

… ID: Debian_64 Description: Debian (64-bit) Family ID: Linux Family Desc: Linux 64 bit: true … ID: RedHat_64 Description: Red Hat (64-bit) Family ID: Linux Family Desc: Linux 64 bit: true … ID: Ubuntu_64 Description: Ubuntu (64-bit) Family ID: Linux Family Desc: Linux 64 bit: true …

Полный список поддерживаемых операционных систем вы можете изучить в статье ostypes

Создать виртуальную машину

Чтобы создать машину под ОС Ubuntu нужно выполнить команду createvm с --ostype Ubuntu_64 и другими аргументами

VBoxManage createvm --name "ubuntu20" --ostype Ubuntu_64 --basefolder /home/andrei/VirtualBox\ VMs/mng --register

Информация о машине

Изучить определённую виртуальную машину можно выполнив команду showvminfo

В качестве аргумента нужно передать имя машины либо её UID. Изучим машину ubuntu из этого списка

Следующие две команды дадут одинаковый результат

VBoxManage showvminfo ubuntu
VBoxManage showvminfo 9ec5b764-4dce-488b-813a-ede712e2eb38

Name: ubuntu Groups: /Other OS Guest OS: Ubuntu (64-bit) UUID: 9ec5b764-4dce-488b-813a-ede712e2eb38 Config file: /home/andrei/VirtualBox VMs/Other OS/ubuntu/ubuntu.vbox Snapshot folder: /home/andrei/VirtualBox VMs/Other OS/ubuntu/Snapshots Log folder: /home/andrei/VirtualBox VMs/Other OS/ubuntu/Logs Hardware UUID: 9ec5b764-4dce-488b-813a-ede712e2eb38 Memory size: 6144MB Page Fusion: disabled VRAM size: 16MB CPU exec cap: 100% HPET: disabled CPUProfile: host Chipset: piix3 Firmware: BIOS Number of CPUs: 1 PAE: disabled Long Mode: enabled Triple Fault Reset: disabled APIC: enabled X2APIC: enabled Nested VT-x/AMD-V: disabled CPUID Portability Level: 0 CPUID overrides: None Boot menu mode: message and menu Boot Device 1: Floppy Boot Device 2: DVD Boot Device 3: HardDisk Boot Device 4: Not Assigned ACPI: enabled IOAPIC: enabled BIOS APIC mode: APIC Time offset: 0ms RTC: UTC Hardware Virtualization: enabled Nested Paging: enabled Large Pages: disabled VT-x VPID: enabled VT-x Unrestricted Exec.: enabled Paravirt. Provider: Default Effective Paravirt. Prov.: KVM State: powered off (since 2022-01-28T13:44:36.817000000) Graphics Controller: VMSVGA Monitor count: 1 3D Acceleration: disabled 2D Video Acceleration: disabled Teleporter Enabled: disabled Teleporter Port: 0 Teleporter Address: Teleporter Password: Tracing Enabled: disabled Allow Tracing to Access VM: disabled Tracing Configuration: Autostart Enabled: disabled Autostart Delay: 0 Default Frontend: VM process priority: default 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): 1 Storage Controller Bootable (1): on IDE (1, 0): /home/andrei/.config/VirtualBox/VBoxGuestAdditions_6.1.26.iso (UUID: 037c30e4-c49f-490d-a244-51d54c51ad61) SATA (0, 0): /home/andrei/VirtualBox VMs/Other OS/ubuntu/ubuntu.vdi (UUID: 5ce895f5-9bd5-40ac-9214-9950bf50b254) NIC 1: MAC: 0800271F61A9, Attachment: NAT Network 'NatNetwork', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none NIC 2: MAC: 0800271D428E, Attachment: Host-only Interface 'vboxnet0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none NIC 3: disabled NIC 4: disabled NIC 5: disabled NIC 6: disabled NIC 7: disabled NIC 8: disabled Pointing Device: USB Tablet Keyboard Device: PS/2 Keyboard UART 1: disabled UART 2: disabled UART 3: disabled UART 4: disabled LPT 1: disabled LPT 2: disabled Audio: enabled (Driver: PulseAudio, Controller: AC97, Codec: AD1980) Audio playback: enabled Audio capture: disabled Clipboard Mode: disabled Drag and drop Mode: disabled VRDE: disabled OHCI USB: enabled EHCI USB: disabled xHCI USB: disabled USB Device Filters: <none> Bandwidth groups: <none> Shared folders:<none> Capturing: not active Capture audio: not active Capture screens: 0 Capture file: /home/andrei/VirtualBox VMs/Other OS/ubuntu/ubuntu.webm Capture dimensions: 1024x768 Capture rate: 512kbps Capture FPS: 25kbps Capture options: Guest: Configured memory balloon size: 0MB

Изучить только размер оперативной памяти

VBoxManage showvminfo ubuntu20 | grep Memory

Memory size: 128MB

Изменить основные параметры

VBoxManage modifyvm ubuntu20 --memory 8192 --cpus 2 --vram 16 --graphicscontroller vmsvga

Изменить размер оперативной памяти

Чтобы изменить RAM на машине ubuntu20

VBoxManage modifyvm ubuntu20 --memory 8192

VBoxManage showvminfo ubuntu20 | grep Memory

Memory size: 8192MB

System Motherboard VirtualBox изображение с сайта www.eth1.ru
Размер RAM

По пока-что неясным причинам VirtualBox несколько раз принимал значение --memory не в Mb как заявлено в спецификации а в байтах, то есть приходилось задавать --memory 8589934592

Изменить CPU

Чтобы изменить количество CPU на машине ubuntu20

VBoxManage modifyvm ubuntu20 --cpus 2

Проверка

VBoxManage showvminfo ubuntu20 | grep CPUs

Number of CPUs: 2

System Processor VirtualBox изображение с сайта www.eth1.ru
Количество CPU

Изменить VRAM

Чтобы изменить vram на машине ubuntu20

VBoxManage modifyvm ubuntu20 --vram 16

Проверка

VBoxManage showvminfo ubuntu20 | grep RAM

VRAM size: 16MB

Display Screen размер vram VirtualBox изображение с сайта www.eth1.ru
VRAM

Изменить графический контроллер

Чтобы изменить графический контроллер машины ubuntu20 на vmsvga (возможные варианты none|vboxvga|vmsvga|vboxsvga)

VBoxManage modifyvm ubuntu20 --graphicscontroller vmsvga

графический контроллер vmsvga graphicscontroller VirtualBox изображение с сайта www.eth1.ru
VRAM

dhcpserver

Список существующих DHCP серверов

VBoxManage list dhcpservers

Создать новый DHCP сервер для сети NatNetwork1

VBoxManage dhcpserver add --network=NatNetwork1 --server-ip=10.0.2.3 --netmask=255.255.255.0 --lower-ip=10.0.2.4 --upper-ip=10.0.2.254 --enable

Пример вывода ip a для интерфейса nic2 подлкюченного к такому DHCP серверу

… 3: enp0s8: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:4c:9e:d7 brd ff:ff:ff:ff:ff:ff inet 10.0.2.4/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s8 valid_lft 404sec preferred_lft 404sec inet6 fe80::2650:3e88:7062:aec6/64 scope link noprefixroute valid_lft forever preferred_lft forever

Подключить сетевой адаптер

Возможные варианты подключения (подробнее о каждом здесь)

none|null|nat|natnetwork|bridged|intnet|hostonly|generic

hostonly

Прежде чем подключать hostonly адаптер нужно проверить включен ли DHCP сервер для HostInterfaceNetworking

VBoxManage list dhcpservers

У меня они обычно в самом верху - над natnetwork и другими

NetworkName: HostInterfaceNetworking-vboxnet0 Dhcpd IP: 192.168.56.100 LowerIPAddress: 192.168.56.101 UpperIPAddress: 192.168.56.254 NetworkMask: 255.255.255.0 Enabled: Yes Global Configuration: minLeaseTime: default defaultLeaseTime: default maxLeaseTime: default Forced options: None Suppressed opts.: None 1/legacy: 255.255.255.0 Groups: None Individual Configs: None …

Создать новый hostonly интерфейс можно командой

VBoxManage hostonlyif create

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interface 'vboxnet0' was successfully created

Изучить список существующих

VBoxManage list hostonlyifs

VBoxManage list hostonlyifs Name: vboxnet0 GUID: 786f6276-656e-4074-8000-0a0027000000 DHCP: Disabled IPAddress: 192.168.56.1 NetworkMask: 255.255.255.0 IPV6Address: IPV6NetworkMaskPrefixLength: 0 HardwareAddress: 0a:00:27:00:00:00 MediumType: Ethernet Wireless: No Status: Down VBoxNetworkName: HostInterfaceNetworking-vboxnet0

Чтобы подключить первый сетевой адаптер на машине ubuntu20 в режиме hostonly

VBoxManage modifyvm ubuntu20 --nic1 hostonly

или в случае, когда нужно явно указать hostonly сеть

VBoxManage modifyvm ubuntu20 --nic1 hostonly --hostonlyadapter1 vboxnet0

natnetwork

список|создать|переключить|изменить|удалить

Список существующих natnetwork можно получить командой

VBoxManage natnetwork list

NAT Networks: 0 networks found

Создать новую natnetwork и включить dhcp

VBoxManage natnetwork add --netname NatNetwork1 --network "192.168.56.0/24" --enable --dhcp on

Сменить сеть

Чтобы переключить natnetwork c NatNetwork на NatNetwork1 на втором сетевом адапетере (nic2) машины ubuntu20

VBoxManage modifyvm ubuntu20 --natnetwork2 NatNetwork1

Можно явно указать адаптер

VBoxManage modifyvm ubuntu20 --nic2 natnetwork --natnetwork2 NatNetwork1

Изменить natnetwork

VBoxManage natnetwork modify --netname NatNetwork1 --network 10.0.2.0/24

Удалить natnetwork

VBoxManage natnetwork remove --netname NatNetwork1

Отключить сетевой адаптер

Чтобы отключить первый сетевой адаптер на машине ubuntu20

VBoxManage modifyvm ubuntu20 --nic1 none

Для наглядности демонстрирую как статус none выглядит в UI

Сетевой адаптер nic1 в статусе none VirtualBox изображение с сайта www.eth1.ru
Сетевой адаптер none

Создать диск

Чтобы создать диск для машины ubuntu20 и разместить его в той же директории где находятся другие файлы, связанные с ubuntu20 выполните

VBoxManage createhd --filename /home/andrei/VirtualBox\ VMs/mng/ubuntu20/ubuntu20.vdi \
--size 25600 --variant Standard

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: cf68bdfc-f0e9-48c3-8bfc-5973ad0f1917

VBoxManage storagectl ubuntu20 --name "SATA Controller" --add sata --bootable on
VBoxManage storageattach ubuntu20 --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /home/andrei/VirtualBox\ VMs/mng/ubuntu20/ubuntu20.vdi
VBoxManage storagectl ubuntu20 --name "IDE Controller" --add ide
VBoxManage storageattach ubuntu20 --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium /home/andrei/Downloads/linux_isos/ubuntu-20.04.3-desktop-amd64.iso

Список дисков

Чтобы изучить зарегистрированные в VirtualBox диски выполните

VBoxManage list hdds

Среди списка всех дисков можно найти созданный в предыдущем параграфе

… UUID: cf68bdfc-f0e9-48c3-8bfc-5973ad0f1917 Parent UUID: base State: created Type: normal (base) Location: /home/andrei/VirtualBox VMs/mng/ubuntu20/ubuntu20.vdi Storage format: VDI Capacity: 25600 MBytes Encryption: disabled …

Удалить диск

Чтобы удалить диск найдите его UUID и выполните closemedium disk с флагом --delete

VBoxManage closemedium disk cf68bdfc-f0e9-48c3-8bfc-5973ad0f1917 --delete

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Запустить установку

Чтобы теперь запустить установку гостевой ОС достаточно запустить виртуальную машину

VBoxManage startvm ubuntu20

Запустит графический режим установки

startvm: Запуск виртуальной машины

Чтобы запустить виртуальную машину ubuntu20 нужно выполнить

VBoxManage startvm ubuntu20

Остановка виртуальной машины

Чтобы остановить виртуальную машину ubuntu20 нужно выполнить

VBoxManage controlvm ubuntu20 poweroff

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Удалить виртуальную машину

Чтобы удалить виртуальную машину нужно снять её с регистрации с флагом delete

VBoxManage unregistervm ubuntu20 --delete

GNUmakefile для установки Linux

Чтобы создать новую виртуальную машину с Host-Only и NatNetwork адаптерами и установить туда CentOS7 скопируте этот GNUmakefile и выполните

make new-linux-vm

Чтобы установить Ubuntu 20.04.3 раскомментируйте блок с Ubuntu и закоментируйте блок с CentOS7

# Choose available name # Uncomment required OS LINUX_VM_NAME=centos7 # CENTOS 7 LINUX_REPO="centos.mirror.far.fi" LINUX_VERSION=7.9.2009 LINUX_ISO=CentOS-7-x86_64-DVD-2009.iso LINUX_URL=http://$(LINUX_REPO)/$(LINUX_VERSION)/isos/x86_64/$(LINUX_ISO) OS_TYPE=RedHat_64 # UBUNTU # LINUX_REPO="mirror.yandex.ru/ubuntu-releases" # LINUX_VERSION=20.04.3 # LINUX_ISO=ubuntu-$(LINUX_VERSION)-desktop-amd64.iso # LINUX_URL=https://$(LINUX_REPO)/$(LINUX_VERSION)/$(LINUX_ISO) # OS_TYPE=Ubuntu_64 ISO_DIR=/home/$$(whoami)/virtualbox/iso/ VM_BASEFOLDER=/home/$$(whoami)/virtualbox/vms/ VDI_DIR=/home/$$(whoami)/virtualbox/vdi/ .PHONY:download-linux download-linux: $(check_iso_dir) @if [ ! -f $(ISO_DIR)$(LINUX_ISO) ]; then \ wget -c "$(LINUX_URL)" \ -O $(ISO_DIR)$(LINUX_ISO); \ else \ echo "INFO: $(ISO_DIR)$(LINUX_ISO) already exists"; \ fi .PHONY:new-linux-vm new-linux-vm: download-linux create-linux-vm mod-linux-vm create-linux-disk start-linux-vm .PHONY:create-linux-vm create-linux-vm: $(check_vms_dir) @VBoxManage createvm --name $(LINUX_VM_NAME) \ --ostype $(OS_TYPE) --basefolder $(VM_BASEFOLDER) \ --register; .PHONY:mod-linux-vm mod-linux-vm: HOIFS := $(VBoxManage list hostonlyifs) mod-linux-vm: @echo modifying $(LINUX_VM_NAME) @if [ ! $(HOIFS) ]; then \ VBoxManage hostonlyif create; \ else \ echo "INFO: found Host-Only-Interfaces "$(HOIFS); \ fi @VBoxManage natnetwork add --netname NatNetwork1 \ --network "192.168.56.0/24" --enable \ --dhcp on \ @VBoxManage modifyvm $(LINUX_VM_NAME) \ --memory 8192 \ --cpus 2 --vram 16 --graphicscontroller vmsvga \ --nic1 hostonly --hostonlyadapter1 vboxnet0 \ --nic2 natnetwork --natnetwork2 NatNetwork1; .PHONY:create-linux-disk create-linux-disk: $(check_vdi_dir) @VBoxManage createhd --filename $(VDI_DIR)$(LINUX_VM_NAME).vdi --size 25600 \ --variant Standard @VBoxManage storagectl $(LINUX_VM_NAME) --name "SATA Controller" \ --add sata --bootable on @VBoxManage storageattach $(LINUX_VM_NAME) --storagectl "SATA Controller" \ --port 0 --device 0 --type hdd --medium $(VDI_DIR)$(LINUX_VM_NAME).vdi @VBoxManage storagectl $(LINUX_VM_NAME) --name "IDE Controller" --add ide @VBoxManage storageattach $(LINUX_VM_NAME) --storagectl "IDE Controller" \ --port 0 --device 0 --type dvddrive --medium $(ISO_DIR)$(LINUX_ISO) .PHONY:start-linux-vm start-linux-vm: @VBoxManage startvm $(LINUX_VM_NAME) --type=headless .PHONY:delete-linux-vm delete-linux-vm: @VBoxManage unregistervm $(LINUX_VM_NAME) --delete .PHONY:delete-linux-disk delete-linux-disk: rm -rf $(VDI_DIR)$(LINUX_VM_NAME).vdi define check_iso_dir @if [ ! -d $(ISO_DIR) ]; then \ echo "INFO: Creating dir "$(ISO_DIR); \ mkdir -p $(ISO_DIR); \ else \ echo "INFO: Directory "$(ISO_DIR)" already exists"; \ fi endef define check_vms_dir @if [ ! -d $(VM_BASEFOLDER) ]; then \ echo "INFO: Creating dir "$(VM_BASEFOLDER); \ mkdir -p $(VM_BASEFOLDER); \ else \ echo "INFO: Directory "$(VM_BASEFOLDER)" already exists"; \ fi endef define check_vdi_dir @if [ ! -d $(VDI_DIR) ]; then \ echo "INFO: Creating dir "$(VDI_DIR); \ mkdir -p $(VDI_DIR); \ else \ echo "INFO: Directory "$(VDI_DIR)" already exists"; \ fi endef