Установка и настройка VirtualBox на Ubuntu Server 15.10

В одной из своих статей установка и настройка VirtualBox на Ubuntu-server 14.04 я рассказывал как установить и настроить VirtualBox на Ubuntu Server, но это был такой облегченный вариант с настройкой виртуальной машины на декстопе с последующим экспортом и импортом уже на сервер. В этой же статье я расскажу о том, как создать и настроить виртуальную машину из терминала. В качестве примера я приведу установку FreeNAS на Ubuntu Server 15.10.

Установка VirtuakBox

Для начала выполним несколько команд:

sudo apt-get install virtualbox

После того, как процедура установки закончится выполним следующее:

vboxwebsrv -v

Нас интересует следующее (см. фото)

Снимок экрана от 2015-12-09 17:21:55

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

http://download.virtualbox.org/virtualbox/5.0.10/Oracle_VM_VirtualBox_Extension_Pack-5.0.10104061.vbox-extpack

Качаем пакет расширений по полученной ссылке, сделать это можно командой wget. После того, как файл загрузится устанавливаем его следующей командой:

 sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.10-104061.vbox-extpack 

Добавим своего пользователя в группу vboxusers. Как показывает практика, VirtualBox спокойно работает и без этого, но если этого не сделать, то возникнут проблемы при подключении по протоколу RDP (Убедился на своем личном опыте).

sudo usermod -a -G vboxusers ${USER}

Создаем и настраиваем виртуальную машину

VBoxManage createvm --name FreeNAS --register

Вместо FreeNAS вам, конечно же, необходимо указать название своей виртуальной машины (ВМ).

Вносим некоторые изменения.

VBoxManage modifyvm FreeNAS --ostype FreeBSD --memory 1024 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --nictype1 82540EM --vram 4 --accelerate3d off --boot1 dvd --cableconnected1 on --usb off --vrde on --vrdeport 3389

Подробнее о параметрах:

  • —ostype FreeBSD — тип операционной системы, которую мы планируем установить на нашу ВМ. Так как FreeNAS основан на ОС FreeBSD, то в качестве параметра я указал FreeBSD.

Обратите внимание на то, что в том случае если устанавливаемая ОС имеет разрядность 64, то к параметру необходимо дописать _64, то есть должно получиться что то типа такого: —ostype FreeBSD_64.

  • —memory 1024 — объем выделяемой оперативной памяти.
  • —nic1 bridged — тип подключения сетевого адаптера.
  • —boot1 dvd — порядок загрузки, тут мы указываем то, что наша ВМ должна загрузиться с привода.
  • —floppy disabled — отключаем флопик
  • —audio none — отключаем звук
  • —nic1 bridged — переключаем адаптер в режим «сетевой мост»
  • —bridgeadapter1 eth0 — указываем адаптер
  • —nictype1 82540EM — указываем тип адаптера, у меня только с этим типом заработала сеть на ВМ
  • —vram 4 — объем видеопамяти
  • —accelerate3d off — отключаем ускорение
  • —cableconnected1 on — подключаем «сетевой кабель»
  • —usb off — отключаем USB
  • —vrde on — включаем rdp
  • —vrdeport 3389 — устанавливаем портRDP, если вы хотите иметь доступ по RDP к нескольким машинам, то присвайвайте им разные порты

Создаем виртуальный HDD

Теперь нам необходимо создать диск в который мы установим ОС, для этого выполним следующую команду:

VBoxManage createhd --filename FreeNAS.vdi --size 8192

После чего перенесем его в папку с нашей ВМ

mv FreeNAS.vdi "/home/${USER}/VirtualBox VMs/FreeNAS"

Но для того, что бы подключить диск нам нужен контроллер, значит создаем его выполнив простую команду:

VBoxManage storagectl FreeNAS --name SATA --add sata

Затем подключаем наш диск к только что созданному контроллеру:

VBoxManage storageattach FreeNAS --storagectl SATA --port 0 --type hdd --medium "/home/${USER}/VirtualBox VMs/FreeNAS/FreeNAS.vdi"

Создаем диск для хранилища:

VBoxManage createhd --filename HDD.vdi --size 409600

Переносим его в папку с нашей ВМ:

mv HDD.vdi "/home/${USER}/VirtualBox VMs/FreeNAS"

И подключаем его:

VBoxManage storageattach FreeNAS --storagectl SATA --port 1 --type hdd --medium "/home/${USER}/VirtualBox VMs/FreeNAS/HDD.vdi"

Подключение физического HDD к виртуальной машине

Если у вас есть необходимость подключить к ВМ не виртуальный HDD а физический, то для этого нам необходимо создать специальный файл который будет связывать нашу ВМ с физическим HDD. Что бы создать файл выполним команду:

