Windows UEFI 펌웨어 업데이트 플랫폼 기능 유효성 검사

이 문서에서는 Windows UEFI 펌웨어 업데이트 플랫폼 기능에서 로그 오프 하기 전에 통과 해야 하는 기본적인 유효성 검사 시나리오를 나열 합니다.

필수 조건

  • 각 ESRT (EFI 시스템 리소스 테이블) 항목에 대해 최신 펌웨어 버전에 대 한 캡슐가 필요 합니다. 시나리오는 X로 최신 버전을 참조 합니다. 각 ESRT 항목은 고유한 GUID를 사용 하 여 식별 됩니다.
  • 노출 된 각 ESRT 항목에 대해 1 단계에서 만든 패키지 위에 해당 버전이 증가 하는 캡슐 패키지를 만듭니다. 이러한 캡슐을 X + 1 이라고 합니다.
  • 페이로드가 서명 되지 않았거나 잘못 된 PK로 서명 되지 않은 경우와 같은 오류 상태를 시뮬레이션 하는 데 도움이 되는 캡슐입니다.
  • 사용할 모든 캡슐은 OS 큐브 뷰, 서명 된 카탈로그 및 PK 서명 된에서 적절 하 게 서명 해야 합니다. 특별 한 경우를 제외 하 고는 음수 PK 서명 사례를 테스트 합니다. “” 캡슐 또는 펌웨어 드라이버 패키지에 서명 하는 방법에 대 한 자세한 내용은 사양에서 펌웨어 드라이버 패키지 서명을 참조 하세요.

방법

새 캡슐 설치 또는 이전에 설치 된 캡슐 다시 설치

  1. 장치 관리자를 엽니다.
  2. 펌웨어를 나타내는 장치 노드를 찾습니다. 일반적으로 펌웨어 장치 아래에 “” 있습니다.
  3. 업데이트 하려는 펌웨어 장치를 마우스 오른쪽 단추로 클릭 합니다.
  4. 드라이버 소프트웨어 업데이트를 선택 합니다. “업데이트 드라이버 소프트웨어-펌웨어를 표시 하는 팝업이 표시 됩니다 <>” .
  5. 컴퓨터에서 드라이버 소프트웨어 찾아보기를선택 합니다.
  6. 다음 창에서 내 컴퓨터의 장치 드라이버 목록에서선택 합니다 .를 선택 합니다.
  7. 이전에 드라이버를 설치한 경우 호환 되는 하드웨어 표시 상자에서 드라이버를 선택 합니다. 존재 하지 않는 경우 디스크 있음 을 선택 하 고 계속 진행 합니다. 그렇지 않은 경우 확인 을 선택 하 고 시스템을 다시 부팅 합니다.
  8. 디스크 있음을 선택 하는 경우 디스크에서 설치라는 팝업이 표시 됩니다.
  9. 찾아보기 를 사용 하 여 설치 하려는 펌웨어의 캡슐를 포함 하는 디렉터리로 이동 합니다.
  10. 해당 디렉터리에서 INF 파일을 선택 하 고 확인 을 눌러 설치 합니다.
  11. 설치 하는 동안 드라이버가 서명 되지 않았다는 팝업이 표시 되는 경우 계속 진행 하 여이 드라이버를 수락 합니다.
  12. 시스템을 다시 부팅 하 라는 메시지가 표시 됩니다.
  13. 펌웨어에 대 한 캡슐를 설치한 후에는를 다시 부팅 해야 합니다. 여러 캡슐 패키지를 설치 하려는 경우 모든 캡슐가 설치 될 때까지 다시 부팅 한 후 최종 캡슐에서 다시 부팅 합니다.

버전 및 상태 정보 쿼리

스크립트를 실행하려면

  1. 관리자 권한으로 PowerShell을 실행합니다.
  2. Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force (이 작업은 한 번만 수행 하면 됩니다.)
  3. 지정 된 GUID의 버전 및 상태 세부 정보를 표시 합니다. 예: .\QueryVersionAndStatus.ps1 6bd2efb9-23ab-4b4c-bc37-016517413e9a
  4. 펌웨어 업데이트가 성공 했는지 확인 합니다. “” 사양 문서에서 펌웨어 업데이트 상태를 확인 하는 섹션을 참조 하세요. 마지막 시도 상태와 현재 버전이 필요한 버전과 일치 하는지 확인 합니다.
  5. 권장: 업데이트 중인 장치가 여전히 작동 하는지 확인 합니다.
  6. 롤백 정책 설정: 일부 시나리오에서는 펌웨어를 롤백해야 할 수 있습니다. 롤백은 프로덕션 시나리오가 아닙니다. 롤백할 수 있도록 레지스트리 정책 키를 만들어야 합니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\ {GUID} 노드의 이름 정책을 사용 하 여 REG_DWORD 키를 만들고 “”<> 정책 키의 값을 1로 설정 합니다. GUID는 ESRT의 실제 GUID로 바꾸어야 합니다.

