VirtualBox без Xorg
К этому материалу есть уточняющая статья, смотрите здесь.
После того, как qemu простилась с ядерным модулем kqemu и работать с ней стало совершенно невозможно, пришлось мне в плане виртуализации искать другие решения. Вариантов, на самом деле, не много, из всего найденного больше всего приглянулся emulators/virtualbox-ose, однако изрядно смущает, что он оборудован графическим интерфейсом, который в свою очередь при сборке вытягивет за собой чуть не весь xorg. Что, согласитесь, на сервере совершенно неуместно.
Однако, GUI от virtualbox отрывается легко и непринужденно с сохранением всего функционала программы. Итак, для начала надо правильно собрать:
1 2 | $ cd /usr/ports/emulators/virtualbox-ose $ sudo make config |
Здесь надо правильно сконфигурировать сборку: отключить qt4, x11 и NLS. Если нативную поддержку языков не отключить, не соберется, потребовав поддержки графики. Обязательно не забыть установить [X] напротив VNC, эта штука архиполезна на этапе установки операционки в гостевую машину, да и вообще не помешает:
После этого
1 2 3 | $ sudo make $ sudo make install $ sudo make clean |
Все, virtualbox у нас установлен, причем без лишних сущностей. В отсутствие GUI конфигурирование виртуальных машин и управление ими производится из командной строки. Вот пример создания и запуска вирутальной машины:
Создаем виртуальную машину:
1 | VBoxManage createvm -name "TestBSD" -register |
Изменяем параметры созданной машины:
1 | VBoxManage modifyvm "TestBSD" --memory 1024 --acpi on --nic1 bridged --bridgeadapter1 em0 --nictype1 82540EM |
—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 контроллер в виртуальную машину:
1 | VBoxManage storagectl TestBSD --name "Disk Controller" --add ide |
или добавляем SATA контроллер в виртуальную машину.
1 | VBoxManage storagectl TestBSD --name "Disk Controller" --add sata |
Создаем жесткий диск размером в 50 гб.
1 | VBoxManage createhd --filename /home/denis/vms/7301.vdi --size 51200 |
Сжимаем его. будет расти по мере заполнения.
1 | VBoxManage modifyhd /home/denis/vms/7301.vdi compact |
Подключаем созданный диск к контроллеру
1 | VBoxManage storageattach TestBSD --storagectl "Disk Controller" --port 0 --device 0 --type hdd --medium /home/denis/vms/testbsd.vdi |
Подключаем образ установочного диска к контроллеру
1 | VBoxManage storageattach TestBSD --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/denis/isos/install.iso |
Включаем загрузку ВМ с установочного образа
1 | VBoxManage modifyvm TestBSD --boot1 dvd |
Запуск машины.
1 | VBoxHeadless -startvm 'TestBSD' -n -o password |
Вот тут-то и пригодилась нам та [X] перед VNC :) Ключ -n указывает, что вместе с машиной нужно запустить vnc сервер, который будет показывать нам виртуальную машину, а ключ -o задает пароль для присоединения к этому серверу. То есть запустив машину и подцепившись любым vnc клиентом к IP адресу хоста мы увидим консоль созданной виртуальной машины. Собственно, после того как машина настроена, на нее установлена операционная система и настроена сеть, можно vnc сервер отключить.
В заключение приведу скриптик, который я сваял для того, чтобы автоматизировать процесс создания виртуальной машины. Скрипт предельно примитивный, изящества кода внем нет, но он работает :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | #!/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 |
незнаю, правда насколько это юзабельно, но вот что нашел 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 года? =)