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


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

В розничных и производственных системах ядро 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.

Примечание.

При настройке любой из баз данных Secure Boot никогда не подписывайте данные в производственном окружении с использованием тестовых ключей Microsoft.

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

  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, таким как опционные ПЗУ и загрузчики, отличные от Windows.

    EnableUefiSbTest.exe /thirdparty
    
  5. Для устройств, работающих на настольной версии Windows, подключите системный раздел EFI и скопируйте файл политики Secure Boot (.p7b) в S:/EFI/Microsoft/Boot, выполнив следующую команду в PowerShell или Терминале с повышенными привилегиями:

    mountvol s: /s
    copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    Примечание.

    Так как для ядра Windows требуется файл политики безопасной загрузки в виде SecureBootPolicy.p7b, имя и формат файла не должны быть изменены.

  6. Для устройств, не работающих под управлением настольной версии Windows, скопируйте соответствующие 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, KEK, dbи dbx значений, указывающих, что ключи были возвращены в состояние фабрики.

    Примечание.

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

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

вопрос: команда EnableUefiSbTest.exe /dump отображает только результат для PK. Что-то не так?

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

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

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