시나리오

S1: 각 ESRT 항목을 캡슐에서 업데이트할 수 있습니다.

플랫폼에서 지 원하는 각 ESRT 항목에 대해 다음 단계를 완료 해야 합니다. 또는 UpdateCapsule를 통해 펌웨어 업데이트를 지 원하는 시스템 펌웨어와 각 장치 펌웨어에서 사용할 수 있습니다.

S1 단계

  1. 각 ESRT 항목에 대해 펌웨어 버전 X에 대 한 캡슐을 설치 합니다.
  2. 다시 부팅 하기 전에 위의 모든 캡슐이 설치 되어 있는지 확인 합니다.

S1 예상 결과

업데이트 된 각 ESRT 항목에 대해 펌웨어 업데이트가 성공 해야 합니다. 업데이트를 시도한 모든 ESRT 항목의 유효성을 검사 합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X
  • 마지막 시도 상태 = 0 (STATUS_SUCCESS)

S2: 최신 펌웨어 버전 X는 X + 1에도 업데이트할 수 있습니다.

플랫폼에서 지 원하는 각 ESRT 항목에 대해 다음 단계를 완료 해야 합니다. 또는 UpdateCapsule를 통해 펌웨어 업데이트를 지 원하는 시스템 펌웨어와 각 장치 펌웨어에서 사용할 수 있습니다.

S2 단계

  1. 위의 시나리오 S1을 완료 합니다.
  2. 각 ESRT 항목에 대해 펌웨어 버전 X + 1에 대 한 캡슐을 설치 합니다.

S2 예상 결과

업데이트 된 각 ESRT 항목에 대해 펌웨어 업데이트가 성공 해야 합니다. 업데이트를 시도한 모든 ESRT 항목의 유효성을 검사 합니다.

  • 현재 펌웨어 버전 = X + 1
  • 마지막 시도 버전 = X + 1
  • 마지막 시도 상태 = 0 (STATUS_SUCCESS)

S3: 오류가 발생 하면 펌웨어 업데이트는 사양에 정의 된 대로 올바른 상태 코드를 반환 합니다.

상태 코드는 이름이 “”“ Trt Last 시도한 status 필드 값을 포함 하는 표의 UEFI 시스템 리소스 테이블 정의 섹션에 정의 되어 있습니다 ” .

S 3.1 배터리 및 UEFI 시스템 펌웨어 업데이트 부족

S 3.1 단계

  1. 25% 미만으로 배터리 충전을 드레이닝 한 후 AC 전원을 꽂으십시오.
  2. UEFI 시스템 펌웨어 버전 X + 1에 대 한 캡슐을 설치 합니다. ’현재 버전이 X 인 것으로 가정 합니다.
  3. 다시 부팅 하기 전에 배터리 요금이 25% 미만인 지 확인 합니다.

S 3.1 예상 결과

펌웨어 업데이트가 실패 합니다. 시스템 펌웨어에 해당 하는 ESRT 항목의 경우 다음을 확인 합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X + 1
  • 마지막 시도 상태 = 0xc00002de (STATUS_INSUFFICIENT_POWER)

S 3.2 배터리 및 장치 펌웨어 업데이트 부족

S 3.2 단계

  1. 25% 미만으로 배터리 충전을 드레이닝 한 후 AC 전원을 꽂으십시오.
  2. 펌웨어 버전이 X + 1 인 시스템에서 지원 되는 모든 장치에 대 한 캡슐을 설치 합니다. ’지정 된 장치에 대 한 현재 펌웨어 버전이 X 인 것으로 가정 합니다.
  3. 다시 부팅 하기 전에 배터리 요금이 25% 미만인 지 확인 합니다.

S 3.2 예상 결과

펌웨어 업데이트가 실패 합니다. 업데이트를 시도한 모든 ESRT 항목의 유효성을 검사 합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X + 1
  • 마지막 시도 상태 = 0xc00002de (STATUS_INSUFFICIENT_POWER)

S 3.3 배터리 부족, UEFI 시스템 및 장치 펌웨어 업데이트가 동시에

S3.3 단계

  1. 배터리 충전을 25% 미만으로 소모한 다음 AC 전원을 플러그 인합니다.
  2. 버전이 X+1인 UEFI 시스템 펌웨어 및 모든 디바이스 펌웨어용 펌웨어를 설치합니다.
  3. 다시 부팅하기 전에 배터리 충전이 25% 미만인지 확인합니다.

