“WSL2 설치요? 5분이면 되죠”라고 말한 과거의 나에게 전하는 글.
TL;DR
Windows 11 25H2(빌드 26200)에서 VirtualMachinePlatform 활성화가 37.8%에서 영원히 멈춘다. 일주일간 10가지 방법을 시도한 끝에 찾은 원인: 서비싱 스택(24H2)과 OS(25H2)의 버전 불일치. Windows가 자기 자신을 서비싱 못 하는 코미디.
# 일주일을 두 줄로 요약하면 이겁니다
Add-WindowsCapability -Online -Name "Microsoft.Windows.HyperV.VirtualMachinePlatform~~~~0.0.1.0"
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /LimitAccess
읽기 귀찮으면 위에 두 줄만 치세요. 근데 왜 이 두 줄에 도달하는 데 일주일이 걸렸는지 알고 싶으면 계속 읽으시길.
발단
WSL2에 Ubuntu 24.04를 올리려고 했다. 누구나 하는 거다. 공식 문서에도 “한 줄이면 됩니다”라고 써있다.
wsl --install -d Ubuntu-24.04
37.8%.
멈췄다.
커피를 마시고 왔다. 37.8%.
점심을 먹고 왔다. 37.8%.
37.8이라는 숫자가 꿈에 나올 뻔했다.
범인의 프로필
| 항목 | 값 |
|---|---|
| OS | Windows 11 Pro 25H2 (빌드 26200.8037) |
| CPU | Intel Core Ultra 9 275HX |
| PC | HP 노트북 |
| DISM 버전 | 10.0.26100.5074 |
| 서비싱 스택 | 10.0.26100.8035 |
이 표를 보고 “어 버전이 다른데?”라고 눈치챈 분은 이미 이 글의 결말을 알고 계신 겁니다. OS는 26200인데 서비싱 스택은 26100. Windows가 자기 버전도 못 맞추고 있었다.
안 되는 것들의 대향연
1일차: GUI로 시도
“Windows 기능 켜기/끄기”에서 가상 머신 플랫폼을 체크했다. 프로그레스 바가 멈췄다.
취소를 눌렀다. 취소도 멈췄다.
취소를 취소할 수 없는 시스템. 이게 세계 시가총액 1위 기업의 운영체제다.
작업 관리자로 강제 종료.
2일차: 명령어의 세계로
GUI가 안 되면 CLI지. 프로그래머의 본능.
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
37.8%. 또 너.
PowerShell로도 해봤다.
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
같은 결과. 내부적으로 같은 DISM을 부르니까. 옷만 갈아입혀봤자 같은 사람인 것처럼.
3일차: 범인을 BlueStacks로 지목
인터넷을 뒤졌다. “안드로이드 에뮬레이터가 Hyper-V랑 충돌한다”는 글을 발견. BlueStacks 10이 설치되어 있었다.
“이놈이었구나!” 하고 완전 삭제. 폴더까지 수동으로 지움. 레지스트리까지 뒤짐.
결과: 37.8%.
BlueStacks: “저 아닌데요”
괜히 지웠다. 나중에 다시 깔아야 한다.
4일차: 오프라인 설치 시도
“인터넷 다운로드가 문제라면 오프라인으로 하면 되지!” 24H2 ISO를 받아서 마운트했다.
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /LimitAccess /Source:D:\Sources\Install.wim
0x800f0912.
ISO가 24H2(26100)인데 OS가 25H2(26200). 버전이 안 맞으니 소스로도 안 받아준다. “넌 내가 아니야”라며 거부하는 Windows.
5일차: Windows Update 캐시 대청소
net stop wuauserv
net stop bits
Remove-Item C:\Windows\SoftwareDistribution\Download\* -Recurse -Force
net start bits
net start wuauserv
깔끔해진 캐시. 변함없는 37.8%. 청소한다고 집값이 오르는 건 아니듯.
보류 작업도 정리해봤다.
dism /online /cleanup-image /revertpendingactions
보류는 정리됐는데 활성화는 여전히 실패. 밀린 숙제를 치웠는데 시험은 또 다른 문제인 것처럼.
6일차: 인플레이스 설치 (핵옵션)
“그냥 Windows를 덮어씌우자.” 24H2 ISO의 setup.exe를 실행. “개인 파일 및 앱 유지” 선택.
40분 걸렸다. 재부팅 3번.
결과: OS가 25H2(26200)로 유지됨. 다운그레이드 안 됨. 인플레이스 설치가 만능은 아니었다.
그래도 이전 시도들로 쌓인 보류 작업과 컴포넌트 스토어는 정리됐다. 이게 나중에 결정적 복선이 된다.
7일차: 로그를 읽다 (드디어 머리를 쓰다)
일주일간 “될 때까지 다른 거 시도”만 반복했다. 이쯤 되면 뭐가 안 되는지가 아니라 왜 안 되는지를 봐야 한다.
CBS 로그를 열었다.
Select-String -Path C:\Windows\Logs\CBS\CBS.log `
-Pattern "Error|Failed|0x800f" -Context 2 | Select-Object -Last 20
범인이 드러났다:
Failed to get uup features from WU, sessionData: {
"ModuleID":"FOD",
"Features":[{
"name":"Windows.HyperV.OptionalFeature.VirtualMachinePlatform.Client.Disabled~"
}]
} [HRESULT = 0x800f0820 - CBS_E_CANCEL]
download source: 8, download time (secs): 1256,
download status: 0x800f0820 (CBS_E_CANCEL)
1256초(약 21분) 동안 Windows Update에서 FOD를 다운로드하려다 타임아웃.
DISM 로그에서 결정적 증거:
Dism.exe version: 10.0.26100.5074
Target image: OS Version=10.0.26200.8037
서비싱 스택은 26100인데 OS는 26200. 서비싱 도구가 자기보다 높은 버전의 OS를 수리하려고 하니, Windows Update에서 맞는 부품을 못 찾는 것이다.
자동차 정비소에 2024년식 차를 가져갔는데 정비사가 2023년 매뉴얼밖에 없는 상황. “이 부품은 저희 카탈로그에 없는데요?”
이게 세계 최대 소프트웨어 기업의 운영체제 서비싱 시스템이다.
해결: DISM이 못 가는 길을 돌아가다
원인을 알았으니 우회로를 찾으면 된다.
Add-WindowsCapability는 DISM과 다른 채널로 패키지를 가져온다. DISM이 UUP(Unified Update Platform)에서 삽질하는 동안, 이 친구는 다른 문으로 들어간다.
# Step 1: 뒷문으로 페이로드 설치
Add-WindowsCapability -Online -Name "Microsoft.Windows.HyperV.VirtualMachinePlatform~~~~0.0.1.0"
# Step 2: 인터넷 차단하고 로컬 파일로 활성화
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /LimitAccess
100%.
100%.
일주일 만에 처음 보는 세 자리 숫자.
왜 이게 되는 건데
[정문 — 막힘]
DISM enable-feature
→ FOD 필요
→ Windows Update UUP 채널
→ 서비싱 스택(26100) ≠ OS(26200)
→ "이 부품 카탈로그에 없는데요?"
→ 21분 대기 → 타임아웃
[뒷문 — 통과]
Add-WindowsCapability
→ UUP 안 거침
→ 페이로드 로컬에 설치됨
DISM + /LimitAccess
→ "인터넷? 그런 거 안 씀"
→ 로컬 파일만 사용
→ 성공
같은 건물인데 정문이 공사 중이라 안 열린다. 뒷문은 열려 있다. 그런데 안내 표지판은 정문밖에 안 알려준다. 이게 Windows의 UX다.
당신이 이 글을 찾았다면
바로 되면 좋겠지만, 여러 번 시도하다 온 사람이라면 보류 작업이 쌓여있을 수 있다. 먼저 청소:
# 가볍게
dism /online /cleanup-image /revertpendingactions
# → 재부팅 → 위의 두 줄 실행
# 그래도 안 되면 (인플레이스 설치)
# 24H2 ISO의 setup.exe → "개인 파일 및 앱 유지"
# → 재부팅 → 위의 두 줄 실행
전체 해결 플로우
처음부터 하는 분들을 위한 정리:
1. BIOS에서 가상화 기술 활성화
HP 노트북: F10 → Security 또는 Configuration → VT-x 활성화
↓
2. Hyper-V + WSL 활성화 (이건 잘 됨)
dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart
↓
3. 보류 작업 정리 (이미 삽질한 경우)
dism /online /cleanup-image /revertpendingactions → 재부팅
↓
4. VirtualMachinePlatform 우회 활성화 (이 글의 핵심)
Add-WindowsCapability -Online -Name "Microsoft.Windows.HyperV.VirtualMachinePlatform~~~~0.0.1.0"
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /LimitAccess
↓
5. 재부팅 → WSL2 설치
wsl --install -d Ubuntu-24.04
당신의 문제가 이 문제인지 확인하는 법
# DISM 로그에서 버전 확인
Get-Content C:\Windows\Logs\DISM\dism.log -Tail 100
# "버전:"과 "이미지 버전:"이 다르면 → 이 문제
# CBS 로그에서 실패 원인
Select-String -Path C:\Windows\Logs\CBS\CBS.log `
-Pattern "Error|Failed|0x800f" -Context 2 | Select-Object -Last 20
# "CBS_E_CANCEL"이 보이면 → 이 문제
# CPU 가상화 지원 확인 (기본 전제)
Get-CimInstance -ClassName Win32_Processor |
Select-Object VirtualizationFirmwareEnabled, VMMonitorModeExtensions
요약
| 증상 | VirtualMachinePlatform 활성화가 37.8%에서 무한 멈춤 |
| 근본 원인 | 25H2 OS(26200)와 24H2 서비싱 스택(26100)의 버전 불일치 |
| 해결 | Add-WindowsCapability로 우회 설치 → dism /LimitAccess로 활성화 |
| 선행 조건 | 보류 작업 정리 |
| 비용 | 일주일의 저녁 시간, BlueStacks 억울한 삭제 1건, 37.8이라는 숫자에 대한 트라우마 |
교훈
- 로그를 먼저 읽어라. “될 때까지 다른 거 시도”는 시간 낭비의 지름길이다.
- Windows Insider는 각오하고 써라. 25H2는 프리뷰 빌드다. 서비싱 스택이 따라오지 못하는 문제가 있다.
- 같은 건물에도 문이 여러 개다. DISM이 안 되면
Add-WindowsCapability가 있다. 공식 문서에는 안 써있지만. - AI한테 로그를 던져라. 사람 눈으로 CBS 로그 16만 줄을 읽는 건 고문이다.
이 트러블슈팅은 Claude Code와 함께 진행했습니다. AI가 16만 줄짜리 CBS 로그에서 핵심 6줄을 뽑아줬고, “Add-WindowsCapability라는 뒷문이 있다”는 아이디어를 같이 도출했습니다. 혼자였으면 일주일이 아니라 포맷했을 겁니다.