Тестирование драйверов предварительной загрузки с включенной безопасной загрузкой
В розничных и производственных системах ядро Windows доверяет и загружает драйверы с сигнатурой WHQL/WHCP. Чтобы протестировать драйверы предварительной версии, необходимо, чтобы разработчики драйверов могли загружать TESTSIGNING
непроизводственные драйверы. TESTSIGNING
Требует отключать безопасную загрузку, чтобы представить разницу в тестовых и рабочих средах.
Ядро Windows поддерживает загрузку драйверов предварительной версии, подписанных с подписью предварительной версии WHQL/WHCP. Подпись WHQL/WHCP доступна через Центр разработчиков оборудования Майкрософт (HDC).
Необходимые компоненты
Подписывание предварительных драйверов с помощью панели мониторинга оборудования Центра партнеров
Скачайте EnableUefiSbTest.exe из последней версии комплекта драйверов Windows (WDK) или из Центра загрузки. Расположение установки по умолчанию средства EnableUefiSbTest — C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\EnableSB.
{arch}
может быть одним из{amd64, x86, arm, arm64}
. Политики находятся в том же каталоге SecureBoot:C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\Policies.
Включение поддержки предварительной версии сигнатуры WHQL/WHCP
После предварительной подписи драйвера вы будете готовы подготовить тестовый компьютер, на котором установлен драйвер.
Средства подготовки и полезные данные предоставляются начиная с Windows 11 версии 22H2.
Рекомендуется использовать средство EnableUefiSbTest. Кроме того, вы можете вручную подготовить корневой ключ Microsoft Test из раздела "Защищенные загрузочные тесты HLK" (UefiSecureBootManualTests.zip\ManualTests\certs\test\db_MSFTtestSigningRoot.cer
). Ключ теста Майкрософт должен быть включен в базу данных безопасной загрузки (DB) и политику конфигурации безопасной загрузки (SBCP), чтобы включить доверие к предварительной сигнатуре драйвера WHQL/WHCP.
Примечание.
При подготовке любой из баз данных безопасной загрузки никогда не подписывание полезных данных с помощью ключей тестирования Майкрософт внутри.
Действия по подготовке
В меню UEFI системы отключите безопасную загрузку и снимите ключи безопасной загрузки, если это применимо. Это позволяет средству подготовки задать тестовые ключи для доверия к файлу политики безопасной загрузки и повторно включить безопасную загрузку.
Скачайте правильный P7b-файл политики безопасной загрузки в зависимости от системной архитектуры и соответствующего средства подготовки, EnableUefiSbTest.exe из WDK. Расположение средства подготовки см. в разделе "Предварительные требования".
Выполните следующую команду в экземпляре PowerShell или Терминала с повышенными привилегиями и убедитесь, что значения PK, KEK, db, dbx и OemId пусты ("Не найдено"):
EnableUefiSbTest.exe /dump
Если безопасная загрузка отключена и ключи успешно очищаются, ожидается следующее выходные данные:
EnableUefiSbTest.exe /dump Name: PK Not Found Name: KEK Not Found Name: db Not Found Name:dbx Not Found Name: OemId Not Found
Подготовьте ключи безопасной загрузки в базу данных Secure Boot и повторно включите безопасную загрузку, выполнив следующую команду в экземпляре PowerShell или терминала с повышенными привилегиями:
EnableUefiSbTest.exe
Примечание.
EnableUefiSbTest.exe не будет выводить и возвращать ничего после успешного выполнения.
При необходимости укажите
thirdparty
команду для подготовки сертификата ЦС Microsoft UEFI вместе с ключами по умолчанию в базе данных безопасной загрузки. Это позволяет доверять исполняемым файлам EFI с подписью ЦС Microsoft UEFI, таким как параметры ROMS и загрузчики, отличные от Windows.EnableUefiSbTest.exe /thirdparty
Для устройств под управлением Windows на основе настольных компьютеров подключите раздел EFI системы и скопируйте файл политики безопасной загрузки (P7b) в S:/EFI/Microsoft/Boot , выполнив следующую команду в экземпляре PowerShell или терминала с повышенными привилегиями:
mountvol s: /s copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
Примечание.
Так как для ядра Windows требуется файл политики безопасной загрузки в виде
SecureBootPolicy.p7b
, имя и формат файла не должны быть изменены.Для устройств, не работающих под управлением Настольных компьютеров, скопируйте соответствующее
PreProductionPolicy.pol
\EFI\Microsoft\Boot\Policies
значение. Затем удалитеFullDebugPolicy.pol
из\EFI\Microsoft\Boot\Policies
.Перезагрузите систему, чтобы разрешить ядру Windows обновлять политики. Безопасная загрузка теперь снова включена и подготовлена автоматически средством подготовки. Это можно проверить путем повторного запуска
EnableUefiSbTest.exe /dump
от имени администратора и проверки того, что толькоdbx
OemId
значения пусты ("Не найдено").Система готова проверить содержимое подписанного драйвера WHQL/WHCP. Перезагрузка системы не влияет на состояние устройства, пока ключи безопасной загрузки и файлы политики безопасной загрузки не изменяются.
Этапы отмены подготовки
Чтобы отменить подготовку системы и отказаться от предварительной подписи доверия к системе:
Удалите файлы политики безопасной загрузки из подключенной секции EFI, выполнив следующие команды в экземпляре PowerShell или терминале с повышенными привилегиями:
mountvol s: /s rm S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
Примечание.
Если проверки выполняются в HoloLens 2, файлы политики .pol также должны быть удалены из S:/EFI/Microsoft/Boot/Policies.
Загрузите в меню UEFI системы и перенастроите ключи безопасной загрузки на параметры фабрики.
Перезагрузите систему и выполните команду
EnableUefiSbTest.exe /dump
, которая должна возвращать значения nonempty дляPK
,KEK
db
иdbx
значения, указывающие, что ключи были возвращены в состояние фабрики.Примечание.
Рекомендуется очистить установку Windows в системе, чтобы удалить систему, предназначенную для розничных сред.
Вопросы и ответы
Вопрос. Команда EnableUefiSbTest.exe /dump
отображает только результат для PK
. Это какая-то ошибка?
Ответ. Это происходит, если средство выполняется как стандартный пользователь вместо администратора.
Вопрос. Команда EnableUefiSbTest.exe /dump
возвращает ошибку, которую я не распознаю. Что делать?
Ответ. Ошибка может быть вызвана средством, если безопасная загрузка не была успешно отключена и /или ключи безопасной загрузки не были удалены. Убедитесь, что безопасная загрузка отключена.