S3.3 예상 결과

시스템 펌웨어 및 업데이트가 시도된 모든 디바이스 펌웨어에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+1
  • 마지막 시도 상태 = 0xc00002de(STATUS_INSUFFICIENT_POWER)

S3.4 펌웨어 업데이트는 캡슐이 PK 서명되지 않은 경우 실패해야 합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우

S3.4 단계

  1. 각 ESRT 항목에 대해 서명되지 않은 페이로드인 x+2를 만듭니다.
  2. X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.

S3.4 예상 결과

업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)

잘못된 PK 인증서로 서명하면 S3.5 펌웨어 업데이트가 실패합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우

S3.5 단계

  1. 각 ESRT 항목에 대해 x+2를 만들고, 잘못된 키 또는 인증서로 페이로드에 서명합니다(예: 프로덕션 디바이스에서 디버그 서명된 캡슐 사용).
  2. X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.

S3.5 예상 결과

업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)

S3.6 펌웨어 업데이트는 펌웨어 페이로드가 변조될 때 실패해야 합니다.

플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우

S3.6 단계

  1. 각 ESRT 항목에 대해 x+2를 만들고, 올바른 키 또는 인증서로 페이로드에 서명합니다. 그런 다음, 펌웨어 bin 파일을 열고 파일에서 1비트 이상을 대칭 전환하고 파일을 다시 저장합니다.
  2. bin 파일 및 INF 파일에 대한 카탈로그를 다시 생성합니다.
  3. X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.

S3.6 예상 결과

업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.

  • 현재 펌웨어 버전 = X
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED) 또는 0xC000007B(STATUS_INVALID_IMAGE_FORMAT)

S3.7: 펌웨어는 LowestSupportedFirmwareVersion을 초과하는 롤백을 허용하지 않습니다.

다른 디바이스 펌웨어(낮은 우선 순위)에도 다음 단계를 수행해야 합니다.

S3.7 단계

  1. UEFI 시스템 펌웨어의 경우 “ 시스템 펌웨어에 대한 ESRT 항목의 LowestSupportedFirmwareVersion이 ” X+1로 설정되는 X+1을 만듭니다.
  2. x+1을 설치하고 업데이트가 성공했는지 확인합니다.
  3. INF의 버전이 X+2이지만 실제 펌웨어 이진 파일은 X 버전이 같게 UEFI 시스템 펌웨어 업데이트 웨어를 만듭니다.
  4. x+2를 설치하고 시스템을 다시 부팅합니다.

S3.7 예상 결과

펌웨어 업데이트가 실패합니다. 시스템 펌웨어에 해당하는 ESRT 항목의 경우 다음의 유효성을 검사합니다.

  • 현재 펌웨어 버전 = X+1
  • 마지막 시도 버전 = X+2
  • 마지막 시도 상태 = 0xC0000059(STATUS_REVISION_MISMATCH)

S4: 원활한 복구 및 펌웨어 업데이트(구현된 경우)

이 시나리오는 원활한 복구 구현에 따라 플랫폼마다 다릅니다. 구현에 따라 유효성 검사를 수행하려면 시스템이 복구를 강제로 수행하거나 업데이트 중간에 또는 복구 흐름을 실행하기 위한 다른 수단을 통해 전원 연결을 끊을 수 있는 잘못된 캡슐을 만들어야 할 수 있습니다.

S4 예상 결과

시스템이 OS로 부팅되고 펌웨어 업데이트가 실패로 표시되어야 합니다. UEFI 펌웨어 리소스 디바이스에서 보고하는 버전은 변경되지 않아야 합니다.

S5: 펌웨어 업데이트는 UX(사용자 환경) 요구 사항을 준수합니다.

S5 단계

  • 이 시나리오는 성공적인 펌웨어 업데이트로 이어지는 위의 시나리오를 실행하는 동안 유효성을 검사할 수 있습니다.

S5 예상 결과

사용자 환경은 사양에 따라 다릅니다. 사용자 환경 의 섹션을 “” 참조하세요.

  • 화면에 표시되는 유일한 텍스트는 시스템 “ 업데이트를 설치하는 동안 ” 기다려주세요.입니다. 텍스트는 사양에서 호출된 대로 화면의 오른쪽 규격에 표시됩니다.
  • OEM 로고는 사양에 설명된 대로 표시됩니다.

Windows UEFI 펌웨어 업데이트 플랫폼

UEFI 유효성 검사 옵션 ROM 유효성 검사 지침

PS(QueryVersionAndStatus.ps1 PowerShell) 스크립트