Сборка образа Windows Server с драйвером SCSI
В результате тестирования работы ВМ под управлением ОС Windows Server 2012 выяснилось, что жесткий диск работает существенно быстрее (в 2-3 раза), если он подключен через контроллер шины SCSI, а не SATA. В данном руководстве описан процесс создания образа (glance image) для Openstack, который позволяет использовать загрузочный диск в режиме SCSI.
Подготовка образа на KVM
Создаем новую ВМ с параметрами:
Machine - q35-5.2; ОЗУ 4G; CPU - 4x 1 core; BIOS - SeaBIOS; SCSI Controller; Hard Disk virtio qcow2 11Gb; Net virtio mtu=1450
Добавляем к ней 3 CDROM типа SATA:
- загрузочный инсталлятор Windows Server 2022 STD
- драйверы virtio-win-0.1.229.iso (или новее)
- cloudbase-init_114_x64 (или новее)
Далее штатно ставим Windows, предварительно загрузив драйвер viostor.inf
После установки Windows, ставим все драйверы virtio и CDROM и агента KVM, копируем cloudbase-init.msi в папку C:\Windows\System32\Sysprep и выключаем ВМ.
Добавляем жесткий диск типа SCSI
размером 1Gb, убираем все три CDROM и запускаем ВМ.
Запускаем Disk Management
, переводим 1Gb диск в статус online
и инициализируем его. После этого переводим этот диск в статус offline
Выключаем ВМ, отсоединяем и удаляем диск 1Gb и вновь включаем ВМ.
Cloudbase-init
Ставим пакет C:\Windows\System32\Sysprep\cloudbase-init.msi
.
Выбираем все по-умолчанию, кроме Username: Administator
Галочку Run Cloudbase-init service as LocalSystem
включать не надо.
После того, как пакет установится - не нажимаем Finish
, а переключаемся на окно проводника и готовим скрипт для авторасширения диска.
Скрипт для авторасширения диска
Создаем файл с именем C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\LocalScripts\VolumeExtend.ps1
следующего содержания:
$drive_letter = "C"
$size = (Get-PartitionSupportedSize -DriveLetter $drive_letter)
Resize-Partition -DriveLetter $drive_letter -Size $size.SizeMax
Чтобы это работало, надо еще удалить раздел номер 3 (recovery partition).
Для этого запускаем командный интерпретатор cmd
и выполняем команду diskpart
list disk
select disk 0
list partition
select partition 3
delete partition override
extend size=633
exit
Вместо 633
надо ввести размер в мегабайтах, который занимал ваш раздел Recovery partition
Выключаем виртуалку и запускаем вновь.
Sysprep
Теперь нужно выполнить sysprep OOBE с генерализацией и завершением работы:
Выбираем: OOBE + Generalize + Shutdown
После окончания процесса sysprep
виртуалка выключится автоматически и можно забирать готовый образ.
Дополнения
Как поставить драйвер SCSI virtio
Другой вариант подгогтовки образа - если мы имеем рабочий образ, который не содержит нужного драйвера Controller SCSI
.
Грузимся в свежеустановленную сиcтему с жесткого диска (SCSI) и ставим все virtio-драйверы и guest-агента с подключенного CDROM:
Выключаем, включаем загрузку с установочного CDROM, загружаемся с установочного CDROM, выбираем режим восстановления (Repair your computer
) и открываем командную строку (Throubleshoot
-> Command Prompt
).
Смотрим, какие диски есть в системе:
Далее добавляем букву раздела, на котором установлен EFI (100M раздел) с помощью программы diskpart
После этого мы увидим на EFI-диск в проводнике под буквой “H”.
Прописываем наш SCSI-драйвер в загрузочный образ Windows:
wmic logicaldisk get caption
drvload d:\vioscsi\2k22\amd64\vioscsi.inf
dism /image:e:\ /add-driver /driver:vioscsi.inf
Как сделать, чтобы пароль менялся при входе?
Для этого нужно выполнить sysprep OOBE
с обобщением и завершением работы. Он сбросит пароль перед выключением Windows.
OOBE + Generalize + Shutdown
.
Если не запускается - надо удалить ненужные приложения - в моем случае это MicrosoftEdge.
В PowerShell наберите:
Бывает нужно выполнить команду под разными пользователями (Administrator, Admin). Увидеть “мешаюшие” приложения можно в логеC:\Windows\System32\Sysprep\Panther\setupact.log
Для затирания пустого места можно применить утилиту cipher
:
Ссылки
- https://cloudbase.it/openstack-windows-admin-password/
- https://cloudbase-init.readthedocs.io/en/latest/plugins.html
- https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000kAWeCAM
- https://www.penguinsolutions.com/documentation/scyld-cloud-manager/admin-guide/admin/openstack/windows.html#post-installation
Опубликовано: 19.07.2024