Почти все хостинг-провайдеры предлагают свои образы операционных систем для быстрого развёртывания виртуальных машин. Если по какой-то причине потребуется развернуть Windows из собственного образа, есть риск столкнуться с проблемами обнаружения запоминающих устройств:
Я сталкивался с таким у Selectel и Hetzner, но у коллег были проблемы и с другими хостерами. Вся причина в отсутствии драйверов, которые необходимо либо подгрузить с другого iso-образа, либо вшить в установочный образ Windows самостоятельно.
Способ 1. Установка драйверов с другого iso-образа
Загрузите последнюю версию драйверов для Windows (и Windows Server) по ссылке: virtio-win.iso
Добавьте к ВМ ещё один CD/DVD-привод virtio-win.iso или подключите его вместо установочного образа Windows, а затем найдите недостающие драйверы:
После установки подходящих драйверов диски отобразятся в окне установки:
Перед продолжением установки подключите обратно установочный образ Windows!
Способ 2. Добавление драйверов в установочный образ
Этот способ будет удобен для тех, кому не помог предыдущий пункт или кто планирует многократную установку.
Нам понадобятся:
- ПК под управлением Windows или Windows Server (поддерживаемых версий);
- Установочный iso-образ, в который планируется добавить драйверы;
- Архиватор (для распаковки iso);
- oscdimg для упаковки всего этого безобразия обратно в iso.
Шаг 1. Распакуйте образ в папку, не имеющую кириллических символов в названии (т.к. я буду добавлять драйверы в Windows Server 2016, назвал папку ws2016). Аналогично распакуйте virtio-win.iso и oscdimg, а также создайте папку tmp:
Шаг 2 Запустите PowerShell от имени Администратора и выполните команду:
$win="<путь к распакованному iso>"
В моём случае команда будет выглядеть так:
$win="C:\Users\Anykey\Downloads\ws2016\"
Аналогично укажем пути к папке для временных файлов, драйверов и oscdimg:
$tmpfiles="C:\Users\Anykey\Downloads\tmp";
$virtio="C:\Users\Anykey\Downloads\virtio";
$oscdimg="C:\Users\Anykey\Downloads\oscdimg-amd64";
*ваши пути могут отличаться
Теперь необходимо вывести список редакций, присутствующих в образе:
Get-WindowsImage -ImagePath $win\sources\install.wim
Смонтируем образ выбранной редакции, чтобы добавить драйверы:
Mount-WindowsImage -Path $tmpfiles -ImagePath $win\sources\install.wim -Index 2
*ваш индекс может отличаться, см. скриншот выше
Для рекурсивного поиска и добавления драйверов, выполним следующую команду:
Add-WindowsDriver -Path $tmpfiles -Driver $virtio -Recurse -ForceUnsigned
Осталось отмонтировать образ с сохранением изменений:
Dismount-WindowsImage -Path $tmpfiles –Save
Шаг 3. Чтобы сократить размер образа, оставим только изменённую редакцию Windows Server:
DISM /Export-Image /SourceImageFile:$win\sources\install.wim /SourceIndex:2 /DestinationImageFile:$win\sources\install.esd /Compress:max;
Remove-Item -Path $win\sources\install.wim;
*ваш индекс может отличаться
Шаг 4. Чтобы диски определялись в программе установки, аналогичным образом добавим драйверы в Windows Setup. Для начала узнаем индекс образа:
Get-WindowsImage -ImagePath $win\sources\boot.wim
Смонтируем образ и добавим драйверы, а затем сохраним изменения:
Mount-WindowsImage -Path $tmpfiles -ImagePath $win\sources\boot.wim -Index 2;
Add-WindowsDriver -Path $tmpfiles -Driver $virtio -Recurse -ForceUnsigned;
Dismount-WindowsImage -Path $tmpfiles –Save
Шаг 5. Запакуем изменения обратно в iso-образ, выполнив команду:
Start-Process -FilePath "$oscdimg\oscdimg.exe" -ArgumentList "-h -m -o -u2 -udfver102 -bootdata:2#p0,e,b$win\boot\etfsboot.com#pEF,e,b$win\efi\microsoft\boot\efisys.bin $win $tmpfiles\windows.iso"
Если в вашем образе отсутствует каталог efi, скопируйте его из более нового образа ОС или оставьте поддержку только BIOS:
Start-Process -FilePath "$oscdimg\oscdimg.exe" -ArgumentList "-n -m -b$win\boot\etfsboot.com $win $tmpfiles\windows.iso"
Заключение
На этом установка недостающих драйверов завершена.
Ставь лайк и подписывайся на канал, чтобы чаще видеть в ленте подобный контент. Всем добра!)