BHyVe

Задача - установить несколько гостевых ОС на хост с FreeBSD.

Исходные данные:

  • FreeBSD 11.0-RELEASE-p9 - ОС хоста
  • alpha - имя хоста
  • zfs - файловая система хоста
  • guests - имя пула zfs, который используется для размещения гостевых систем
  • em0 - сетевой интерфейс хоста
  • ubuntu server 14.04.5 - гостевая система

Подготовка хоста

Загружаем модуль ядра bhyve:

alpha# kldload vmm

и настраиваем сетевые интерфейсы — нам нужно 4 — под количество гостевых ОС:

alpha# ifconfig tap0 create
alpha# ifconfig tap1 create
alpha# ifconfig tap2 create
alpha# ifconfig tap3 create
alpha# ifconfig bridge0 create
alpha# ifconfig bridge0 addm em0 addm tap0 addm tap1 addm tap2 addm tap3
alpha# ifconfig bridge0 up

Для перманентного сохранения настроек добавляем:

  • в файл /etc/sysctl.conf
    net.link.tap.up_on_open=1
  • в файл /boot/loader.conf
    vmm_load="YES"
    if_bridge_load="YES"
    if_tap_load="YES"
  • в файл /etc/rc.conf
    cloned_interfaces="bridge0 tap0 tap1 tap2 tap3"
    ifconfig_bridge0="addm em0 addm tap0 addm tap1 addm tap2 addm tap3"

Если устанавливать как гостевую систему, отличную от FreeBSD, потребуется установить пакет grub2-bhyve:

alpha# pkg install grub2-bhyve

Установка Ubuntu Linux как гостевой системы

Размещение

Поскольку файловая система хоста — zfs, то будем устанавливать linux на том zfs:

alpha# zfs create -V32G -o volmode=dev guests/ubuntu14

Созданный том можно найти в устройствах: /dev/zvol/guests/ubuntu14

Первый этап установки

Согласно документации установка ОС linux проходит в два этапа. Первый этап — загрузка ядра linux — осуществляется утилитой grub-bhyve. Создадим файл ubuntu14.device.map, определяющий соответствие между устройствами гостевой и хостовой систем:

alpha# echo "(hd0) /dev/zvol/guests/ubuntu14" > ubuntu14.device.map
alpha# echo "(cd0) ./ubuntu14.iso" >> ubuntu14.device.map

В данном случае диск hd0 у нас соответствует тому zfs, а cd0 - файлу с образом гостевой системы.

Затем загружаем ядро:

alpha# grub-bhyve -m ./ubuntu14.device.map -r cd0 -M 4096M ubuntu14

Здесь ubuntu14 — имя гостевой системы, ключ

  • -m определяет файл ubuntu14.device.map
  • -r — корневое устройство
  • -M — объем оперативной памяти

В предложенном меню загрузки выбираем пункт Install и жмем Enter. Ядро linux пошло грузиться, но мы этого не видим…

Второй этап установки

Второй этап — это собственно установка ОС. Выполняется командой

alpha# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,/dev/zvol/guests/ubuntu14 -s 4:0,ahci-cd,./ubuntu14.iso -l com1,stdio -c 2 -m 4096M ubuntu14

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

  • -A — создает таблицу ACPI. Ключ обязателен для гостевых систем с архитектурой amd64.
  • -H — если не указать, то виртуальные процессоры будут использовать процессор хоста полностью.
  • -P — обязывает виртуальный процессор завершить работу, когда получена инструкция PAUSE.
  • -s slot,emulation[,conf] — конфигурирует виртуальный PCI-слот.
  • -l lpcdev[,conf] — конфигурирует устройства на LPC PCI-ISA bridge. Поддерживается только com1, com2 и bootrom.
  • -c numspus — количество виртуальных процессоров гостевой ОС.
  • -M memsize — объем оперативной памяти.

После завершения работы с виртуальной машиной удаляем ее. Это необходимо для последующего запуска машины.

alpha# bhyvectl --destroy --vm=ubuntu14

Запуск и завершение работы

Запуск осуществляется тоже в два этапа. Первый:

alpha# grub-bhyve -m ubuntu14.device.map -r hd0,msdos1 -M 4096M ubuntu14

После этого через открывшееся меню загрузчика grub необходимо запустить ядро.

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1) (cd0) (cd0,apple2) (cd0,apple1) (cd0,msdos2) (host) (lvm/system-root) (lvm/system-swap)
grub> ls (hd0,msdos1)/
lost+found/ config-4.4.0-62-generic System.map-4.4.0-62-generic abi-4.4.0-62-generic grub/ vmlinuz-4.4.0-62-generic initrd.img-4.4.0-62-generic
grub> linux (hd0,msdos1)/vmlinuz-4.4.0-62-generic root=/dev/mapper/system-root
grub> initrd (hd0,msdos1)/initrd.img-4.4.0-62-generic
grub> boot

Второй:

alpha# bhyve -A -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap0 -s 3:0,virtio-blk,/dev/zvol/guests/ubuntu14 -l com1,stdio -c 2 -m 4096M ubuntu14

После завершения работы удаляем объект из памяти:

alpha# bhyvectl --destroy --vm=ubuntu14

Утилиты для управления виртуальными машинами

Можно использовать утилиту vm-bhyve.

freebsd/bhyve.txt · Последние изменения: 21.10.2018 18:02:20 — Ладилова Анна
Наверх
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0