Сегодня постараюсь описать все трудности в пути установки операционной системы (ОС) семейства Windows (а конкретнее Windows Server 2008 R2) на виртуальную машину KVM (используется qemu-kvm) в ОС Linux (а именно Debian 7)
Сложностей с установкой kvm возникнуть не должно
apt-get install qemu-kvm
Далее необходимо скопировать установочный образ операционной системы куда-нибудь на диск. К примеру можно скопировать в ~/kvm.
sudo dd if=/dev/cdrom of=Window_Server_2008_R2.iso
Самое необходимое: скачайте драйвера virtio, без них установка будет очень-очень долгой.
wget https://launchpad.net/kvm-guest-drivers-windows/20120712/20120712/+download/virtio-win-drivers-20120712-1.iso
Затем создадим папку для файлов виртуального жёсткого диска
cd ~ && mkdir KVM && cd KVM
И сам файл виртуального жёсткого диска, где 25G — его размер
qemu-img create -f qcow2 WIN2K8R2.qcow2 25G
и самое главное — запуск самой виртуальной машины.
qemu-system-x86_64 —enable-kvm -m 2048 -boot d -drive file=WIN2K8R2.qcow2,if=virtio -cdrom Win2K8X64R2Ent.iso -drive file=virtio-win-drivers-20120712-1.iso,media=cdrom -net nic,model=virtio -net user
, где -m 2048 — объём оперативной памяти для неё, WIN2K8R2.qcow2 — файл виртуального жёсткого диска, созданного ранее, if=virtio — источник драйверов для подключения жёсткого диска к виртуальной машине, Win2K8X64R2Ent.iso — образ операционной системы.
К сожалению, мне пришлось подключаться к удалённому рабочему столу, потому что по ssh установить Windows не удавалось, система требовала графический интерфейс.
Для запуска qemu под юзером производим следующие шаги:
Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:
user = "username"
group = "libvirt"
Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.
Выставляем для отдельного файла:
sudo setcap cap_net_admin=ei /usr/bin/kvm
Или выставляем для пользователя в целом в файле /etc/security/capability.conf:
cap_net_admin username
Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:
clear_emulator_capabilities = 0
Добавим пользователя в группу libvirt и kvm:
# adduser username libvirt
Установка Windows Server проста до безобразия, если знать когда подсунуть файлы драйверов для жёсткого диска.
Приведу краткий перечень действий, необходимых для корректной установки:
- Нажимаем Install
- Выбираем тип ОС
- Соглашаемся с лицензионным соглашением
- Выбираем Полная установка
- Щёлкаем по ‘Загрузить драйвер’
- Обзор
- Выбираем диск с драйверами Virtio. дисков должно быть два: один с Windows, другой — с драйверами.
- Выбираем ‘Virtio Drivers’ => STORAGE => SERVER2008R2 => AMD64
- OK
- Драйвер ‘Red Hat VirtIO SCSI controller’ будет выбран. Если его не видно, значит что то пошло не так 🙁
- Жмакаем Далее. Драйвер загрузится и вернёт на экран выбора дисков для установки ОС. Если размер не меняли, то там будет 25 Гб.
- Щёлкаем на пустом диске и жмём Далее. Всё. Установка идёт стандартным путём.
Единственная трудность случилась в конце установки, когда нужно придумать пароль для учётной записи администратора. Через RDP почему то не печатались иностранные символы, пришлось воспользоваться экранной клавиатурой.
Потребление памяти и утилизация процессора в пределах нормы и не превышала пары процентов при простое системы. Проц — Celeron G1620 🙂
Теперь осталось пробросить эту машину во внешку и подключится к ней по RDP, минуя RDP хостовой системы. Это пока не решено.