Классическая ситуация: есть сервер с *nix и на нём поднят VirtualBox. В один момент доступ к одной из виртуальных машин пропал. Нужно подключится к консоли, но как? Нигде нету GUI, что бы как на десктопе, взять и подключиться.
Выход есть: запустить заново виртуальную машину в режиме headless. Держать запущенным всё время виртуальную машину в этом режиме опасно, так как открывается консоль на порту на всех интерфейсах, тем более, если ваш сервер смотрит в мир.
Узнаем список виртуальных машин
# VBoxManage list vms
"deb0" {e63c0a4f-32bb-45a6-827f-d089966255a4}
Выключаем виртуальную машину любым способом и запускаем в headless режиме:
# VBoxHeadless -s deb0 -v on -p 3390
В новой версии используем параметр -e:
Warning: '-p' or '-vrdpport' are deprecated. Use '-e "TCP/Ports=3390"'
# VBoxHeadless -s deb0 -v on -e "TCP/Ports=3390"
При этом, порт консоли будет 3390.
Проверяем, что машина запустилась
# VBoxManage list runningvms
"deb0" {e63c0a4f-32bb-45a6-827f-d089966255a4}
И теперь подключаемся к ней:
$ rdesktop -g 1024x768 -a 16 -5 XX.XX.XX.XX:3390
где XX.XX.XX.XX адрес сервера, где запущен VirtualBox
После завершения работ, запустите виртуальную машину в нормальном режиме.
Изменение количества памяти.
Понадобилось изменить память с 1Гб до 2Гб. Останавливаем машину и меняем:
# VBoxManage modifyvm "deb0" --memory 2048
VBoxManage: error: The machine is not mutable (state is Saved)
VBoxManage: error: Details: code VBOX_E_INVALID_VM_STATE (0x80bb0002), component SessionMachine, interface IMachine, callee nsISupports
VBoxManage: error: Context: "COMSETTER(MemorySize)(ValueUnion.u32)" at line 470 of file VBoxManageModifyVM.cpp
Лечится это так:
# VBoxManage list vms
"deb0" {e63c0a4f-32bb-45a6-827f-d089966255a4}
# VBoxManage discardstate "{e63c0a4f-32bb-45a6-827f-d089966255a4}"
# VBoxManage modifyvm "deb0" --memory 2048
После этого запускаем машину