FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

Внимание! В данный момент, BSD гипервизор носит очень эксперементальный характер. Использовать его рекомендуется только в тестовых окружениях.

работа с bhyve

Здесь описаны отличия в работе bhyve-related скриптов по отношению к jail-related. Именование команд для действий над bhyve в большинстве случаев совпадает с командами для jail, но начинаются с буквы b вместо j.

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

		% cbsd bconstruct-tui
	

  • vm_os_type - Freebsd или Linux (адекватная работа остальных пока под подозрением)
  • vm_os_profile - если Linux, выбрать через пробел профиль линукса.
  • freesize - объем виртуального жесткого диска. Если гвест - Linux, это будет общий размер на весь диск. Если это FreeBSD, это будет количество доступного свободного места после создания (создается из jail). Например: 10g для Linux или 1g для FreeBSD
  • jname - имя виртуалки. например: freebsd, ubuntu, centos, debian
  • fqdn - полное имя с доменом, например blabla_foo.my.domain

Остальные параметры необязательны. Для виртуалок FreeBSD можно сразу заполнить ip4_addr (например: 192.168.0.5/24) и gw4 (например: 192.168.0.1) - по задумке, это применится в создаваемую VM. Если Linux, ip4_addr оставить в значении 0, gw4 - пустое.

Дальнейшее изменение конфигурации VM производится через скрипты cbsd bconfig и cbsd bhyvedsk-tui.

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

После отработки bconstruct-tui можно попробовать запустить виртуалку через cbsd bstart $jname. По-умолчанию, запускается с образа жесткого диска. Очередность загрузочного устройства может быть изменена через cbsd bconfig. В случае, если первое устройство - жесткий диск и он не содержит данных, сприпты предложат запуститься с CD/ISO.

Запуск, как и положено сейчас в bhyve, проходит в два этапа - загрузка ядра через bhyveload (для инородных, не FreeBSD-гвестах, эта операция проходит через grub2-bhyve) и непосредственно запуск виртуальности через bhyve. Обе операции в случае с CBSD проходят с созданием и выводом консоли в tmux сессию. Если после отработки cbsd bstart вас вернуло в терминал и по команде cbsd bls статус гвеста - в On, скорее всего, ядро загрузилось успешно и можно подключится в ее консоль через cbsd blogin $jname.

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

Останов виртуалки (а также, завершение bhyveload, когда если оно зависло на выполнении cbsd bstart и вас не выпустило обратно в терминал ) выполняется через команду cbsd bstop $jname

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

Для подключения к сессии, используется команда cbsd blogin. Поскольку сессия запускается в tmux, при подключении наследуется его навигация. Если вы не знакомы с tmux - основное, что вам нужно в случае с CBSD знать о tmux, что операция отключения от терминала происходит через комбинацию Ctrl + B и D (удерживая Ctrl, нажимаете B. Отпускаете их и давите D).

Операция с жесткими дисками VM

При создании, по пути ${workdir}/jails-data/$jname-data/ создается образ первого жесткого диска с именем dsk1.vhd. При этом, тип контроллера используется тот, который указан в профиле виртуальной машины (файлы $workdir/etc/defaults/bhyve-*.conf.

Через команду cbsd bhyvedsk-tui вы можете изменить тип контроллера и добавить или удалить новые образы

В настоящий момент, возможен выбор эмуляции через virtio-blk драйвер и ahci-hd. У одной виртуальной машины могут быть до 16 устройств с разными контроллерами. Через команду cbsd bhyvedsk вы можете вывести список всех жестких дисков виртуальных машин, или диски лишь конкретной VM.

Конфигурации VM

Изменить некоторые параметры виртуальной машины вы можете через команду cbsd bconfig.

Пара других комментариев

  • Если вы не меняли ${workdir}/share/jail-skel/etc/ файлы паролей и applytpl=1, пароль пользователя root у виртуалок freebsd созданных через cbsd bconstruct/jail2iso: cbsd
  • bhyve-виртуальны машины убраны из вывода jls, как и по команде cbsd bls вы не увидете jail-based окружения.
  • Поскольку все жесткие диски создаются в каталоге $workdir/jails-data/$jname-data, виртуальные машины bhyve могут быть экспортированы, перенесены со всеми дисками и импортированы на других хостах через команды cbsd jexport и cbsd jimport.
  • По аналогии с jrename и jclone работают скрипты brename и bclone за тем лишь исключением, что при работе фигурируют лишь параметры old= и new=.

  • FreeBSD гвест создается через скрипт jail2iso из jail, поэтому он не предлагает запустится с ISO
  • Сеть для вирутальных машин создается через tap интерфейсы, которые прописываются в bridge на ваш аплинковый интерфейс
  • В старых версиях grub-bhyve, при "резиновых" данных на экране на широкоформатном мониторе, если количество знакомест больше 255, grub уходит в ступор и уводит туда же bhyveload. Соответственно, если при cbsd bstart XXX процесс залочился, выполните cbsd bstop XXX и уменьшив геометрию окна, попробуйте запустить вновь. Патч: https://github.com/grehan-freebsd/grub2-bhyve/commit/70ace4fd43f5017d4aacc920017b5641c9d45431