Windows UEFI 펌웨어 업데이트 플랫폼 기능 유효성 검사
이 문서에서는 Windows UEFI 펌웨어 업데이트 플랫폼 기능에서 로그 오프 하기 전에 통과 해야 하는 기본적인 유효성 검사 시나리오를 나열 합니다.
필수 조건
- 각 ESRT (EFI 시스템 리소스 테이블) 항목에 대해 최신 펌웨어 버전에 대 한 캡슐가 필요 합니다. 시나리오는 X로 최신 버전을 참조 합니다. 각 ESRT 항목은 고유한 GUID를 사용 하 여 식별 됩니다.
- 노출 된 각 ESRT 항목에 대해 1 단계에서 만든 패키지 위에 해당 버전이 증가 하는 캡슐 패키지를 만듭니다. 이러한 캡슐을 X + 1 이라고 합니다.
- 페이로드가 서명 되지 않았거나 잘못 된 PK로 서명 되지 않은 경우와 같은 오류 상태를 시뮬레이션 하는 데 도움이 되는 캡슐입니다.
- 사용할 모든 캡슐은 OS 큐브 뷰, 서명 된 카탈로그 및 PK 서명 된에서 적절 하 게 서명 해야 합니다. 특별 한 경우를 제외 하 고는 음수 PK 서명 사례를 테스트 합니다. “” 캡슐 또는 펌웨어 드라이버 패키지에 서명 하는 방법에 대 한 자세한 내용은 사양에서 펌웨어 드라이버 패키지 서명을 참조 하세요.
방법
새 캡슐 설치 또는 이전에 설치 된 캡슐 다시 설치
- 장치 관리자를 엽니다.
- 펌웨어를 나타내는 장치 노드를 찾습니다. 일반적으로 펌웨어 장치 아래에 “” 있습니다.
- 업데이트 하려는 펌웨어 장치를 마우스 오른쪽 단추로 클릭 합니다.
- 드라이버 소프트웨어 업데이트를 선택 합니다. “업데이트 드라이버 소프트웨어-펌웨어를 표시 하는 팝업이 표시 됩니다 <>” .
- 컴퓨터에서 드라이버 소프트웨어 찾아보기를선택 합니다.
- 다음 창에서 내 컴퓨터의 장치 드라이버 목록에서선택 합니다 .를 선택 합니다.
- 이전에 드라이버를 설치한 경우 호환 되는 하드웨어 표시 상자에서 드라이버를 선택 합니다. 존재 하지 않는 경우 디스크 있음 을 선택 하 고 계속 진행 합니다. 그렇지 않은 경우 확인 을 선택 하 고 시스템을 다시 부팅 합니다.
- 디스크 있음을 선택 하는 경우 디스크에서 설치라는 팝업이 표시 됩니다.
- 찾아보기 를 사용 하 여 설치 하려는 펌웨어의 캡슐를 포함 하는 디렉터리로 이동 합니다.
- 해당 디렉터리에서 INF 파일을 선택 하 고 확인 을 눌러 설치 합니다.
- 설치 하는 동안 드라이버가 서명 되지 않았다는 팝업이 표시 되는 경우 계속 진행 하 여이 드라이버를 수락 합니다.
- 시스템을 다시 부팅 하 라는 메시지가 표시 됩니다.
- 펌웨어에 대 한 캡슐를 설치한 후에는를 다시 부팅 해야 합니다. 여러 캡슐 패키지를 설치 하려는 경우 모든 캡슐가 설치 될 때까지 다시 부팅 한 후 최종 캡슐에서 다시 부팅 합니다.
버전 및 상태 정보 쿼리
- PS (QueryVersionAndStatus.ps1 PowerShell) 스크립트 를 실행 하 여 현재 펌웨어 버전, 마지막 펌웨어 버전 시도 상태 및 마지막 시도 상태를 쿼리 합니다.
스크립트를 실행하려면
- 관리자 권한으로 PowerShell을 실행합니다.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force(이 작업은 한 번만 수행 하면 됩니다.)- 지정 된 GUID의 버전 및 상태 세부 정보를 표시 합니다. 예:
.\QueryVersionAndStatus.ps1 6bd2efb9-23ab-4b4c-bc37-016517413e9a - 펌웨어 업데이트가 성공 했는지 확인 합니다. “” 사양 문서에서 펌웨어 업데이트 상태를 확인 하는 섹션을 참조 하세요. 마지막 시도 상태와 현재 버전이 필요한 버전과 일치 하는지 확인 합니다.
- 권장: 업데이트 중인 장치가 여전히 작동 하는지 확인 합니다.
- 롤백 정책 설정: 일부 시나리오에서는 펌웨어를 롤백해야 할 수 있습니다. 롤백은 프로덕션 시나리오가 아닙니다. 롤백할 수 있도록 레지스트리 정책 키를 만들어야 합니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareResources\ {GUID} 노드의 이름 정책을 사용 하 여 REG_DWORD 키를 만들고 “”<> 정책 키의 값을 1로 설정 합니다. GUID는 ESRT의 실제 GUID로 바꾸어야 합니다.
시나리오
S1: 각 ESRT 항목을 캡슐에서 업데이트할 수 있습니다.
플랫폼에서 지 원하는 각 ESRT 항목에 대해 다음 단계를 완료 해야 합니다. 또는 UpdateCapsule를 통해 펌웨어 업데이트를 지 원하는 시스템 펌웨어와 각 장치 펌웨어에서 사용할 수 있습니다.
S1 단계
- 각 ESRT 항목에 대해 펌웨어 버전 X에 대 한 캡슐을 설치 합니다.
- 다시 부팅 하기 전에 위의 모든 캡슐이 설치 되어 있는지 확인 합니다.
S1 예상 결과
업데이트 된 각 ESRT 항목에 대해 펌웨어 업데이트가 성공 해야 합니다. 업데이트를 시도한 모든 ESRT 항목의 유효성을 검사 합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X
- 마지막 시도 상태 = 0 (STATUS_SUCCESS)
S2: 최신 펌웨어 버전 X는 X + 1에도 업데이트할 수 있습니다.
플랫폼에서 지 원하는 각 ESRT 항목에 대해 다음 단계를 완료 해야 합니다. 또는 UpdateCapsule를 통해 펌웨어 업데이트를 지 원하는 시스템 펌웨어와 각 장치 펌웨어에서 사용할 수 있습니다.
S2 단계
- 위의 시나리오 S1을 완료 합니다.
- 각 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 단계
- 25% 미만으로 배터리 충전을 드레이닝 한 후 AC 전원을 꽂으십시오.
- UEFI 시스템 펌웨어 버전 X + 1에 대 한 캡슐을 설치 합니다. ’현재 버전이 X 인 것으로 가정 합니다.
- 다시 부팅 하기 전에 배터리 요금이 25% 미만인 지 확인 합니다.
S 3.1 예상 결과
펌웨어 업데이트가 실패 합니다. 시스템 펌웨어에 해당 하는 ESRT 항목의 경우 다음을 확인 합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X + 1
- 마지막 시도 상태 = 0xc00002de (STATUS_INSUFFICIENT_POWER)
S 3.2 배터리 및 장치 펌웨어 업데이트 부족
S 3.2 단계
- 25% 미만으로 배터리 충전을 드레이닝 한 후 AC 전원을 꽂으십시오.
- 펌웨어 버전이 X + 1 인 시스템에서 지원 되는 모든 장치에 대 한 캡슐을 설치 합니다. ’지정 된 장치에 대 한 현재 펌웨어 버전이 X 인 것으로 가정 합니다.
- 다시 부팅 하기 전에 배터리 요금이 25% 미만인 지 확인 합니다.
S 3.2 예상 결과
펌웨어 업데이트가 실패 합니다. 업데이트를 시도한 모든 ESRT 항목의 유효성을 검사 합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X + 1
- 마지막 시도 상태 = 0xc00002de (STATUS_INSUFFICIENT_POWER)
S 3.3 배터리 부족, UEFI 시스템 및 장치 펌웨어 업데이트가 동시에
S3.3 단계
- 배터리 충전을 25% 미만으로 소모한 다음 AC 전원을 플러그 인합니다.
- 버전이 X+1인 UEFI 시스템 펌웨어 및 모든 디바이스 펌웨어용 펌웨어를 설치합니다.
- 다시 부팅하기 전에 배터리 충전이 25% 미만인지 확인합니다.
S3.3 예상 결과
시스템 펌웨어 및 업데이트가 시도된 모든 디바이스 펌웨어에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X+1
- 마지막 시도 상태 = 0xc00002de(STATUS_INSUFFICIENT_POWER)
S3.4 펌웨어 업데이트는 캡슐이 PK 서명되지 않은 경우 실패해야 합니다.
플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우
S3.4 단계
- 각 ESRT 항목에 대해 서명되지 않은 페이로드인 x+2를 만듭니다.
- X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.
S3.4 예상 결과
업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X+2
- 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)
잘못된 PK 인증서로 서명하면 S3.5 펌웨어 업데이트가 실패합니다.
플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우
S3.5 단계
- 각 ESRT 항목에 대해 x+2를 만들고, 잘못된 키 또는 인증서로 페이로드에 서명합니다(예: 프로덕션 디바이스에서 디버그 서명된 캡슐 사용).
- X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.
S3.5 예상 결과
업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X+2
- 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED)
S3.6 펌웨어 업데이트는 펌웨어 페이로드가 변조될 때 실패해야 합니다.
플랫폼에서 지원하는 각 ESRT 항목에 대해 다음 단계를 완료해야 합니다. 즉, 시스템 펌웨어 및 UpdateCapsule을 통해 펌웨어 업데이트를 지원하는 각 디바이스 펌웨어의 경우
S3.6 단계
- 각 ESRT 항목에 대해 x+2를 만들고, 올바른 키 또는 인증서로 페이로드에 서명합니다. 그런 다음, 펌웨어 bin 파일을 열고 파일에서 1비트 이상을 대칭 전환하고 파일을 다시 저장합니다.
- bin 파일 및 INF 파일에 대한 카탈로그를 다시 생성합니다.
- X+2를 설치합니다. ’현재 버전이 X라고 가정해 보겠습니다.
S3.6 예상 결과
업데이트를 시도한 모든 ESRT 항목에 대해 펌웨어 업데이트가 실패해야 합니다. 업데이트가 시도된 모든 ESRT 항목에 대해 다음의 유효성을 검사합니다.
- 현재 펌웨어 버전 = X
- 마지막 시도 버전 = X+2
- 마지막 시도 상태 = 0xC0000022(STATUS_ACCESS_DENIED) 또는 0xC000007B(STATUS_INVALID_IMAGE_FORMAT)
S3.7: 펌웨어는 LowestSupportedFirmwareVersion을 초과하는 롤백을 허용하지 않습니다.
다른 디바이스 펌웨어(낮은 우선 순위)에도 다음 단계를 수행해야 합니다.
S3.7 단계
- UEFI 시스템 펌웨어의 경우 “ 시스템 펌웨어에 대한 ESRT 항목의 LowestSupportedFirmwareVersion이 ” X+1로 설정되는 X+1을 만듭니다.
- x+1을 설치하고 업데이트가 성공했는지 확인합니다.
- INF의 버전이 X+2이지만 실제 펌웨어 이진 파일은 X 버전이 같게 UEFI 시스템 펌웨어 업데이트 웨어를 만듭니다.
- x+2를 설치하고 시스템을 다시 부팅합니다.
S3.7 예상 결과
펌웨어 업데이트가 실패합니다. 시스템 펌웨어에 해당하는 ESRT 항목의 경우 다음의 유효성을 검사합니다.
- 현재 펌웨어 버전 = X+1
- 마지막 시도 버전 = X+2
- 마지막 시도 상태 = 0xC0000059(STATUS_REVISION_MISMATCH)
S4: 원활한 복구 및 펌웨어 업데이트(구현된 경우)
이 시나리오는 원활한 복구 구현에 따라 플랫폼마다 다릅니다. 구현에 따라 유효성 검사를 수행하려면 시스템이 복구를 강제로 수행하거나 업데이트 중간에 또는 복구 흐름을 실행하기 위한 다른 수단을 통해 전원 연결을 끊을 수 있는 잘못된 캡슐을 만들어야 할 수 있습니다.
S4 예상 결과
시스템이 OS로 부팅되고 펌웨어 업데이트가 실패로 표시되어야 합니다. UEFI 펌웨어 리소스 디바이스에서 보고하는 버전은 변경되지 않아야 합니다.
S5: 펌웨어 업데이트는 UX(사용자 환경) 요구 사항을 준수합니다.
S5 단계
- 이 시나리오는 성공적인 펌웨어 업데이트로 이어지는 위의 시나리오를 실행하는 동안 유효성을 검사할 수 있습니다.
S5 예상 결과
사용자 환경은 사양에 따라 다릅니다. 사용자 환경 의 섹션을 “” 참조하세요.
- 화면에 표시되는 유일한 텍스트는 시스템 “ 업데이트를 설치하는 동안 ” 기다려주세요.입니다. 텍스트는 사양에서 호출된 대로 화면의 오른쪽 규격에 표시됩니다.
- OEM 로고는 사양에 설명된 대로 표시됩니다.