Поиск по сайту:

Как создать виртуальную машину VirtualBox из терминала Linux


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

Если вы планируете только использовать виртуальные машины, вас может заинтересовать гипервизор. Гипервизор заменяет вашу хост-ОС и специально создан для управления несколькими виртуальными машинами. Вы не сможете запускать приложения в хост-ОС, но вы можете легко виртуализировать Ubuntu Server или что-то в этом роде и запускать приложения поверх гипервизора.

Установка VirtualBox и пакета расширений VBox

VirtualBox — это бесплатное программное обеспечение для виртуализации с графическим интерфейсом, которое работает как приложение на вашей хост-ОС (гипервизор типа 2). Возможно, вы использовали его раньше на персональном компьютере для настройки виртуальной машины, но VirtualBox на самом деле имеет полный интерфейс командной строки и полностью может использоваться только с терминала, что делает его идеальным для этого варианта использования. Другим решением может быть QEMU, но VirtualBox опробован и протестирован и не имеет себе равных, поскольку является бесплатным и открытым исходным кодом.

Интерфейс командной строки VirtualBox, по общему признанию, немного громоздкий, поэтому, если вы просто возитесь на домашнем сервере и у вас есть немного свободной оперативной памяти, вы можете вместо этого установить легкую среду рабочего стола на своем сервере и настроить VirtualBox обычным способом. Вы по-прежнему можете запускать виртуальные машины в автономном режиме, чтобы они продолжали работать после выхода из DE.

Если вы планируете использовать интерфейс командной строки, установка будет довольно простой, так как она доступна прямо из apt:

sudo apt-get install virtualbox

Однако вам нужно записать версию, которая установлена ( VBoxManage -v ), так как вам нужно будет установить еще несколько вещей. Поскольку мы настраиваем в безголовом режиме, нам понадобится способ подключения к машине, прежде чем можно будет настроить SSH/RDP.

Перейдите на страницу загрузки VirtualBox и найдите ссылку на пакет расширений для версии, на которой вы работаете. Загрузите его с помощью wget:

wget https://download.virtualbox.org/virtualbox/5.2.42/Oracle_VM_VirtualBox_Extension_Pack-5.2.42.vbox-extpack

И установите его:

sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.42.extpack

По какой-то причине VRDE не работал у нас с установленным встроенным пакетом расширений VNC. Удаление этого пакета решило проблему:

sudo VBoxManage extpack uninstall VNC

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

Для начала мы создадим новую виртуальную машину с именем «Ubuntu». Вы можете просмотреть список поддерживаемых типов ОС с помощью VBoxManage list ostypes.

sudo VBoxManage createvm --name "Ubuntu" --ostype Ubuntu_64 --register

Дайте машине немного оперативной памяти и создайте новый жесткий диск. Мы выберем 4 ГБ ОЗУ и 32 ГБ места на жестком диске, но их можно расширить позже. Обратите внимание, что жесткий диск является виртуальным диском и не выделяется заранее.

sudo VBoxManage modifyvm "Ubuntu" --memory 4096
sudo VBoxManage createhd --filename "Ubuntu.vdi" --size 32000

Установите количество виртуальных ЦП. Это измеряется в потоках, а не в полных ядрах ЦП.

sudo VBoxManage modifyvm "Ubuntu" --cpus 2

Далее еще несколько настроек для жесткого диска. Обычно это происходит автоматически при создании машин из графического интерфейса, но вам придется вручную создать контроллер SAS и подключить его к виртуальной машине, чтобы жесткий диск работал правильно.

sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --add sas --controller LSILogicSAS
sudo VBoxManage storageattach "Ubuntu" --storagectl "SAS Controller" --port 0 --device 0 --type hdd --medium "Ubuntu.vdi"
sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --hostiocache on

Мы сделаем то же самое для диска, на котором будет храниться ISO-образ для установки ОС. Это предполагает, что ваш ISO-образ находится по адресу /home/user/Ubuntu.iso, поэтому измените его соответствующим образом.

sudo VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4
sudo VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium "/home/user/Ubuntu.iso"

Затем переключите некоторые переключатели, связанные с производительностью, чтобы предотвратить замедление работы из-за избыточного использования ОЗУ:

