Установка Windows на KVM для опытных системных администраторов не составит труда. Тем не менее, в процессе развертывания ОС и создания под неё виртуальной машины могут встретиться ряд нетривиальных проблем, связанных с особенностями KVM. О них я и расскажу.
Если вам интересна тематика Debian и связанных с ним приложений, рекомендую обратиться к тегу Debian на моем блоге
Содержание
Установка Windows на KVM
К настоящему моменту у меня уже есть сервер с KVM. На нем также сконфигурирована сеть и хранилище гостевых дисков. Все это я подробно расписал в своей предыдущей статье Установка гипервизора KVM.
Для создания виртуальной машины я буду использовать утилиту virt-install.
Конфигурация виртуальной машины
Есть ряд базовых параметров, без указания которых создание виртуальной машины с помощью virt-install невозможно – это имя ВМ, объем оперативной памяти, настройки диска и параметры установки. Тем не менее, для наглядности я укажу и другие опции, которые так или иначе используются не реже обязательных.
Команда для создания виртуальной машины:
1 2 3 4 5 6 7 8 9 10 |
virt-install \ --name 2012r2test01 \ --ram=2048 \ --vcpus=2 \ --os-type=windows \ --disk pool=guest_images,size=30,bus=virtio,format=qcow2 \ --cdrom /home/bq/iso/2012r2.iso \ --network bridge=kvmbr0,model=virtio \ --graphics vnc,listen=0.0.0.0,password=Qwerty1234 \ --boot cdrom,hd,menu=on |
Некоторые пояснения:
- –-os-type windows – Устанавливает более подходящие аппаратные настройки для конкретной ветки ОС;
- –disk pool=guest_images – Создает виртуальные диски в данном хранилище;
- –graphics vnc,listen=0.0.0.0 – Устанавливаем тип графики. Адрес прослушки необходим, чтобы к vnc могли подключаться удаленные админы. По дефолту разрешены только локальные подключения.
Назначение остальных параметров очевидно.
Если в процессе создания виртуальной машины вы получили ошибку:
1 2 |
ERROR internal error: /usr/lib/qemu/qemu-bridge-helper --use-vnet --br=kvmbr0 --fd=24: failed to communicate with bridge helper: Transport endpoint is not connected stderr=failed to parse default acl file `/etc/qemu/bridge.conf' |
То нужно сделать как указано в статье Features/HelperNetworking, а именно (под пользователем root, разумеется):
- создаем каталог, если он отсутствует:
1 |
mkdir /etc/qemu |
- создаем конфиг и сразу добавляем в него нужную запись (kvmbr0 – имя моста):
1 |
echo "allow kvmbr0" > /etc/qemu/bridge.conf |
- в дополнение к сделанному выставляем права 1:
1 |
chown root:kvm /usr/lib/qemu/qemu-bridge-helper && chmod 4750 /usr/lib/qemu/qemu-bridge-helper |
Перезапускаем команду создания ВМ. Если все ОК, пришло время развернуть гостевую ОС.
Установка Windows
Подключаемся по VNC к только что созданной машине. Порт по умолчанию – 5900.
1 |
virsh vncdisplay 2012r2test01 |
virsh vncdisplay 2012r2test01
Результат будет например вот такой – :1 – к нему нужно приплюсовать 5900 и, таким образом, корректный порт будет 5901.
Как только дойдете до этапа разметки дисков, доступных устройств для установки ОС вы не увидите, вместо этого будет предупреждение:
Нужно подсунуть драйверы VirtIO (исошник я взял отсюда 2), выполнив команду:
1 |
virsh attach-disk 2012r2test01 /home/bq/iso/virtio-win-0.1.141.iso hda --type cdrom |
Далее возвращайтесь в окно установки ОС и найдите драйверы хранилища на только что смонтированном диске. Как драйверы будут найдены и система их определит, в списке дисков появятся нужные вам устройства. Но! Нужно не забыть вернуть диск с исошником ОС обратно в дисковод (иначе будет светиться предупреждение о невозможности установки ОС на HDD), для этого выполните команду:
1 |
virsh attach-disk 2012r2test01 /home/bq/iso/2012r2.iso hda --type cdrom |
Весь процесс более подробно вы можете увидеть ниже:
Дожидайтесь копирования файлов и установки системы. После этого нужно будет произвести небольшую настройку.
Настройка Windows
После установки ОС в системе останется часть не определенных устройств (например сетевой адаптер). Установить для них драйверы придется вручную через диспетчер устройств Windows как показано на записи ниже:
После установки всех драйверов система готова к работе.