원활한 위기 방지 및 복구

펌웨어 업데이트가 실패하면 결과가 파괴될 수 있습니다. 업데이트가 실패하지만 시스템이 복원력이 있고 최종 사용자가 인식하지 않고 복구됩니다. 최악의 경우 펌웨어 업데이트 실패로 인해 사용할 수 없는 시스템이 발생할 수 있으므로 최종 사용자가 수리를 위해 해당 시스템을 소매업체 또는 제조업체에 반환해야 합니다. 후자의 경우는 우리가 위기라고 부르는 것입니다.

펌웨어 업데이트 실패 또는 Windows 또는 시스템의 다른 측면과 호환되지 않는 펌웨어로 인해 위기가 발생할 수 있습니다. 이 섹션에서는 펌웨어 업데이트 실패로 인한 위기를 방지하고 복구하도록 설계된 기능에 대해 설명합니다. 펌웨어 작성자의 펌웨어 업데이트 테스트 적용 범위는 호환되지 않는 펌웨어로 인한 대부분의 위기를 방지합니다.

최종 사용자에게 유용한 환경을 제공하려면 펌웨어 드라이버 패키지 업데이트 메커니즘에 대해 다음과 같은 위기 방지 및 복구 요구 사항을 충족해야 합니다. 이러한 요구 사항은 추가적인 위기 방지 또는 복구 솔루션을 배제하지 않습니다.

사전 설치 조건

시스템 펌웨어가 실제 업데이트를 수행하는 경우 수행해야 하는 일련의 사전 설치 검사가 있습니다. 시스템 펌웨어는 업데이트를 완료할 수 있는 충분한 전력이 있는지 확인하기 위해 이 검사 수행해야 합니다. 또한 여러 펌웨어 업데이트가 있는 경우 업데이트가 적용되기 전에 각 업데이트에 대한 검사를 수행하는 것이 좋습니다. 검사 유효성을 검사할 항목 목록은 다음 표에 나와 있습니다. 해당하는 경우 모든 검사를 수행해야 합니다. 테스트 실행에 대한 구체적인 순서는 없습니다.

유형 확인 설명
고급 시스템에는 25% 이상의 배터리 충전이 있어야 합니다.

테더링된 전원(USB 케이블 및/또는 AC 전원을 통한 전원)은 필요하지 않습니다.

테스트/실험실 환경에서는 배터리가 없는 것이 허용되지만 테더링된 전원이 제공되는 한 여전히 펌웨어 업데이트를 허용합니다. 그러나 배터리를 충전하지 않은 배터리와 배터리가 없는 경우를 구분해야 합니다.
보안 업데이트 캡슐 페이로드가 제대로 서명되었는지 확인합니다.

페이로드의 PE 기반 EFI 파일이 적절한 EFI 인증서로 제대로 서명되었는지 확인합니다.
무결성 펌웨어 업데이트 페이로드에서 무결성 검사 수행합니다.
버전 적용 중인 펌웨어가 현재 설치된 펌웨어를 LowestSupportedFirmwareVersion 값 이상으로 다운그레이드하지 않는지 확인합니다.
스토리지 다음 검사는 시스템의 하드웨어에 따라 적절하게 수행됩니다.

대체될 현재 펌웨어의 백업을 위한 충분한 공간이 있습니다.

디바이스에는 새 펌웨어를 수용할 수 있는 충분한 공간이 있습니다.

오류가 발생하면 적절한 마지막 시도 상태 오류 코드가 발생해야 합니다. 자세한 내용은 ESRT 테이블 정의펌웨어 업데이트 상태 마지막 시도 상태 오류 코드 정보를 참조하세요.

여러 업데이트가 적용되고 일부 업데이트가 사전 설치 검사를 통과하고 일부는 그렇지 않은 경우 플랫폼 펌웨어는 사전 설치 검사를 통과한 리소스에 대한 펌웨어 업데이트를 진행할 수 있습니다. 그러나 사전 설치 검사 실패한 리소스는 업데이트하면 안 됩니다.

설치 후 기준

펌웨어(디바이스 또는 시스템)가 설치되면 업데이트된 새 펌웨어 이미지가 의도한 것인지 확인해야 합니다. 이는 실제 업데이트 프로세스 중에 발생하는 손상의 위험을 최소화하기 위한 것입니다(예: 플래시 ROM의 고정 비트, 업데이트 중 버스의 노이즈 등).

업데이트 프로세스는 업데이트된 펌웨어가 무결성 검사를 통과하는지 확인해야 합니다. 실패하는 경우 마지막으로 알려진 펌웨어 버전으로 롤백하여 복구해야 합니다.

