VBoxManage
Введение
VBoxManage - это интерфейс командной строки для виртуальной машины Oracle VirtualBox.
С его помощью вы можете полностью управлять Oracle VM VirtualBox из командной строки операционной системы вашего хоста.
VBoxManage поддерживает все функции, к которым предоставляет вам доступ графический пользовательский интерфейс, но он поддерживает гораздо больше.
Он предоставляет все функции механизма виртуализации, даже те, к которым невозможно получить доступ из графического интерфейса.
Применение
VBoxManage [<general option>] <command>
alias
VBoxManage это очень длинная команда, я создаю alias
В Linux
sudo vi ~/.bashrc
alias vbman="VBoxManage"
Либо с помощью sed
sed -i -e '$aalias vbman="VBoxManage"' ~/.bashrc
notepad $profile
Set-Alias -Name VBoxManage -Value "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" Set-Alias -Name vbman -Value "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
Основные опции
[-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
По пока-что неясным причинам VirtualBox несколько раз принимал значение --memory не в Mb как заявлено в спецификации а в байтах, то есть приходилось задавать --memory 8589934592
Изменить CPU
Чтобы изменить количество CPU на машине ubuntu20
VBoxManage modifyvm ubuntu20 --cpus 2
Проверка
VBoxManage showvminfo ubuntu20 | grep CPUs
Number of CPUs: 2
Изменить VRAM
Чтобы изменить vram на машине ubuntu20
VBoxManage modifyvm ubuntu20 --vram 16
Проверка
VBoxManage showvminfo ubuntu20 | grep RAM
VRAM size: 16MB
Изменить графический контроллер
Чтобы изменить графический контроллер машины ubuntu20 на vmsvga (возможные варианты none|vboxvga|vmsvga|vboxsvga)
VBoxManage modifyvm ubuntu20 --graphicscontroller vmsvga
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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
Создать диск
Чтобы создать диск для машины 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:new-linux-vm-nn new-linux-vm-nn: download-linux create-linux-vm create-natnetwork 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-old mod-linux-vm-old: HOIFS := $(VBoxManage list hostonlyifs) mod-linux-vm-old: @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:mod-linux-vm mod-linux-vm: HOIFS := $(shell VBoxManage list hostonlyifs | grep vboxnet0) mod-linux-vm: @echo "existing Host-Only interfaces:"; @echo $(HOIFS); @echo "------------------------------"; @echo modifying $(LINUX_VM_NAME) @if [ -z $(HOIFS) ]; then \ echo "creating new hostonlyif"; \ VBoxManage hostonlyif create; \ else \ echo "INFO: found Host-Only-Interfaces "$(HOIFS); \ fi @VBoxManage modifyvm $(LINUX_VM_NAME) \ --memory 8192 \ --cpus 2 --vram 16 --graphicscontroller vmsvga \ --nic1 hostonly --hostonlyadapter1 vboxnet0 \ --nic2 natnetwork --natnetwork2 NatNetwork1 \ --nic3 bridged --bridgeadapter3 eno1; .PHONY:create-natnetwork create-natnetwork: NATN1 := $(shell VBoxManage list natnetworks | grep NatNetwork1) create-natnetwork: @echo $(NATN1); @if [ -z $(NATN1) ]; then \ echo "NatNetwork1 not found. Creating..."; \ VBoxManage natnetwork add \ --netname NatNetwork1 \ --network "10.0.2.0/24" --enable \ --dhcp on; \ else \ echo "INFO: NatNetwork1 already exists"; \ fi .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: @echo "-------------------------------------"; @echo "Starting VM $(LINUX_VM_NAME)"; @VBoxManage startvm $(LINUX_VM_NAME) # for headless start use # @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
VirtualBox | |
Установка | |
NAT Network | |
VBoxManage Manual | |
Виртуальная CentOS 7 на Ubuntu | |
Терминал VirtualBox | |
Windows 7 на VirtualBox Debian | |
Guest Additions | |
Разбор ошибок |