Ограничения $WinPeDriver$ при использовании в сочетании с другими методами внедрения драйверов
В этой статье содержатся рекомендации по включению драйверов в WinPE и операционной системе, чтобы драйвер был доступен в части установки WinPE, а также завершается установкой завершенной операционной системы.
Область применения: Windows 7 с пакетом обновления 1 (SP1), Windows Server 2012 R2, Windows Server 2008 R2 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 2686316
Итоги
При добавлении драйвера в установочный носитель не смешивайте версии. Используйте одну и ту же версию каждого драйвера на всех носителях.
Существует несколько различных методов, включая встроенные драйверы в Winpe (boot.wim) и целевую установку операционной системы (install.wim). Если версии драйверов не соответствуют, первый драйвер, загруженный в память, будет использоваться независимо от правил ранжирования PNP. Другие версии могут быть помечены как плохие драйверы, которые будут препятствовать выбору этих драйверов с помощью PNP в дальнейшем. Это включает любой драйвер, загруженный в память во время загрузки на этап установки WinPE (Winpe). Примеры могут включать внедрение драйверов в boot.wim через DISM.exe или загрузку драйвера с помощью Drvload.exe для ручной загрузки драйвера.
Характер использования
Рассмотрим следующий сценарий: вы создаете пользовательский образ среды предварительной установки Windows (WinPE) для установки операционных систем Windows, которым требуется драйвер контроллера хранилища вне коробки перед запуском Setup.exe для управления дисками. Кроме того, необходимо предоставить драйверы для включения в папку \$WinPEDriver$ программы установки, чтобы включить более поздние версии одного драйвера.
Функция $WinPEDriver$ предназначена для предоставления драйверов во время установки. Тем не менее, это функция Setup.exe, и так как это не вызывается до тех пор, пока Setup.exe запуски. Драйверы для нынешних устройств, которые внедряются вручную в хранилище драйверов WinPE boot.wim с помощью DISM, загружаются в память во время загрузки. Эти два механизма разделены, и есть некоторые предостережения для их совместного использования.
WinPE не имеет встроенного механизма для выгрузки драйверов, загруженных в память, поэтому все драйверы для устройств, которые уже загружены, не будут перезагружены после запуска setup.exe, так как уже есть драйверы для загруженного устройства. Эта ошибка приведет к тому, что программа установки помечает драйвер в папке $WinPEDriver$ как плохой драйвер, даже если он является более новой, чем версия драйвера, внедренная в WinPE, и в противном случае она будет отключена. Программа установки не имеет явных знаний о драйверах, загруженных в boot.wim.
Это поведение выполняется по проектированию. Однако в этой статье будет определен метод размещения этого сценария, поэтому эти драйверы по-прежнему могут быть включены в развертываемую операционную систему.
Дополнительная информация
Учитывая приведенный выше сценарий, присвойте WinPE на загрузочном USB-устройстве флэш-памяти (UFD) или палке пальца будет наиболее предпочтительнее.
В этом документе мы будем выделять методы внедрения драйверов и запуска окон. На следующей диаграмме кратко показаны методы и результаты включения драйверов.
WinPE (встроенный или внедренный) | (встроенные драйверы в $WinPEDriver$) | Результат (post OS) |
---|---|---|
Если WinPE содержит драйвер X1, внедренный с помощью Dism.exe | содержит версию драйвера X2 с тем же именем драйвера. | X1 будет перенесен в после установки ОС, и X2 будет игнорироваться |
Если WinPE устанавливает драйвер X2 с помощью Drvload.exe из $WinPEDriver$ | содержит версию драйвера X2 с тем же именем драйвера. | X2 будет осуществляться после установки ОС |
Значение , если WinPE содержит драйвер X1, который не является загрузочным (встроенным) | не содержит драйвера | Будет использовать встроенный драйвер X1. Для установки ос после установки ос устройства не будет доступен драйвер вне коробки |
Ограничения драйвера
Помните, что существуют некоторые драйверы, которые могут быть включены и (или) загружены, которые могут не работать во время установки WinPE. Это включает в себя, но не ограничивается ими; драйверы видео, драйверы беспроводного адаптера и звуковые драйверы. Поведение, описанное в этом документе, не зависит от драйверов BootCritical (драйверы, необходимые во время загрузки, такие как драйверы контроллера для доступа к жесткому диску) и фактически для всех драйверов, загруженных во время установки или развертывания.
Пошаговое руководство по загрузке драйверов из StartNet.cmd
Это только один метод для включения того же драйвера в среду предустановки Windows (WinPE), а также предоставление доступа к установленной операционной системе; Другие методы возможны с помощью дополнительных сведений в этом документе.
Настройте компьютер технического специалиста:
- Установите OPK/AIK на поддерживаемый технический компьютер.
- Скопируйте биты Windows для изменения в локальный HDD c:\bin.
- Поиск и скачивание и извлечение драйверов для включения в носитель.
Подготовьте USB-устройство на веб-странице с именем устройства INSTALL_WIN7. Это имя используется позже, и при изменении этого необходимо изменить имя в примере скрипта, описанного на шаге 6, и приведенный ниже пример (ссылки на веб-страницы перечислены в конце документа).
Создайте файлы WinPE для копирования на USB-устройство, откройте командную строку администрирования и выполните следующую команду:
Copype.cmd <arch> <path>
Copy <pathto> winpe.wim to \ISO\sources\boot.wim
Подключение boot.wim:
Dism /get-wiminfo /wimfile:\<pathto>\boot.wim
Dism /mount-wim /wimfile:<pathto>\boot.wim /index:1 /mountdir:<pathto>\Mount
Откройте командную строку администрирования и измените \mount\windows\system32\startnet.cmd (с помощью Notepad.exe или аналогичного).
Следующий пример скрипта определяет USB-устройства и делает драйверы доступными во время WinPE с помощью Drvload.exe. Вырезать и вставить скрипт в открытый файл startnet.cmd.
Примечание.
Вы можете сначала скопировать скрипт в notepad.exe или другой текстовый редактор, чтобы удалить форматирование.
wpeinit :ChkVar :: Locating USB Device IF NOT DEFINED usbdrv ( ECHO list vol | diskpart | find "INSTALL_WIN7" > pt.txt FOR /F "tokens=3" %%a IN (pt.txt) DO ( SET usbdrv=%%a^: ) del pt.txt /f /q IF EXIST %usbdrv%\InstallOS.bat call InstallOS.bat
Сохраните StartNet.cmd и закройте его.
Отключите и зафиксируйте изменения в boot.wim с помощью следующей команды:
Dism /unmount-wim /mountdir:<pathto>mount /commit
Скопируйте все файлы в папку \ISO на USB-устройство флэш-памяти (следует отформатировать FAT32 и пометить как активный).
Создайте папку на корневом устройстве USB-флэш-памяти с именем $WinpeDriver$.
Скопируйте драйверы в эту папку (например <, USB_drv\$WinpeDriver>$\DriverX).
Откройте запрос администрирования cmd и создайте файл <USB_drv>\InstallOS.bat, вырезая и вставляя следующую строку в пакетный файл:
drvload %usbdrv%\$winpedriver$\<device>\filename. INFЧтобы включить исходные файлы установки ОС Windows с DVD-диска, выполните следующие действия:
- Создайте следующую папку на USB-пальцем: <USB_drv>\OS>\<Sources (например, e:\Win2008r2x64\Sources).
- Выберите и скопируйте DVD-диск\sources\* в <USB_drv>\<OS>\sources (можно исключить boot.wim)
- Чтобы вручную запустить setup.exe при загрузке в WinPE, выберите <USB_drv>\OS>\<Sources\Setup.exe и добавьте все необходимые параметры.
- Для полного автоматического развертывания добавьте следующую строку в файл InstallOS.bat, добавив все соответствующие параметры:
%usbdrv%\<OS>\Sources\Setup.exe
ТЕСТИРОВАНИЕ путем загрузки на USB-устройство на тестовом компьютере
Методы для создания драйверов доступными для WinPE
Ниже перечислены методы включения драйверов в WinPE:
Внедрение времени сборки образа с помощью DISM.exe — помещает драйвер в Driverstore образа WinPE и выбирается с помощью самонастраивающийся во время загрузки WinPE. Он не распространяется на установленную ОС. Для этого метода необходимо подключить WIM-файлы для доступа, внедрить драйвер, а затем сохранить и зафиксировать изменения в WIM.
Действия по сбору информации, подключению, внедрению и отключению WIM:
DISM /get-wiminfo /wimfile:<pathto>boot.wim
DISM /mount-wim /wimfile:<pathto>boot.wim /index:n /mountdir:<pathto>mount
DISM /add-driver /image:<pathto>mount / driverpath:<pathto>driverINF
[и наоборот/remove-driver
, если требуется]DISM /unmount-wim /commit /mountdir:<pathto>mount
Загрузка драйвера среды выполнения через Drvload.exe — загружает драйвер в память и запускает устройство. Не распространяет драйвер на установленную ОС.
Загрузка драйвера среды выполнения с помощью Devcon.exe — Devcon предоставляется с помощью примера исходного кода в комплекте драйверов устройств Windows (DDK)/комплект драйверов Windows (WDK). Необходимо создать и скомпилировать собственную копию. Devcon используется для управления драйверами, такими как загрузка драйверов в память и начальные устройства. Не распространяет драйвер на установленную ОС. (Ссылка в разделе "Ссылки")
папка $WinPEDriver$ — Setup.exe попытается загрузить все драйверы в каталоге $WinPEDriver$ в память, а также запланировать их внедрение в устанавливаемую ОС.
Файл ответов среды выполнения (unattend.xml) с DriverPath — путь (и учетные данные при необходимости) должен быть предоставлен в unattend.xml. Он используется для доступа к файлам в центральном репозитории, который может находиться в сетевом ресурсе или локальном ресурсе. Программа установки попытается загрузить все драйверы в хранилище драйверов, предоставленном в unattend.xml, а также запланировать их внедрение в установленную ОС.
Запуск установки Windows
Существует несколько способов запуска установки операционной системы из WinPE, в том числе:
- Внедрение пакетов установки в boot.wim.
- Настраиваемый WinPE можно изменить для автоматического запуска Windows Setup.exe.
- Также можно использовать для языковых пакетов и поддержки сценариев.
- Запуск setup.exe из startnet.cmd или winpeshl.ini.
- Поиск USB-накопителя или hdd
- Запуск \path\setup.exe </коммутаторы>
- Настраиваемый интерфейс для замены cmd.exe (см. ссылки на Windows RE в справочном разделе).
- Загрузка с обычного носителя установки Windows, который сначала загружается до WinPE (Boot.wim) и может принимать входные данные из подключенного USB-устройства или сетевого хранилища. Этот метод не рассматривается в этой статье.
Методы добавления драйверов в Windows
Далее, после перехода от установки к включению встроенных драйверов существует несколько методов, доступных для включения встроенных драйверов в Windows:
- Dism.exe
Dism /get-wiminfo /wimfile:<pathto>Install.wim
Dism /mount-wim /wimfile:<pathto>Install.wim /index:n /mountdir:<pathto>mount
Dism /add-driver [and conversely /remove-driver] /image:<pathto>mount /driverpath:<pathto>driverINF
Dism /unmounts-wim /commit /mountdir:<pathto>mount
- \$WinPEDriver$
- Выполнение скрипта во время автоматической установки
- unattend.xml (driverstore) в режиме WinPE и аудита (дополнительные сведения см. в разделе "Ссылки и ссылки").
- Setupcomplete.cmd можно использовать для внедрения драйверов, но рекомендуется использовать, так как это плохой интерфейс пользователя и может привести к задержкам при загрузке на рабочем столе в первый раз.
- Drvload.exe
- Только внедряет драйверы в запущенную в данный момент ОС, которая, если WinPE обычно является диском ОЗУ.
- Drvload <pathto. INF> (можно использовать скрипты в startnet.cmd (см. примеры))
Примечание.
Если используемый драйвер имеет то же имя, что и встроенный драйвер (в собственном коде, включенный в образ), эти недавно внедренные драйверы не будут использоваться операционной системой загрузки, и вы должны связаться с драйвером, созданным для обновленных драйверов. (Если вы знакомы с комплект средств для проверки совместимости с Windows (WLK), см. статью Devfund0005.
Если драйвер загружается во время передачи WinPE (начальная загрузка) нет собственного механизма, чтобы удалить этот драйвер до перезагрузки операционной системы.
Существует несколько методов для каждого шага процесса добавления драйверов в Windows. Методы предоставляют расширяемый и неизменяемый сценарий развертывания. Вы хотите определить, какой метод ниже подходит для данной ситуации.
Подробные инструкции по включению драйверов из коробки в WinPE
Необходимая настройка и средства:
- Компьютер техников — компьютер, используемый для сборки и управления установочным носителем
- Установлен OPK / AIK
- USB/UFD или DVD
Использование DISM.exe:
- Установите пакет предварительной установки OEM (OPK) или пакет автоматической установки Windows (Windows AIK)
- Нажмите кнопку "Пуск>программы>" Windows OPK (или Windows AIK) и откройте командную строку средств администрирования.
- Скопируйте boot.wim на жесткий диск (например, c:\Bin). Вы также можете создать новый WinPE с помощью Copype.cmd; однако это не будет автоматически запускаться setup.exe без дополнительных настроек.
- Используйте DISM, чтобы определить количество индексов в boot.wim. Если вы копируете boot.wim из установочного носителя, он будет иметь два индекса. Обычно мы изменим индекс #2; в противном случае индекс #1.
dism /get-wiminfo /wimfile:<wim_file>
Примечание.
Файлы, внедренные в один индекс, не будут доступны другим индексам.
- Создайте папку Mount (например, c:\Bin\mount)
- Используйте DISM для подключения wim.
DISM /mount-wim /wimfile:c:\bin\boot.wim /index:1 /mountdir:c:\bin\mount
- Поместите драйвер в неуклюжимую папку (например, c:\bin\driver).
- Используйте DISM, чтобы добавить драйвер в подключенный образ WIM.
dism /image:c:\bin\mount /Add-Driver /driverpath:<path to INF>
- Подтвердите успешность, проверив журнал DISM или убедив, что DISM возвращает завершение в командной строке.
- Отключите и зафиксируйте изменения в Boot.wim. Закройте все дескрипторы к любым открытым окнам, которые могут быть открыты ниже c:\bin\mount перед выполнением этой команды (также убедитесь, что командная строка находится в структуре каталогов c:\bin).
dism /unmount-wim /mountdir:c:\bin\mount /commit
- После успешного отключения WIM DISM мы можем настроить вещи для перехода на USB/DVD. Если во время отключения возникает ошибка, может потребоваться повторно подключить wim, чтобы убедиться, что пакеты были внедрены. Параметры
/cleanup-wim
DISM и/get-packages
могут быть полезны здесь. Ознакомьтесь с разделом "Ссылки и ссылки" в конце этого документа, чтобы получить инструкции по созданию загрузочного носителя WinPE на оптическом или USB-флэш-накопителе.
Использование \$WinpeDriver$
$WinpeDrivers$ — это дополнительная структура папок, которая Setup.exe ищет и если найдено, анализируется для извлечения дополнительных драйверов. Программа установки рекурсивно анализирует файлы и папки в этой папке \$WinpeDriver$ и ищет *. INF-файлы и попытки установить эти обнаруженные драйверы в driverstore.
Структура папок может выглядеть примерно так в корневом каталоге USB-устройства:
\$WinpeDriver$
└\WiFi
└\Wireless1
└Wireless.INF
└Wireless.SYS
└Wireless.CAT (требуется операционной системой)
Примечание.
Если посмотреть в папке \Windows\Panther\Setupact.log вы увидите ссылку на эту папку: PnPIBS: проверка предварительно настроенных путей драйвера ...
PnPIBS: проверка предварительно настроенного каталога драйверов C:$WinPEDriver$.
PnPIBS: проверка предварительно настроенного каталога драйверов D:$WinPEDriver$.
PnPIBS: проверка предварительно настроенного каталога драйверов E:$WinPEDriver$.
PnPIBS: проверка предварительно настроенного каталога драйверов X:$WinPEDriver$.
Использование файла автоматического ответа (unattend.xml/autounattend.xml)
Windows может автоматически искать автоматический файл ответа на корне подключенных дисков, если файлы называются autounattend.xml. Windows также получит файл автоматического ответа, если запущен с помощью Setup.exe с помощью коммутаторов. Этот файл ответа может предоставить сведения об установке операционной системы для таких вещей, как конфигурация диска, ключ продукта, имя компьютера и путь к хранилищу драйверов, сведения о компании OEM и многое другое. Документация по добавлению драйвера в unattend.xml можно найти в конце этого документа в разделе "Ссылки и ссылки".
Ниже приведен пример фрагмента AutoUnattend.xml с Drvstore из AIK Unattend.chm. Выходные данные XML указывают UNC-путь к дополнительным расположениям драйверов устройств и учетным данным, используемым для доступа к сетевым путям.
<DriverPaths>
<!-- First PathAndCredentials list item -->
<PathAndCredentials wcm:action="add" wcm:keyValue="1">
<Path>\\myFirstDriverPath\DriversFolder</Path>
<Credentials>
<Domain>MyDomain</Domain>
<Username>MyUsername</Username>
<Password>MyPassword</Password>
</Credentials>
</PathAndCredentials>
<!-- Second PathAndCredentials list item -->
<PathAndCredentials wcm:action="add" wcm:keyValue="2">
<Path>C:\Drivers</Path>
<Credentials>
<Domain>MyComputerName</Domain>
<Username>MyUsername</Username>
<Password>MyPassword</Password>
</Credentials>
</PathAndCredentials>
</DriverPaths>
Использование Drvload.exe
Drvload — это средство в WinPE, используемое для добавления драйверов после загрузки в встроенную командную строку WinPE. При использовании Drvload драйверы должны быть идентифицированы и размещены где-то. Startnet.cmd WinPE можно использовать для скрипта Drvload, а также любого из следующих действий при загрузке или загрузке в WinPE:
- Выполнение скриптов для:
- Определите установочный носитель, как правило, USB-устройство.
- Добавление драйверов из коробки
- Настройка жестких дисков и разделов восстановления
- Запустите setup.exe или при необходимости примените WIM.
- После развертывания или приложения разработчиков WIM validationFor, которые хотят создать собственное средство для внедрения или управления драйверами, DevCon.exe может быть полезной программой. Дополнительные сведения о DevCon.exe см. в разделе "Ссылки и ссылки".
Пример startnet.cmd
В качестве средства сценариев и автоматизации установки необходимо определить USB-устройство, так как это расположение дополнительных драйверов. В этом примере используется скрипт в WinPE, который выполняется автоматически при запуске для обнаружения USB-диска. Этот скрипт запускает другой сценарий для установки драйверов с помощью Drvload.exe на этапе установки WinPE. Скрипт находится за пределами WIM-файла, чтобы его можно было легко изменить.
Методы идентификации установочного носителя с помощью WinPE Startnet.cmd (первый файл, запущенный по умолчанию WinPE):
Сначала необходимо автоматизировать идентификацию установочного носителя в Startnet.cmd WinPE, который является первым файлом, запущенным в конфигурации WinPE по умолчанию. Это можно сделать двумя способами.
Создайте загрузочный USB-накопитель WinPE с меткой тома диска INSTALL_WIN7. Затем в начале startnet.cmd поместите следующие строки, чтобы найти метку тома диска INSTALL_WIN7:
"INSTALL_WIN7" disk volume label: :ChkVar :: Locating USB Device IF NOT DEFINED usbdrv ( ECHO list vol | diskpart | find "INSTALL_WIN7" > pt.txt FOR /F "tokens=3" %%a IN (pt.txt) DO ( SET usbdrv=%%a^: ) del pt.txt /f /q
Создайте файлы тегов на носителе в качестве альтернативного метода расположения диска для сравнения:
:SetOSvar @echo off IF NOT DEFINED usbdrv ( ECHO locating OS drive FOR %%b IN ( C D E F G H I J K L M N O ) DO ( IF EXIST %%b:\<specialfilename1> IF EXIST %%b:\ <specialfilename2> ( SET usbdrv=%%b^: ) ) )
Примечание.
Необходимо убедиться, что <specialfilename1 и specialfilename2> существуют в указанном расположении на USB-устройстве флэш-памяти.
Добавьте файлы в boot.wim, которые используются в startnet.cmd. Затем файлы будут помещены на диск X: где они могут быть доступны через X:\<file name>. При добавлении файлов в boot.wim это увеличит объем памяти WIM.
После получения известной буквы USB-диска можно запустить дополнительные сценарии для внедрения драйверов. Так как часто изменять boot.wim (при каждом подключении и фиксации изменений необходимо подключить и зафиксировать изменения), проще запускать скрипты за пределами startnet.cmd. Например, если создать скрипт с именем "InstallOS.bat" в корне USB-накопителя, можно легко изменить этот файл, чтобы внести изменения в процесс загрузки или автоматизации по мере необходимости.
Ниже приведен пример текста, необходимого в файле startnet.cmd, который будет искать "InstallOS.bat" и при обнаружении, запустите его:
IF EXIST %usbdrv%\InstallOS.bat call InstallOS.bat Echo %time% %date%
Примечание.
Как указано в его имени, InstallOS.bat может сделать гораздо больше, чем просто добавить драйверы в WinPE. Однако для этого документа дополнительные сведения о скриптах не будут обсуждаться.
На этом этапе %usbdrv% определяется буквой диска для USB-устройства флэш-памяти, поэтому драйверы, присутствующие в папке %usbdrv%\$WinpeDriver$, можно внедрить с помощью скриптов в InstallOS.bat.
Например, в InstallOS.bat добавить
Drvload.exe %usbdrv%\$winpedriver$\<device>\filename.INF
.
Используя этот метод, драйвер, доступный для операционной системы, сначала выбирается и используется WinPE.
Среда восстановления Windows (WinRE)
WinRE обычно будет статическим на жестком диске, автоматически установленным во время установки или создания или настройки изготовителями оборудования для сценариев восстановления. Если winRE используется для восстановления компьютера до заводских значений по умолчанию, то на самом деле нет метода динамического обновления драйверов до последней версии. Вам потребуется создать образ с помощью внедренных драйверов во все соответствующие файлы WIM, такие как WinRE.wim/Boot.wim, а также образ, применяемый для операционной системы. Убедитесь, что эти драйверы являются одинаковыми версиями.
Заключение
Если требуется создать среду WinPE, которая загружает драйверы из коробки перед запуском setup.exe, следуйте инструкциям, описанным в этом документе, чтобы в конечном итоге получить драйвер, который требуется в результирующей операционной системе. Написание скриптов, использующих Drvload.exe запускаемых startnet.cmd для загрузки определенных драйверов, расположенных в папке $WinPeDriver$ на USB-накопителе, является самым гибким методом. Этот метод позволяет загрузить драйвер на этапе WinPE, который переносится в установленную операционную систему. Кроме того, он позволяет поддерживать центральный репозиторий для драйверов, которые позволят гибко обновлять эти драйверы (чтобы поддерживать последние драйверы в хранилище драйверов).
Сбор данных
Если вам нужна помощь службы поддержки Microsoft, мы рекомендуем собирать информацию путем выполнения действий, описанных в разделе Сбор информации с помощью TSS для решения проблем, связанных с развертыванием.
Ссылки и ссылки
Что такое обслуживание образов развертывания и управление ими?
Параметры командной строки обслуживания образов развертывания и управления
Пошаговое руководство. Создание загрузочного диска WINDOWS PE ОЗУ на компакт-диске
Пошаговое руководство. Создание загрузочного диска WINDOWS PE ОЗУ на USB-флэш-диске
пакет автоматической установки Windows (AIK) для Win7/2008r2
Примечание.
Вам потребуется учетная запись, чтобы скачать файлы с сайта OEM.