오류가 발생하면 적절한 마지막 시도 상태 오류 코드가 발생해야 합니다. 자세한 내용은 ESRT 테이블 정의펌웨어 업데이트 상태 마지막 시도 상태 오류 코드 정보를 참조하세요.

설치 및 부팅 실패에서 복구

시스템이 부팅할 수 없는 상태에 도달하지 못하도록 하려면 펌웨어 업데이트 메커니즘이 펌웨어 업데이트가 설치되지 않거나 시스템이 성공적으로 부팅되지 않는 경우 다음 요구 사항을 충족해야 합니다.

다음 섹션에서는 "커밋됨"이라는 용어를 사용하여 펌웨어를 설명합니다. 펌웨어가 "커밋"된 후에는 펌웨어가 완전히 설치된 것으로 처리되고 부팅 오류로 인해 펌웨어에서 자동으로 롤백되지 않습니다. "커밋되지 않은" 펌웨어는 부분적으로 업데이트된 펌웨어를 설명하며 펌웨어 업데이트를 완료할 수 없거나 업데이트 펌웨어에 의해 오류가 감지되는 경우 잠재적으로 이전 버전으로 롤백될 수 있습니다(예: 업데이트의 CRC 검사)가 잘못되었습니다. 펌웨어가 커밋되는지 여부는 펌웨어가 내부적으로 추적해야 하며 ESRT의 일부로 캡처되지 않습니다.

펌웨어 업데이트 실패

개별 시스템 또는 디바이스 펌웨어를 설치할 수 없거나 잘못 설치한 경우(예: 일부 종류의 손상 또는 업데이트를 설치하는 동안 전원 손실로 인해) 업데이트는 첫 번째 시도를 포함하여 총 3회까지 다시 시도될 수 있습니다. 펌웨어에서 추가 재시도를 수행하는 경우 시스템은 시도 사이에 Windows로 부팅해서는 안 됩니다. 모든 시도가 실패하면 업데이트 펌웨어가 업데이트를 삭제해야 합니다. 업데이트가 부분적으로 적용된 경우 펌웨어는 이전 버전으로 롤백해야 합니다. 펌웨어는 사용자 상호 작용 없이 이전 버전으로 롤백해야 합니다. 업데이트 실패는 보류 중인 다른 업데이트에 영향을 주지 않습니다. 보류 중인 펌웨어 업데이트를 시도해야 합니다.

모든 업데이트가 처리되면 UEFI는 Windows 부팅을 다시 시작합니다. UEFI 펌웨어는 전원 손실로 인한 문제를 완화하기 위해 커밋되지 않은 펌웨어 업데이트가 성공적으로 설치되었는지 확인해야 합니다(UEFI는 부분적으로 작성된 펌웨어로 Windows 부팅을 시도해서는 안 됨).

설치 실패의 가능한 원인은 다음과 같습니다. 하지만 다음 문제로 제한되지는 않습니다.

설치 실패 원인 오류 코드
리소스가 부족합니다. STATUS_INSUFFICIENT_RESOURCES
전원 손실 STATUS_INSUFFICIENT_POWER
하드웨어 오류 STATUS_POWER_STATE_INVALID

펌웨어 업데이트가 성공했지만 Windows가 부팅되지 않습니다.

UEFI 펌웨어는 커밋된 후 업데이트된 펌웨어를 롤백할 책임이 없습니다. Windows의 기존 장애 조치(failover) 논리는 두 번의 부팅 시도가 실패한 후 최종 사용자를 WinRE(Windows 복구 환경)로 전환합니다. WinRE가 성공적으로 부팅되거나 부팅되지 않을 수 있습니다. 최종 사용자는 시스템을 복구하기 위해 수동 복구 단계를 수행해야 하거나 디바이스를 소매업체/제조업체에 반환해야 합니다.

이 오류 클래스의 가능한 원인은 다음과 같습니다. 하지만 이에 국한되지는 않습니다.

  • OS 드라이버와 호환되지 않는 펌웨어.

  • OS 구성 요소와 호환되지 않는 펌웨어.

하드웨어 공급업체가 Windows가 성공적으로 부팅되었는지 여부를 결정하기 위해 추가 논리를 구현하기로 결정한 경우 이는 허용됩니다. 앞에서 설명한 것처럼 펌웨어 작성자의 펌웨어 업데이트 테스트 적용 범위는 호환되지 않는 펌웨어로 인한 대부분의 위기를 방지합니다.

ESRT 테이블 정의

플러그 앤 플레이 디바이스

업데이트 드라이버 패키지 작성

업데이트 처리

UEFI 환경의 디바이스 I/O

펌웨어 업데이트 상태