понедельник, 6 февраля 2017 г.

Bhyve, Windows - в качестве гостя

В одной из своих прежних заметок я описал графическую установку гостевой системы Linux в гипервизоре Bhyve (портированный на FreeBSD QEMU). И вот настал момент, когда в качестве гостевой ОС потребовалось установить Windows. скажу сразу: без костылей поддерживаются только десктопные версии от Win8 и старше, серверные Win2012 и старше.
К настройке гипервизора не возвращаюсь, она описана в выше упоманутой статье, описываю сразу установку гостевой системы.

Установка свежей версии Windows

В каталоге /vms/.templates/ создаем шаблон winnew.conf следующего содержания:

  1. использовать UEFI
  2. Количество ядер у гостя
  3. Размер памяти у гостя
  4. Описание сетевого интерфейса 
  5. Используемый интерфейсом виртуальный свитч
  6. Тип эмулируемого устройства disk0
  7. Файл образа для дискового устройства
  8. Тип эмулируемого устройства disk1
  9. Файл образа .ISO для диска с драйверами виртуальных устройств.
  10. Использовать графический режим
  11. Порт для VNC подключения
  12. разрешение виртуального экрана
  13. При запуске ждать подключения VNC клиента
  14. Эмуляция usb мыши
Добавляем установочный образ windows в каталог /vmc/.iso/
Создаем виртуальную машину:

vm create -t winnew -s 20G test

Дальнейшая установка совпадает с установкой более ранних версий Windows поэтому вернусь к ней после описания конфигурирования гостя для ранних версий.

Установка старых версий Windows

Главная проблема с установкой более ранней версии Windows состоит в том, что размер сектора диска Bhyve по умолчанию берет равным 4096 байт, а на более ранних устройствах, на работу с которыми и ориентированные старые версии ОС он был 512 байт, кроме того UEFI ориентирован на работу с GPT разметкой, а старые версии Windows используют MBR.
В каталоге /vms/.templates/ создаем шаблон winold.conf следующего содержания:
шаблон отличается наличием строки
disk0_opts="sectorsize=512"
задающей размер сектора для эмулируемого диска.
И закоментированной 1-й строкой, которая, теоретически должна заставлять наш uefi работать работать с MBR но мне не удалось этого добиться.
Так же отключена эмуляция USB mouse.
Добавляем установочный образ windows в каталог /vmc/.iso/
Создаем виртуальную машину:

vm create -t winold -s 20G test

Дальнейшая настройка и установка для всех версий идентична:

Редактируем конфиг:

vm configure test

Меняем порт VNC соединения на свободный и раскомментируем строки с описанием disk1.
Загружаем с ресурса: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/
свежую стабильную версию virtio.iso (диск с драйверами виртуальных устройств QEMU)

vm iso https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.126-2/virtio-win.iso

Копируем скачанный образ в папку виртуальной машины:

cp /vms/.iso/virtio-win.iso /vms/test/virtio.iso

Запускаем установку:

vm -f install test1 win2008r2.iso

Ключ -f позволяет запустить установку с подключенной консолью:

Если что то пойдет не так, вы сможете выполнить в ней команду shutdown и остановить виртуальную машину.
Подключаемся к установке с помоoью VNC клиента на указанный при настройках порт и проводим настройку обычным образом, единственное если образ CD требует нажатия любой клавиши для установки - следует проявить определенную проворность сразу после подключения.
Из неудобств - на старых версиях, где не используется эмуляция USB mouse, указатели мыши довольно сильно раздваиваются.

После установки следует установить недостающие драйвера с примонтированного CD образа (их в системе будет 2 установочный и с драйверами) или можно загрузить необходимые драйвера на этапе выбора диска для установки (опция загрузить), однозначно потребуется драйвер сетевого интерфейса, остальные зависят от версии устанавливаемой системы:



Дальше идет обычная установка Windows, при каждой перезагрузке VNC клиент будет отваливаться и так как у нас включен параметр graphics_wait="yes"  для продолжения установки необходимо переподключаться снова, если Ваш установочный образ не требует нажатия любой клавиши для начала установки, то этот параметр можно не использовать (закоментировать с помощью # или просто удалить строку).
После завершения установки настраиваем сеть, RDP, и выключаем систему.
Выполняем
vm configure test
и коментируем/удаляем строки содержащие "disk1".

Теперь, если у вас 8/2012 Windows или свежее для запуска выполняете:
vm start test
Для автоматического запуска при перезагрузке хост-системы добавляем вашу машину в
список виртуалок в файле /etc/rc/conf:
vm_list=”test”

Для более ранней версии Windows, теоретически необходимо в конфиге виртуалки указать:
uefi="csm"
но у меня она стартовать с этими настройками отказалась, однако я обнаружил, что если запускать виртуалку с параметром -f, она нормально запускается, только при этом должна висеть консоль, из которой осуществляется запуск:
vm -f start test
Поэтому я в консольном менеджере screen создал отдельную вкладку из которой запускаю виртуальную машину

Эксперименты проводились на windows 2012r2 и 2008r2.
Целесообразность виртуалить таким образом десктопные версии для меня сомнительна, но у каждого своя ситуация.

Комментариев нет:

Отправить комментарий