104

Мне было интересно, можно ли запустить виртуальную машину Ubuntu, используя VirtualBox в фоновом режиме, я имею в виду, без какого-либо открытого окна.

Идея состоит в том, чтобы подключиться через SSH к хосту Linux, который будет работать в фоновом режиме.

Кто-нибудь когда-нибудь делал что-то подобное? Является ли это возможным?

11 ответов11

89

VBoxManage startvm $VM --type headless запустит указанную виртуальную машину в фоновом режиме.

Чтобы выключить его, запросите отключение у гостя.

60

Это встроено в VirtualBox 4.2.

Просто удерживайте клавишу Shift при запуске виртуальной машины из диспетчера.

https://blogs.oracle.com/fatbloke/entry/what_s_new_in_oracle

23

Абсолютно! Вы ищете безголовую установку (Virtualbox). Способ запуска машины из командной строки выглядит примерно так:

VBoxHeadless --startvm Debian --vrdp=off

Однако вам понадобится какой-то способ подключения. Что я делаю, так это сопоставление портов между гостем и хостом. При такой конфигурации ваш порт хоста 2222 будет сопоставлен с портом 22 вашей гостевой машины.

VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP  
VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22  
VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222  

После этого вы можете войти через:

ssh localhost -p2222
3

альтернатива VBoxManage startvm "{VMName}" --type headless
VBoxHeadless -startvm "{VMName}"

Достаточно забавно, но я только что понял, как запустить виртуальную машину без головы, по RDP.

Примечание. По крайней мере в окнах оно заблокирует командное окно. Если вам нужно продолжать использовать консольное окно, откройте другое, чтобы запустить виртуальную машину в.

Чтобы выключить виртуальную машину, вы запрашиваете отключение гостевой ОС. VBoxHeadless освобождает консоль, когда гость полностью выключен (вы можете нажать Ctrl+C , но я думаю, что это может быть аналогом полной перезагрузки на реальной машине).

2

Я не думаю, что бесшовный режим - это то, что он ищет здесь, я думаю, что правильной вещью будет VBoxHeadless, подробности о которой вы можете найти в руководстве. Он работает с использованием интерфейса командной строки и будет использоваться, например, если на сервере была запущена виртуальная машина, но отображение не было запрошено с сервера. Вы сможете удаленно подключиться к компьютеру (если вы знаете, как установить параметр с помощью командной строки).

Я бы порекомендовал спросить об этом на виртуальных форумах. На самом деле, сначала выполните поиск, так как я ожидаю, что об этом уже спрашивали.


VBoxManage был правильным, извините. Ссылка информация в руководстве http://www.virtualbox.org/manual/ch08.html

2

Я использую VBoxTool от http://vboxtool.sourceforge.net/, и он отлично работает для меня. Он может автоматически запускать виртуальные машины при загрузке и останавливать / сохранять виртуальные машины при завершении работы и обеспечивает простой интерфейс командной строки.

1

Вы можете использовать VBoxHeadless или (и мне интересно, почему никто не упомянул об этом до меня), вы можете просто выбрать один из вариантов запуска, при котором виртуальная машина будет работать без какого-либо графического интерфейса.

Удерживайте клавишу Shift и запустите машину, или щелкните правой кнопкой мыши машину и найдите что-то вроде "Запустить без вывода" в пункте "Выполнить".

1

Для запуска в автономном режиме с использованием графического интерфейса пользователя:

Удерживайте клавишу Shift при запуске виртуальной машины.

После этого вы также сможете подключаться и отключаться от графического интерфейса пользователя (Использование Показать и Машина -> Отключить параметры графического интерфейса ).

1

Я обнаружил, что режим автономной работы, кажется, отлично работает при фоновом режиме в Linux (CentOS 5.6), но вы теряете доступ к функциональности RDP, пока процесс является фоновым. Сделайте 'fg', чтобы вернуть процесс на передний план, и функциональность RDP восстановится. Похоже, что запуск vm headless лучше всего выполнить через скрипт init, где интерактивность с консолью не требуется.

0

Если виртуальная машина работает и отображается экран, вы можете скрыть ее, выполнив следующие действия.

0

Я добавил эти строки в мой .bashrc:

VM='anakim'
alias vm='VBoxManage startvm $VM --type headless'
alias sshvm='ssh -p2222 localhost'

Для доступа по ssh вам не нужно изменять конфигурацию, просто сохраняйте NAT и вы можете настроить таблицу переадресации портов следующим образом:

Name      | Protocol | Host Port | Guest Port
guestssh  | TCP      | 2222      | 22
localhost | TCP      | 8080      | 80

Когда вы вставите localhost:8080 в браузер вашего компьютера, откроется страница с виртуальной машиной (на порту 80).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .