Вы можете существенно упростить развертывание операционной системы на типовых рабочих станциях (серверах), если заранее интегрируете все необходимые драйвера в хранилище драйверов (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
Проблема сохраняется.
Для перепаковки создавал одноразовые виртуалки, позволяет закинуть драйвера и упаковать, однако с этой же машины, повторно смонтировать образ не дает, необходимо поднимать новую.
Вторая ошибка возникает при попытке закинуть «тяжелые» драйвера.
Добрый день! Вопрос конечно не по теме, но можно ли удалённо запустить приложение , к примеру встроенную камеру на ноутбуке ?