Поделиться через


Тестирование драйверов предварительной загрузки с включенной безопасной загрузкой

В розничных и производственных системах ядро Windows доверяет и загружает драйверы с сигнатурой WHQL/WHCP. Чтобы протестировать драйверы предварительной версии, необходимо, чтобы разработчики драйверов могли загружать TESTSIGNING непроизводственные драйверы. TESTSIGNING Требует отключать безопасную загрузку, чтобы представить разницу в тестовых и рабочих средах.

Ядро Windows поддерживает загрузку драйверов предварительной версии, подписанных с подписью предварительной версии WHQL/WHCP. Подпись WHQL/WHCP доступна через Центр разработчиков оборудования Майкрософт (HDC).

Необходимые компоненты

Включение поддержки предварительной версии сигнатуры WHQL/WHCP

После предварительной подписи драйвера вы будете готовы подготовить тестовый компьютер, на котором установлен драйвер.

Средства подготовки и полезные данные предоставляются начиная с Windows 11 версии 22H2.

Рекомендуется использовать средство EnableUefiSbTest. Кроме того, вы можете вручную подготовить корневой ключ Microsoft Test из раздела "Защищенные загрузочные тесты HLK" (UefiSecureBootManualTests.zip\ManualTests\certs\test\db_MSFTtestSigningRoot.cer). Ключ теста Майкрософт должен быть включен в базу данных безопасной загрузки (DB) и политику конфигурации безопасной загрузки (SBCP), чтобы включить доверие к предварительной сигнатуре драйвера WHQL/WHCP.

Примечание.

При подготовке любой из баз данных безопасной загрузки никогда не подписывание полезных данных с помощью ключей тестирования Майкрософт внутри.

Действия по подготовке

  1. В меню UEFI системы отключите безопасную загрузку и снимите ключи безопасной загрузки, если это применимо. Это позволяет средству подготовки задать тестовые ключи для доверия к файлу политики безопасной загрузки и повторно включить безопасную загрузку.

  2. Скачайте правильный P7b-файл политики безопасной загрузки в зависимости от системной архитектуры и соответствующего средства подготовки, EnableUefiSbTest.exe из WDK. Расположение средства подготовки см. в разделе "Предварительные требования".

  3. Выполните следующую команду в экземпляре 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
    
  4. Подготовьте ключи безопасной загрузки в базу данных Secure Boot и повторно включите безопасную загрузку, выполнив следующую команду в экземпляре PowerShell или терминала с повышенными привилегиями:

    EnableUefiSbTest.exe
    

    Примечание.

    EnableUefiSbTest.exe не будет выводить и возвращать ничего после успешного выполнения.

    При необходимости укажите thirdparty команду для подготовки сертификата ЦС Microsoft UEFI вместе с ключами по умолчанию в базе данных безопасной загрузки. Это позволяет доверять исполняемым файлам EFI с подписью ЦС Microsoft UEFI, таким как параметры ROMS и загрузчики, отличные от Windows.

    EnableUefiSbTest.exe /thirdparty
    
  5. Для устройств под управлением 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, имя и формат файла не должны быть изменены.

  6. Для устройств, не работающих под управлением Настольных компьютеров, скопируйте соответствующее PreProductionPolicy.pol \EFI\Microsoft\Boot\Policiesзначение. Затем удалите FullDebugPolicy.pol из \EFI\Microsoft\Boot\Policies.

  7. Перезагрузите систему, чтобы разрешить ядру Windows обновлять политики. Безопасная загрузка теперь снова включена и подготовлена автоматически средством подготовки. Это можно проверить путем повторного запуска EnableUefiSbTest.exe /dump от имени администратора и проверки того, что только dbx OemId значения пусты ("Не найдено").

  8. Система готова проверить содержимое подписанного драйвера WHQL/WHCP. Перезагрузка системы не влияет на состояние устройства, пока ключи безопасной загрузки и файлы политики безопасной загрузки не изменяются.

Этапы отмены подготовки

Чтобы отменить подготовку системы и отказаться от предварительной подписи доверия к системе:

  1. Удалите файлы политики безопасной загрузки из подключенной секции EFI, выполнив следующие команды в экземпляре PowerShell или терминале с повышенными привилегиями:

    mountvol s: /s
    rm  S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    Примечание.

    Если проверки выполняются в HoloLens 2, файлы политики .pol также должны быть удалены из S:/EFI/Microsoft/Boot/Policies.

  2. Загрузите в меню UEFI системы и перенастроите ключи безопасной загрузки на параметры фабрики.

  3. Перезагрузите систему и выполните командуEnableUefiSbTest.exe /dump, которая должна возвращать значения nonempty для PK, KEKdbи dbx значения, указывающие, что ключи были возвращены в состояние фабрики.

    Примечание.

    Рекомендуется очистить установку Windows в системе, чтобы удалить систему, предназначенную для розничных сред.

Вопросы и ответы

Вопрос. Команда EnableUefiSbTest.exe /dump отображает только результат для PK. Это какая-то ошибка?

Ответ. Это происходит, если средство выполняется как стандартный пользователь вместо администратора.

Вопрос. Команда EnableUefiSbTest.exe /dump возвращает ошибку, которую я не распознаю. Что делать?

Ответ. Ошибка может быть вызвана средством, если безопасная загрузка не была успешно отключена и /или ключи безопасной загрузки не были удалены. Убедитесь, что безопасная загрузка отключена.