Windows Update Failed with 0x80070003

최근 Windows 10, Windows 11을 사용하는 사용자 및 장치에서 일부 월별 품질 롤업 업데이트가 일부 장치에서 0x80070003 오류코드로 실패하는 사례가 종종 확인이 되고 있습니다. 업데이트 실패가 모든 장치에서 일어날 수 있는 평범한 이벤트는 아니지만 최근 제가 확인한 사례 중 Troubleshooting 과정이 인상깊었던 케이스가 있어 소개하고자 합니다. 엔지니어는 Windows Update가 실패하는 경우 어떻게 원인을 찾고 어떤 단계들을 통해 해결하는 과정으로 나아갈 수 있을까요?

CBS.log

굉장히 오래된 이야기이지만 과거 Windows Vista에서부터 Windows를 사용하는 사용자들은 선택적 구성요소나 Windows 업데이트 또는 드라이버 파일을 설치하는 상황이 발생하면 CBS (Compoent-Based Servicing) 아키텍처를 통해서 작업과 설치가 이뤄지도록 설계되었습니다.

이런 설계구조가 존재하기 전에는 Windows 업데이트나 드라이버가 부분적으로 설치되는 경우들이 있어 시스템에 불안정을 야기할 수 있었지만 CBS 구조를 통해 구조는 다소 복잡하지만 관리가 이뤄지게 되었다 정도로 지금은 말씀드리고 싶네요.

어쨌든, 이러한 구조적 설치 과정은 기록을 남기기에도 수월합니다.
그렇기에 Windows Update가 설치될 때 이런 CBS 구조를 통해서 설치되는 과정들이 기록으로 남게 되는데 그 기록이 바로 CBS.log 입니다.

일반적으로 CBS.log C:\Windows\Logs\CBS 경로에 자리잡혀 있습니다.
해당 로그를 통해서 Windows 업데이트나 선택적 구성요소, 드라이버 파일이 설치되는 과정들을 엔지니어들은 확인하고 문제의 원인을 탐색하게 되는데요.

CBS.log 분석

실제로 해당 로그를 처음 살펴본다면 굉장히 난해 할 수 있지만 몇가지 키워드들을 통해서 핵심이 되는 구문을 찾는 작업들을 거친다면 몇가지 중요한 단서들을 얻어낼 수 있습니다. 일반적으로 HRESULT, ERROR, failed, warnning 등의 키워드들이 보통 일반적이고 지금처럼 오류코드를 아예 아는 경우라면 더욱 빠르게 단서들을 수집해 나갈 수 있습니다

보통은 이런식입니다.

2023-05-03 20:21:37, Info CBS Perf: Doqe: Install started.
2023-05-03 20:21:37, Info CBS Doqe: [Forward] Installing driver updates, Count 646
2023-05-03 20:21:37, Info CBS DriverUpdateInstallUpdates failed [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2023-05-03 20:21:37, Info CBS Doqe: Failed installing driver updates [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2023-05-03 20:21:37, Info CBS Perf: Doqe: Install ended.
2023-05-03 20:21:37, Info CBS Failed installing driver updates [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2023-05-03 20:21:37, Error CBS Startup: Failed while processing non-critical driver operations queue. [HRESULT = 0x80070003 - ERROR_PATH_NOT_FOUND]
2023-05-03 20:21:37, Info CBS Startup: Rolling back KTM, because drivers failed.

내용을 살펴보면 Windows Update 과정 중에 드라이버 (Driver) 설치 과정이 포함된 것을 알 수가 있고,
0x80070003 오류코드의 경우 일반적으로 시스템에서 특정 경로를 찾지 못하는 경우에 발생하는 오류코드라는 것을 알 수 있습니다.
(더 많은 오류코드의 정보를 확인하고 싶다면 여기! Win32 Error Codes )

실제 해당 로그의 상단을 살펴보면

Windows 업데이트 설치 과정에서 드라이버(Driver) 설치를 위해 inf 파일들을 검토하고 준비가 이뤄지는 것들도 확인할 수 있네요.
보통 이런 드라이버(Driver)들은 설치 과정에서 CBS.log 말고도 C:\Windows\INF 경로에 setupapi.dev.log에도 기록을 남기게 되는데..

따라서 흐름을 이해하고 Setupapi.dev.log 를 추가적으로 살펴보면

C:\WINDOWS\System32\DriverStore\FileRepository\netathrx.inf_amd64_220db23f5419ea8d\netathrx.inf

위의 경로에서 동일한 0x00000003 오류코드가 나타나는 것을 확인할 수 있었고 실제 업데이트가 실패하는 문제가 있던 장치나 PC에서 해당 경로 자체가 없거나 파일이 존재하지 않는 상태라는 것을 볼 수 있었습니다. 이후에는 쉽습니다. 정상적으로 업데이트 문제가 발생하지 않았던 장치에서 해당 파일을 수집해와 병합한 뒤 해결.

지금은 많은 사람들에게 관심이 없는 분야이고 흐름이 많이 꺾인 엔지니어링 분야이지만 그래도 이런 부분들이 아직 저는 재미있습니다.
앞으로 이런 이야기들도 블로깅 하려고 합니다. 관심있는 분들에게 도움이 되시길 바랍니다.

See you space cowboy ...

profile
오얏나무 한 그루

0개의 댓글