sudo VBoxManage modifyvm "Ubuntu" --nestedpaging on
sudo VBoxManage modifyvm "Ubuntu" --largepages on

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

  • Простой NAT, который позволяет виртуальной машине обмениваться данными с внешним миром с помощью преобразования сетевых адресов (NAT). Это не позволяет виртуальным машинам взаимодействовать друг с другом и не позволяет связываться между хостом и гостем, если порт не переадресован.
  • Сеть NAT похожа на NAT, за исключением того, что виртуальные машины совместно используют сеть, и они могут взаимодействовать друг с другом. Сеть NAT действует как виртуальная подсеть.
  • Мост: физическое подключение прямо к виртуальной машине. Виртуальная машина имеет реальный IP-адрес в вашей сети. Это может работать даже с одним подключением Wi-Fi/Ethernet, но если у вас есть сетевая карта с несколькими портами Ethernet, вы можете назначить весь интерфейс непосредственно виртуальной машине.
  • Виртуальная сеть, которая соединяет несколько экземпляров в изолированной виртуализированной сети. Это полезно для моделирования реальных сетей, но не подходит для большинства случаев использования.
  • Адаптер только для хоста похож на виртуальную сеть, но позволяет общаться с хостом (а не с Интернетом).

В этом примере мы выберем сеть NAT, поскольку она проста в настройке и является самой универсальной из всех, обеспечивая баланс подключения и изоляции.

Создайте новую сеть в подсети 10.0.0.0/24, запустите ее:

sudo VBoxManage natnetwork add --netname natnet1 --network "10.0.0.0/24" --enable
sudo VBoxManage natnetwork start --netname natnet1

И прикрепите его к виртуальной машине:

sudo VBoxManage modifyvm "Ubuntu" --nic1 natnetwork --nat-network1 natnet1

Далее нам нужно настроить способ доступа к этому экземпляру. Поскольку мы устанавливаем это на безголовый сервер (без вывода видео), мы не сможем завершить процесс установки и установить клиент RDP в гостевой ОС. Чтобы решить эту проблему, мы будем использовать сервер VirtualBox VRDE, основная причина, по которой мы ранее установили пакет расширений VirtualBox. Это захватывает вывод виртуального дисплея и делает его доступным через RDP.

Включите это и установите для него порт. Вы должны убедиться, что в операционной системе хоста этот порт открыт.

sudo VBoxManage modifyvm "Ubuntu" --vrde on
sudo VBoxManage modifyvm "Ubuntu" --vrdeport 5587

Наконец, мы можем запустить виртуальную машину в автономном режиме и начать установку ОС.

sudo VBoxManage startvm "Ubuntu" --type headless

Обратите внимание, что безголовый режим означает, что он работает на безголовом сервере, а не в том, что у гостевой ОС нет видеовыхода.

Для запуска потребуется секунда или две, и вы сможете запустить RDP-клиент и подключиться к нему, используя указанный вами порт. Он может запросить имя пользователя и пароль; По умолчанию VRDE имеет значение «admin» без пароля.

Переадресация портов после настройки

После завершения установки ОС вам нужно будет выполнить переадресацию портов, чтобы сохранить доступ после отключения VRDE, по сути, как открытие правил брандмауэра. Если вы настраиваете безголовую среду, такую как Linux, вам просто нужно перенаправить SSH. Следующая команда добавит правило переадресации портов в вашу сеть NAT для переадресации порта 2200 в операционной системе хоста на порт SSH по умолчанию в гостевой системе. Обратите внимание, что этот порт должен быть открыт в брандмауэре вашего хоста, чтобы это работало.

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:2200:[10.0.0.2]:22"

Если вы настраиваете RDP, вам необходимо настроить RDP-сервер в гостевой ОС и убедиться, что порт RDP открыт в гостевом брандмауэре. После этого вы можете портировать вперед примерно таким же образом:

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "rdp:tcp:[]:5589:[10.11.0.2]:3389"

Если вам нужно удалить правила переадресации портов, вам придется удалить их по имени с помощью этой довольно громоздкой команды (первая строка перед двоеточием):

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete rdp

Убедившись, что вы можете подключаться через SSH/RDP напрямую к гостевой ОС, вы можете отключить VRDE:

sudo VBoxManage modifyvm "Ubuntu" --vrde off

Если вы планируете использовать эту виртуальную машину через RDP в течение длительного периода времени, вы можете установить пакет гостевых дополнений VirtualBox для своей гостевой ОС.

Если вы решите управлять VirtualBox с помощью графического интерфейса после настройки этой виртуальной машины из CLI, имейте в виду, что эта виртуальная машина была создана как root, поэтому вам нужно будет запустить графический интерфейс VirtualBox как root, чтобы увидеть эту виртуальную машину в списке. В противном случае он должен работать нормально.

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