Timeweb
PostHeaderIcon

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

Виртуализация на VirtualboxВозникла необходимость поднять виртуальную машину(далее ВМ) с определенной версией Linux на сервере под управление  FreeBSD 10.

1. установка virtualbox

# pkg install virtualbox-ose
# pkg install virtualbox-ose-kmod
модуль не грузится, переставил из портов, не помогло:
# kldload vboxdrv
kldload: can't load vboxdrv: Exec format error

на сервере отличаются исходники от ядра:

# cat /sys/conf/newvers.sh | grep ^REV
REVISION="10.1"
# cat /sys/conf/newvers.sh | grep ^BRA
BRANCH="STABLE"

перекомпилил ядро из текущих исходников:
# make -j4 buildkernel
# make installkernel
# kldload vboxdrv

модуль загрузился, далее доустановил необходимые пакеты:
консоль управления
# pkg install vboxtool
веб-интерфейс и графический интерфейс не ставил (phpvirtualbox и vboxgtk соответственно)

Включение автозагрузки и запуск демона:
# echo 'vboxdrv_load="YES"' >> /boot/loader.conf
# echo 'vboxnet_enable="YES"' >> /etc/rc.conf
# service vboxnet start

 

2. создание ВМ
# VBoxManage createvm --name dev2 --ostype Ubuntu_64 --register
Virtual machine 'dev2' is created and registered.
UUID: abbc3937-8ed2-4258-9dbd-a752135b6fcf
Settings file: '/root/VirtualBox VMs/dev2/dev2.vbox'

3. Задаем параметры ВМ
без 2 ЦПУ обойдется, хватит и одного
# VBoxManage modifyvm dev2 --memory 2048 --floppy disabled --audio none --nic1 nat \
--vram 1 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on

4. Создаем жесткий диск, размер указывается в мегабайтах
# VBoxManage createhd --filename /usr/vbox/dev2.vdi --size 20480 --variant Fixed
Disk image created. UUID: 77706382-b7d0-45c5-b4c5-89ce8b672e29

--variant Fixed - файл с диском будет сразу занимать запрошенный размер. Если этот параметр не добавлять, то размер файла с диском будет увеличиваться по мере надобности. По данным разработчиков, Fixed-диски создаются дольше, но работают быстрее.

5. Создаем SAS и SATA контроллеры на виртуалке
# VBoxManage storagectl dev2 --name "SAS Controller" --add sas
# VBoxManage storagectl dev2 --name "SATA Controller" --add sata

6. Подключаем виртуальный диск к SAS контроллеру
# VBoxManage storageattach dev2 --storagectl "SAS Controller" --port 0 --device 0 --type hdd --medium \
/usr/vbox/dev2.vdi

7. Цепляем установочный образ к контроллеру
# VBoxManage storageattach dev2 --storagectl "SATA Controller" --port 0 --device 0 --type dvddrive --medium \
/home/qqq/ubuntu-14.04.4-server-amd64.iso

8. Устанавливаем загрузку с установочного образа
# VBoxManage modifyvm dev2 --boot1 dvd

9. Настраиваем виртуальную машину для запуска с поддержкой подключения по VNC:
# VBoxManage setproperty vrdeextpack VNC
# VBoxManage modifyvm dev2 --vrde on
# VBoxManage modifyvm dev2 --vrdeproperty VNCPassword=123123123
# VBoxManage modifyvm dev2 --vrdeauthlibrary null
# VBoxManage modifyvm dev2 --vrdeport 45011

10. Запускаем
# VBoxHeadless --startvm dev2
если что то не так, смотрим лог
# tail -f /root/VirtualBox\ VMs/dev2/Logs/VBox.log

11. Подключение к консоли
под МАС: finder -> подключение к серверу: vnc://10.10.10.1:45011

12. Остановка виртуальной машины
Останавливаем через acpi
# VBoxManage controlvm dev2 acpipowerbutton
или
# VBoxManage controlvm dev2 poweroff

13. Задаем в качестве загрузочного диск, отключаем VNC(если он больше не нужен):
# VBoxManage modifyvm dev2 --boot1 disk
# VBoxManage modifyvm dev2 --vrde off

14. Автостарт/стоп виртуальных машин
Добавляем в /etc/rc.conf
--
vboxheadless_enable="YES"
vboxheadless_user="root"
vboxheadless_delay="1"
vboxheadless_stop="savestate"
vboxheadless_machines="dev2"
--

# /usr/local/etc/rc.d/vboxheadless status
Machine Status
dev2 Powered Off

# /usr/local/etc/rc.d/vboxheadless start
Starting Virtual Machines:
dev2 Started

15. полезные команды
- вывод списка существующих ВМ
# VBoxManage list vms
"dev2" {abbc3937-8ed2-4258-9dbd-a752135b6fcf}

- вывод инфы о диске
# VBoxManage showhdinfo /usr/vbox/dev2.vdi

- вывод поддерживаемых ОС
# VBoxManage list ostypes
# VBoxManage list runningvms
# VBoxManage showvminfo dev2

16. проброс соединений в ВМ из внешнего мира
# VBoxManage modifyvm dev2 --natpf1 "guestssh,tcp,10.10.10.1,22000,,22"
# VBoxManage modifyvm dev2 --natpf1 "guesthttp,tcp,10.10.10.1,28000,,80"

# VBoxManage showvminfo dev2 | grep Rule
NIC 1 Rule(0): name = guesthttp, protocol = tcp, host ip = 10.10.10.1, host port = 28000, guest ip = , guest port = 80
NIC 1 Rule(1): name = guestssh, protocol = tcp, host ip = 10.10.10.1, host port = 22000, guest ip = , guest port = 22

если будет нужно больше одной ВМ, то надо будет указывать guest ip

17. открыты доступа в pf
--
# Allow VNC
pass in quick on gbe0 proto tcp from <ADMINS> to 10.10.10.1 port 45011 keep state

# Allow to dev2
pass in quick on gbe0 proto tcp from any to any port 22000 keep state
pass in quick on gbe0 proto tcp from any to any port 8000 keep state
--