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
PowerShell команда с фильтрацией по типу ОС
vboxmanage list runningvms | Select-String -Pattern "Windows11"
Список доступных ОС
Можно получить полный список выполнив
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 …
PowerShell команда для поиска вариантов Windows 7
vboxmanage list ostypes | Select-String -Pattern "Windows7"
ID / Description: Windows7 -- Windows 7 (32-bit) ID / Description: Windows7_64 -- Windows 7 (64-bit)
Полный список поддерживаемых операционных систем вы можете изучить в статье ostypes
Создать виртуальную машину
Чтобы создать машину под ОС Ubuntu нужно выполнить команду createvm с --ostype Ubuntu_64 и другими аргументами
vboxmanage createvm --name "ubuntu20" --ostype Ubuntu_64 --basefolder /home/andrei/VirtualBox\ VMs/mng --register
Удалить виртуальную машину
Чтобы удалить виртуальную машину нужно снять её с регистрации с флагом delete
vboxmanage unregistervm ubuntu20 --delete
Информация о машине
Изучить определённую виртуальную машину можно выполнив команду 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 |
| Подключить сетевой адаптер |
| natnetwork |
| Отключить сетевой адаптер |
| createhd: Создать диск |
| Изучить диск |
| Удалить диск |
Запустить установку
Чтобы теперь запустить установку гостевой ОС достаточно запустить виртуальную машину
vboxmanage startvm ubuntu20
Запустит графический режим установки
startvm: Запуск виртуальной машины
Чтобы запустить виртуальную машину ubuntu20 нужно выполнить
vboxmanage startvm ubuntu20
Остановка виртуальной машины
Чтобы остановить виртуальную машину vm_name рекомендуется выполнить сигнал плавного выключения acpipowerbutton если он поддерживается.
vboxmanage controlvm vm_name acpipowerbutton
Если acpipowerbutton не работает, тогда нужно использовать poweroff, который вызывает немедленное отключение.
vboxmanage controlvm ubuntu20 poweroff
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
PowerShell скрипт, который пытается остановить виртуальную машину сперва с помощью acpipowerbutton а затем с помощью poweroff
function stop_vms() { param ( [string] $fullname ) if ($PSBoundParameters.ContainsKey('fullname')) { $vms_list = vboxmanage list runningvms | Select-String -Pattern $fullname if ($null -ne $vms_list) { Write-Host "Stopping $fullname" -f Yellow vboxmanage controlvm $fullname acpipowerbutton } else { Write-Host "VM $fullname is not running" } $vms_list = vboxmanage list runningvms | Select-String -Pattern $fullname if ($null -ne $vms_list) { Write-Host "Power Off to $fullname" -f Yellow vboxmanage controlvm $fullname poweroff } } }
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
Автор статьи: Андрей Олегович
| VBoxManage | |
| VirtualBox | |
| Диски | |
| guestcontrol | |
| Сеть | |
| man VBoxManage | |
| ostypes: Доступные ОС |
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги