Вы можете существенно упростить развертывание операционной системы на типовых рабочих станциях (серверах), если заранее интегрируете все необходимые драйвера в хранилище драйверов (Drive Store) в вашем установочном образ Windows. В этом случае вам не придется после установки Windows вручную скачивать и устанавливать специфические драйвера (в том числе AHCI/RAID/NVMe) на каждый компьютер.
В этой статье мы покажем, как добавить драйвера устройств непосредственно в установочный офлайн образ Windows 10 (это может быть ISO/WIM файл или VHD/VHDX файл с шаблоном ОС). Инструкция применима для всех поддерживаемых версий Windows 11, 10, 8.1 и для Windows Server 2022, 2019, 2016, 2012 R2.
В современных редакциях Windows вы можете добавить драйвера в установочный ISO образ двумя способами:
- с помощью утилиты DISM;
- с помощью PowerShell.
Добавляем драйвера в образ Windows с помощью PowerShell
Скачайте и поместите все необходимые драйвера для устройств в один каталог (для каждого драйвера нужно создать отдельную папку). Обратите внимание, что многие производители (в том числе Dell, HP) поставляют свои драйвера в виде самораспаковывающихся exe файлов или zip архивов. Такие архивы необходимо распаковать на диск, чтобы в каталоге с драйверами присутствовали inf, cat и sys файлы.
Создайте следующую структуру каталогов:
- Каталог Drivers – в нем будут хранятся распакованные файлы драйверов для вашей редакции Windows 10 (которые предполагается интегрировать в дистрибутив);Вы можете скачать и распаковать необходимые файлы драйверов вручную или экспортировать все сторонние драйвера с эталонного компьютера, на котором уже установлены все необходимые драйвера с помощью командлета Export-WindowsDriver.
- Каталог ISO – в каталоге хранится распакованный iso образ Windows 10. Нам нужен только файл Install.wim из каталога Sources;
- Каталог Mount – пустой каталог, в который в дальнейшем будет смонтирован WIM образ Windows.
Выведите список всех версий Windows, которые содержатся в файле Install.wim с помощью командлета PowerShell Get-WindowsImage. Это позволит вам получить индекс редакции Widows, в которую планируется интегрировать дополнительные драйвера.
Get-WindowsImage -ImagePath C:\WinWork\ISO\install.wim
В нашем примере в WIM файле содержится всего 1 редакция Windows 10 Pro с индексом 1 (ImageIndex : 1).
dism /export-image /SourceImageFile:"C:\WinWork\ISO\install.esd" /SourceIndex:1 /DestinationImageFile:C:\WinWork\ISO\install.wim /Compress:max /CheckIntegrity
Далее необходимо смонтировать образ выбранной версии Windows в каталог Mount. Полученные выше индекс редакции Windows, которую необходимо смонтировать нужно указать в качестве аргумента Index:
Mount-WindowsImage -Path C:\WinWork\Mount\ -ImagePath C:\WinWork\ISO\install.wim -Index 1
После того, как образ смонтирован, вы можете добавить в него драйвера из каталога Drivers
Add-WindowsDriver -Path C:\WinWork\Mount\ -Driver C:\WinWork\Drivers -Recurse
Командлет Add-WindowsDriver осуществит рекурсивный поиск (параметр -Recurse) в указанном каталоге и подкаталогах всех .inf файлов с описаниями драйверов. По описанию в inf файле команда добавит зависимые INF, DLL, CAT, PNF и т.д. файлы в ваш образ Windows.
Итак, драйвера скопированы, и текущий образ можно отмонтировать, сохранив изменения в нем.
Dismount-WindowsImage -Path C:\WinWork\Mount\ –Save
В рассмотренном примере мы добавили драйверы в образ Windows в файле Install.WIM. Это образ Windows, который будет установлен на ваш диск. Если необходимо добавить драйвера в загрузочный образ Windows PE (с которого выполняется только установка Windows), необходимо добавить драйвера в файл Boot.wim. Обычно это необходимо, когда при установке Windows на компьютере не определяются локальные диски или отсутствует доступ к сети. Обычно в образ boot.wim достаточно добавить только драйвера контроллеров, дисков или сетевых адаптеров.
Вы можете сконвертировать ваш файл install.wim, содержащий установочный образ Windows с интегрированными драйверами в формат install.esd, применив сжатие (compress):
DISM /Export-Image /SourceImageFile:C:\WinWork\ISO\install.wim /SourceIndex:1 /DestinationImageFile:C:\WinWork\ISO\install.esd /Compress:recovery
Осталось создать iso файл и записать его на диск или флешку с помощью Dism++ или команды oscdimg:
oscdimg -n -m -bc:\WinWork\ISO\boot\etfsboot.com C:\WinWork\ISO C:\new_win10pro_image.iso
Данная команда сформирует ISO образ для установки на компьютер с BIOS или в режиме UEFI Legacy (CSM, compatible)
Для генерации универсального ISO образа с поддержкой UEFI и BIOS, используйте команду:
oscdimg.exe -h -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\winwork\iso\boot\etfsboot.com#pEF,e,bc:\winwork\iso\efi\microsoft\boot\efisys.bin -lWin10 c:\iso c:\new10image.iso
Для записи ISO образа на USB флешку проще всего использовать утилиту Rufus.
Теперь вы можете использовать ваш образ Windows для установки на компьютеры с локального устройства или по сети (с помощью PXE загрузки).
Интеграция драйверов в образ Windows Server с помощью DISM
Теперь покажем пример интеграции драйверов в установочный образ Windows Server 2022.
Структура каталогов, с которой мы будем работать может быть той же самой: Drivers (с здесь хранятся драйвера и *.inf файлы), ISO (распакованный образ Windows Server 2022), Mount (каталог монтирования образов). Все операции по модификации образа выполняются из Windows 10.
Выведите список редакций в WIM файле:
Dism /Get-ImageInfo /imagefile:"C:\iso\sources\install.wim"
В моем примере я хочу добавить драйвера в образ Windows Server 2022 Standard (Desktop Experience) с Index:2.
Смонтируйте установочный образ install.wim:
dism /mount-wim /wimfile:"C:\iso\sources\install.wim" /index:2 /mountdir:c:\mount
Теперь можно выполнить рекурсивный поиск и добавление новых драйверов в образ Windows Server 2022:
dism /image:c:\mount /Add-Driver /driver:c:\drivers\ /recurse
Для каждого успешно добавленного драйвера появится надпись:
driver.inf: The driver package was successfully installed
Сохраните изменения в образе:
dism /unmount-wim /mountdir:c:\mount /commit
Если необходимо добавить драйвера во все редакции Windows Server в установочном образе, указанные операции нужно выполнить для всех индексов в файле install.wim.
Кроме интеграции драйверов, вы можете добавить в устанавливаемый образ Windows еще и обновления безопасности (Как интегрировать обновления в установочный образ Windows), это повысит уровень защиты ОС сразу после установки. Осталось записать обновленный установочный образ на загрузочный диск или USB флешку или сконвертировать его в ISO.
Удаление драйверов из образа Windows
В некоторых случаях вам может понадобится удалить драйвера из установочного WIM образа Windows (при удалении старых/некорректных драйверов, или для уменьшения размера ISO образа).
Для этого, смонтируйте офлайн образ WIM в локальную папку:
Mount-WindowsImage -Path C:\Mount\ -ImagePath C:\iso\sources\install.wim -Index 2
Вывести список сторонних драйверов в образе:
Get-WindowsDriver -Path "c:\Mount"
Чтобы удалить определенный драйвер, нужно указать имя его inf файла (oem<number>.inf):
Remove-WindowsDriver -Path "c:\offline" -Driver "OEM0.inf"
Можно удалить из образа драйвера определенного вендора:
$drivers = get-windowsdriver -path C:\mount$drivers | where-object {$_."ProviderName" -eq 'Intel' } | Remove-WindowsDriver -Path C:\Mount
Сохраните изменения в образе:
Dismount-WindowsImage -Path C:\Mount -save
Спасибо за статью. На Windows 7 для создания образа средствами PowerShell тоже предварительно нужно установить Windows ADK.
Add-WindowsDriver : Произошла ошибка. Операция не была выполнена.
Убедитесь, что DISM правильно установлен в образе, и повторите операцию.
строка:1 знак:1
+ Add-WindowsDriver -Path .\Mount -Driver .\Drivers -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WindowsDriver], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsDriverCommand
Пишет на этапе монтирования драйверов
Драва USB 3.0 для HPE DL20
OS Windows Server 2008 R2 x86
В чом проблемма?
Спасибо!!!
В Windows 7 / 2008R2 нет командлета Add-WindowsDriver. Он появился только в Windows 8 / Server 2012 и выше.
Для интеграции драйвера в образ в Win7/2008 R2 используйте DISM (пример есть в статье https://winitpro.ru/index.php/2016/12/21/integraciya-drajvera-kontrolera-usb-3-0-v-distributiv-windows-7/ )
/SourceImageFile:C:\WinWork\ISO\install.wim пропущено двоеточие
Спасибо, поправил!
как потом удалять этот весь хлам, весом под 30Гб, из папки Mount???
Нужно отмонтировать образ:
Dismount-WindowsImage -Path C:\WinWork\Mount\ –Save
спасибо. но у меня теперь не получается сделать iso файл… пишет «‘oscdimg’ is not recognized as an internal or external command,
operable program or batch file.»
вложил файл oscmidg.exe в рабочую папку и теперь пишет «E:\WinWork>oscdimg -n -m -bc:\ISO\boot\etfsboot.com E:\WinWork\ISO E:\new_win10pro_image.iso
OSCDIMG 2.54 CD-ROM and DVD-ROM Premastering Utility
Copyright (C) Microsoft, 1993-2007. All rights reserved.
Licensed only for producing Microsoft authorized content.
ERROR: Could not open boot sector file «c:\ISO\boot\etfsboot.com»
Error 3: The system cannot find the path specified.»
Проверьте, что все пути и файлы в команде правильные (существуют).
можно подробней написать чтот должно быть установлено на комп, чтобы можно было сконвертировать wim(или esd) в iso?
тут важно уточнить: нужно поместить install.esd в папку c распакованым оригинальным образом по пути c:\ISO\sources на замену оригинальному install.wim. тогда не будет ошибок как у меня в комментариях
Команду надо поправить, исходя из того, что ведется работа в папке C:\WinWork:
oscdimg -n -m -bc:\WinWork\ISO\boot\etfsboot.com C:\WinWork\ISO C:\WinWork\new_win10pro_image.iso
Все отлично. Работал в Windows 10 и с Windows 10. Все тип-топ.
В пункте 2 метода с PowerShell в команде указан 4 индекс: /SourceIndex:4 в то время как мы пытаемся узнать индекс образа только в 3 пункте! Надо делать наоборот: во 2 пункте узнать индекс командой
Get-WindowsImage -ImagePath C:\WinWork\ISO\install.esd
После чего выбрать индекс извлекаемого образа и использовать его в команде
dism /export-image /SourceImageFile:»C:\WinWork\ISO\install.esd» /SourceIndex: …
И дальше, т.к. мы извлекли один образ, то его индекс будет 1, т.е. его не надо больше узнавать
Добрый день!
А можно в образ добавить программы(Chrome, Wnrar и т.п.) ?
Можно развернуть образ на ВМ, установить программы, выполнить sysprep и захватить образ через dism /capture-image, а потом заменить оригинальный intall.wim в установочном файле.
Также как вариант можно запустить установку софта с помощью winget через скрипт в SetupComplete.cmd (%WINDIR%\Setup\Scripts\SetupComplete.cmd)
шаг с конвертацией в esd для чего? избыточен?
Можно использовать формат WIM или ESD (на 15-25% меньший размер образа за счет сжатия).
Ранее все работало корректно. Однако сталкиваюсь либо с проблемой того, что образ уже подключен:
Mount-WindowsImage : Указанный образ в указанном WIM-файле уже подключен с доступом на
чтение и запись.
Если пытаться костылять, копировать файл, пересобирать образ ошибка уже другая.
PS C:\Windows\system32> Add-WindowsDriver -Path C:\Mount\ -Driver G:\Drivers\GIGABYTE -Recurse
ПРЕДУПРЕЖДЕНИЕ: Такой запрос не поддерживается.
Add-WindowsDriver : Такой запрос не поддерживается.
строка:1 знак:1
+ Add-WindowsDriver -Path C:\Mount\ -Driver G:\Drivers\GIGABYTE -Recurs …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WindowsDriver], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsDriverCommand
Судя по первой ошибке, надо сначала отмонтировать образ.
Вторая ошибка возможно также вызвана тем что каталог C:\Mount\ занят
Ссылаясь на ошибку, пробовал упаковать образ.
В том числе принудительно смонтировать DISM для размонтирования / удаления смонтированного Windows WIM, с помощью команды:
dism /cleanup-wim
Проблема сохраняется.
Для перепаковки создавал одноразовые виртуалки, позволяет закинуть драйвера и упаковать, однако с этой же машины, повторно смонтировать образ не дает, необходимо поднимать новую.
Вторая ошибка возникает при попытке закинуть «тяжелые» драйвера.
Отмонитировать можно командами
dism /unmount-wim /mountdir:c:\mount /commit
либо dism /Unmount-Image /mountdir:c:\mount /discard
Добрый день! Вопрос конечно не по теме, но можно ли удалённо запустить приложение , к примеру встроенную камеру на ноутбуке ?