VirtualBox без Xorg
К этому материалу есть уточняющая статья, смотрите здесь.
После того, как qemu простилась с ядерным модулем kqemu и работать с ней стало совершенно невозможно, пришлось мне в плане виртуализации искать другие решения. Вариантов, на самом деле, не много, из всего найденного больше всего приглянулся emulators/virtualbox-ose, однако изрядно смущает, что он оборудован графическим интерфейсом, который в свою очередь при сборке вытягивет за собой чуть не весь xorg. Что, согласитесь, на сервере совершенно неуместно.
Однако, GUI от virtualbox отрывается легко и непринужденно с сохранением всего функционала программы. Итак, для начала надо правильно собрать:
[cc lang=»bash»]$ cd /usr/ports/emulators/virtualbox-ose
$ sudo make config[/cc]
Здесь надо правильно сконфигурировать сборку: отключить qt4, x11 и NLS. Если нативную поддержку языков не отключить, не соберется, потребовав поддержки графики. Обязательно не забыть установить [X] напротив VNC, эта штука архиполезна на этапе установки операционки в гостевую машину, да и вообще не помешает:
После этого
[cc lang=»bash»]$ sudo make
$ sudo make install
$ sudo make clean[/cc]
Все, virtualbox у нас установлен, причем без лишних сущностей. В отсутствие GUI конфигурирование виртуальных машин и управление ими производится из командной строки. Вот пример создания и запуска вирутальной машины:
Создаем виртуальную машину:
[cc lang=»bash»]VBoxManage createvm -name «TestBSD» -register[/cc]
Изменяем параметры созданной машины:
[cc lang=»bash»]VBoxManage modifyvm «TestBSD» —memory 1024 —acpi on —nic1 bridged —bridgeadapter1 em0 —nictype1 82540EM [/cc]
—memory 1024 — задаем количество памяти в мегабайтах (1024 мб — 1 Гб)
—acpi on — включаем ACPI
—nic1 bridged — определяем одну сетевую карту для гостевой системы и задаем ей тип «мост»
—bridgeadapter1 em0 — цепляем мостом гостевую сетевую карту к физически существующему интерфейсу em0
—nictype1 82540EM — тип сетевой карты, используемый виртуальной машиной. Доступны следующие типы:
Am79C970A | PCNet-PCI-II 10 mbit |
Am79C973 | PCNet-Fast III 100 mbit |
82540EM | Intel pro/1000 MT Desktop 1 Gb |
82543GC | Intel pro/1000 T Server 1 Gb |
82545EM | Intel pro/1000 MT Server 1 Gb |
Добавляем IDE контроллер в виртуальную машину:
VBoxManage storagectl TestBSD --name "Disk Controller" --add ide
или добавляем SATA контроллер в виртуальную машину.
VBoxManage storagectl TestBSD --name "Disk Controller" --add sata
Создаем жесткий диск размером в 50 гб.
[cc lang=»bash»]VBoxManage createhd —filename /home/denis/vms/7301.vdi —size 51200[/cc]
Сжимаем его. будет расти по мере заполнения.
[cc lang=»bash»]VBoxManage modifyhd /home/denis/vms/7301.vdi compact[/cc]
Подключаем созданный диск к контроллеру
VBoxManage storageattach TestBSD --storagectl "Disk Controller" --port 0 --device 0 --type hdd --medium /home/denis/vms/testbsd.vdi
Подключаем образ установочного диска к контроллеру
VBoxManage storageattach TestBSD --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/denis/isos/install.iso
Включаем загрузку ВМ с установочного образа
VBoxManage modifyvm TestBSD --boot1 dvd
Запуск машины.
[cc lang=»bash»]VBoxHeadless -startvm ‘TestBSD’ -n -o password[/cc]
Вот тут-то и пригодилась нам та [X] перед VNC :) Ключ -n указывает, что вместе с машиной нужно запустить vnc сервер, который будет показывать нам виртуальную машину, а ключ -o задает пароль для присоединения к этому серверу. То есть запустив машину и подцепившись любым vnc клиентом к IP адресу хоста мы увидим консоль созданной виртуальной машины. Собственно, после того как машина настроена, на нее установлена операционная система и настроена сеть, можно vnc сервер отключить.
В заключение приведу скриптик, который я сваял для того, чтобы автоматизировать процесс создания виртуальной машины. Скрипт предельно примитивный, изящества кода внем нет, но он работает :)
[cc lang=»bash»]
#!/bin/sh
#Скрипт для создания виртуальных машин VirtualBox.
#ВНИМАНИЕ: Скрипт не использует инкакой «защиты от дурака», поэтому
#проверяйте ввод: права на папки, куда помещаются файлы,
#должны у вас быть, названия устройств и пути необходимо писать правильно
#Все спасибы и ругачки можно оставить здесь: http://www.daemony.ru/?p=967
#
ALLRIGHT=n
while [ $ALLRIGHT != «y» ]
do
echo -n «Введите название виртуальной машины: »
read NAMEVM
echo -n «Введите объем оперативной памяти виртуальной машины в мегабайтах: »
read RAMSZ
echo -n «Введите имя сетевого интерфейса хоста для создания сетевого моста: »
read IFNAME
echo «Выберите тип сетевой карты виртуальной машины:»
echo «1. PCNet-PCI-II 10 mbit»
echo «2. PCNet-Fast III 100 mbit»
echo «3. Intel pro/1000 MT Desktop»
echo «4. Intel pro/1000 T Server»
echo «5. Intel pro/1000 MT Server»
read VMIFTYPE
case «$VMIFTYPE» in
1)
VMIFTYPE=»Am79C970A»;;
2)
VMIFTYPE=»Am79C973″;;
3)
VMIFTYPE=»82540EM»;;
4)
VMIFTYPE=»82543GC»;;
[5p])
VMIFTYPE=»82545EM»;;
*)
echo «неверный ввод»;;
esac
echo «Введите тип интерфейса дисков:»
echo «1. ide»
echo «2. sata»
echo «3. scsi»
echo «4. sas»
echo «5. floppy»
read DISKTYPE
case «$DISKTYPE» in
1)
DISKTYPE=»ide»
CONTTYPE=»PIIX4″;;
2)
DISKTYPE=»sata»
CONTTYPE=»IntelAHCI»;;
3)
DISKTYPE=»scsi»
CONTTYPE=»BusLogic»;;
4)
DISKTYPE=»sas»
CONTTYPE=»LSILogicSAS»;;
[5p])
DISKTYPE=»floppy»
CONTTYPE=»I82078″;;
*)
echo «неверный ввод»;;
esac
echo -n «Введите имя образа виртуальной машины включая путь и расширение .vdi: »
read PATHVM
echo -n «Введите объем жесткого диска виртуальной машины в мегабайтах: »
read DISKSZ
echo -n «Подключить загрузочный обзаз? (y/n)»
read BOOTDISK
case «$BOOTDISK» in
y)
echo -n «Введите полное имя файла загрузочного образа, включая путь и расширение»
read BOOTDISK;;
[Nn])
BDMESSAGE=»Загрузочный диск не подключен»;;
*)
echo «неверный ввод»;;
esac
echo «Проверьте правильность ввода данных:»
echo » »
echo «имя виртуальной машины: $NAMEVM»
echo «объем оперативной памяти: $RAMSZ»
echo «имя сетевого интерфейса хоста: $IFNAME»
echo «тип интерфейса дисков: $DISKTYPE»
echo «тип контроллера дисков: $CONTTYPE»
echo «расположение и имя файла виртуальной машины: $PATHVM»
echo «размер жесткого диска виртуальной машины: $DISKSZ»
echo «тип сетевого адаптера виртуальной машины: $VMIFTYPE»
echo «Образ загрузочного диска: $BDMESSAGE»
echo » »
echo -n «Верны ли введенные данные (y/n)?»
read ALLRIGHT
done
VBoxManage createvm -name «$NAMEVM» -register
VBoxManage modifyvm «$NAMEVM» —memory $RAMSZ —acpi on —nic1 bridged —bridgeadapter1 $IFNAME —nictype1 $VMIFTYPE
VBoxManage storagectl $NAMEVM —name «Disk Controller» —add $DISKTYPE —controller $CONTTYPE
VBoxManage createhd —filename $PATHVM —size $DISKSZ —format VDI
VBoxManage modifyhd $PATHVM compact
VBoxManage storageattach $NAMEVM —storagectl «Disk Controller» —port 0 —device 0 —type hdd —medium $PATHVM
case «$BOOTDISK» in
y)
echo » «;;
[Nn])
echo » «;;
*)
VBoxManage storageattach $NAMEVM —storagectl «Disk Controller» —port 1 —device 0 —type dvddrive —medium $BOOTDISK;;
esac[/cc]
незнаю, правда насколько это юзабельно, но вот что нашел http://retis.sssup.it/~fabio/freebsd/lkvm/
Звучит прикольно, надо пробовать. Правда, время будет только в феврале.
хмм такое ощущение что дизайн сменился и целерончик в кладовке заменился чем-то большим… =) —Да работает. это ставил. Удобно. Особенно когда геморой с RAID для фейк контролеров + нищебродство контор которые жмутся на нормальные рэйды, от жадности вставил на SB850 raid10 на 2Тб. Пытался VMware залепить. но увы мне надоело тратить на это время, связка bsd + box + phpbox на 1055T + 16Г рамы — шустро бегает да и насрать что мендленнее чем на vmware. по хорошему надо было поставить в кеш SSD но увы нищебродство… Итог RAID10 првератился в raid0 и всё с него бекапится bz2 на удалённый ПК. Машинки хорошо зажимаются, минус — долгая развертка на массив. Плюс в том что очень редко выходят диски из строя, и надо максимум раз в год. Так что приведённая статья автором — удобно и бюджетно, в противном случае просто ставится нормальный RAID заливается VMWare и всё. —Автору мега бонус за то что так долго в эфире. помоему с 2007 года? =)