VBoxManage internalcommands createrawvmdk --filename HDD.vmdk --rawdisk /dev/sdb
  • filename HDD.vmdk — имя файла, который будет создан. В имени файла рекомендую указывать модель, объем или метку подключаемого hdd
  • rawdisk /dev/sdb — это путь к жесткому диску. просмотреть список всех дисков можно просмотреть с помощью простой команды ls /dev | grep ^sd[a-z]$

Переместим его в папку в нашей ВМ:

mv HDD.vmdk "/home/${USER}/VirtualBox VMs/FreeNAS"

И подключаем его:

VBoxManage storageattach FreeNAS --storagectl SATA --port 1 --type hdd --medium "/home/${USER}/VirtualBox VMs/FreeNAS/HDD.vmdk"

Подключение образа установочного диска

И подключенный к нему образ диска (образ диска предварительно необходимо скопировать в домашнюю директорию):

VBoxManage storageattach FreeNAS --storagectl SATA --port 2 --device 0 --type dvddrive --medium /home/${USER}/FreeNAS.iso

Вот и все, наша ВМ готова к первому запуску и установке на неё ОС

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

Для запуска ВМ используйте команду:

VBoxManage startvm FreeNAS --type headless

Для того, что бы остановить ВМ:

VBoxManage controlvm FreeNAS poweroff

Для остановки ВМ с сохранением состояния:

VBoxManage controlvm FreeNAS savestate

Для начала выполним такую команду:

VBoxHeadless --startvm FreeNAS

Если после выполнения команды вы увидели ошибку:

[...] Failed to open/createthe internal network "HostInterfaceNetworking-eth0" [....]

Значит мы неправильно указали адаптер, для начала нам необходимо посмотреть как называются у нас адаптеры простой командой:

VBoxManage list bridgedifs

Смотрим Name необходимого адаптера, у меня он почему то оказался enp4s0 вместо привычного eth0, меняем имя адаптера у нашей ВМ:

VBoxManage modifyvm FreeNAS --bridgeadapter1 enp4s0

И снова пробуем запускать:

VBoxHeadless --startvm FreeNAS

И если в списке мы видим нашу ВМ, то значит все ок.

Если ошибок нет, то пробуем подключиться к нашей ВМ по RDP.

Если вы на Linux

rdesktop -a 16 -N 1.2.3.4:3389

Если вы на винде

mstsc 1.2.3.4:3389

После завершения установки нам необходимо «извлечь диск» отключив образ диска:

VBoxManage storageattach FreeNAS --storagectl SATA --medium none --port 2 --device 0

И меняем порядок загрузки:

VBoxManage modifyvm FreeNAS --boot1 disk

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

В своей первой статье я предлагал добавить в файл /etc/rc.local такую строку:

 su <имя пользователя> -c "VBoxManage startvm FreeNAS --type headless"

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

VirtualBox дает нам возможность сохранять состояние машины, почему бы нам не воспользоваться этой возможностью? Проблема заключается только в том, что нам необходимо выполнить команду перед выключением сервера. К счастью для этого есть Upstart, я не буду объяснять принцип его работы ибо информации полно в сети Интернет.

Создаем файл /etc/init.d/freenas с таким содержимым:

#!/bin/sh
### BEGIN INIT INFO
# Provides: freenas
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Запуск FreeNAS
# Description: Запускает и останавливает FreeNAS
### END INIT INFO

case "$1" in
   start)
      echo "Запуск ждите..."
      su <имя пользователя> -c "VBoxManage startvm FreeNAS --type headless"
      ;;
   restart)
      echo "Остановка машины..."
      su <имя пользователя> -c "VBoxManage controlvm FreeNAS poweroff"
      echo "Запуск машины..."
      su <имя пользователя> -c "VBoxManage startvm FreeNAS --type headless"
      ;;
   stop)
      echo "Остановка машины..."
      su <имя пользователя> -c "VBoxManage controlvm FreeNAS savestate"
      ;;
   *)
      echo "Используйте: service freenas {start|stop|restart}" >&2
      exit 3
      ;;
esac

Сохраняем и даем ему права на выполнение

sudo chmod +x /etc/init.d/freenas

Затем добавляем наш скрипт в очередность загрузки:

sudo update-rc.d freenas start 70 2 3 4 5 . stop 10 0 1 6 .

Для удаления скрипта из загрузки

sudo update-rc.d -f freenas remove

Наш скрипт будет стартовать в последнюю очередь, что весьма полезно ибо будут запущены все сервисы в том числе и сетевые, а отключение будет гораздо раньше остальных. Заметьте что выключаться наша ВМ будет с сохранением состояния и запускаться в в том состоянии, в котором она находилась в момент выключения. Ну вот и все, если есть вопросы милости прошу в комменты.

Пожалуйста, оцените статью

Полная фигняУзнал немного новогоНормальная статьяХорошая статьяСупер! (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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