"WSL2는 Windows 커널과 나란히 올라간다" — 이 말, 절반은 맞고 절반은 틀렸습니다.
🎯 이 글에서 다루는 것
WSL1과 WSL2의 아키텍처가 근본적으로 다른 이유
WSL2가 Hyper-V 경량 VM을 쓰는 구조와 그 의미
"Windows 커널과 병렬 실행"이라는 말의 정확한 해석
WSL2 Linux 커널의 정체와 관리 주체
WSL1 vs WSL2 선택 기준
📌 도입 / 배경
윈도우에서 Linux를 쓰고 싶다는 개발자의 요구는 오래됐습니다. 예전엔 VirtualBox나 VMware 같은 전통적인 가상 머신을 써야 했죠. 무겁고, 느리고, 디스크도 잡아먹었습니다.
Microsoft가 2016년에 내놓은 WSL1(Windows Subsystem for Linux 1)은 혁신적이었습니다. 가상 머신 없이도 bash 셸을 돌릴 수 있었으니까요. 하지만 한계도 명확했습니다. 파일 I/O가 느렸고, 일부 Linux 시스템 콜이 지원되지 않아 Docker 같은 도구가 제대로 동작하지 않았습니다.
그래서 2019년, Microsoft는WSL2를 발표합니다. 그리고 이때부터 "WSL2는 Windows 커널 옆에서 실행된다"는 설명이 돌기 시작했습니다. 이 표현, 과연 정확할까요?
🔍 WSL1의 구조 — 번역기 방식
WSL1을 먼저 이해해야 WSL2의 변화가 보입니다.
WSL1은Linux 커널 없이동작합니다. 대신 Linux 프로그램이 커널에 요청하는시스템 콜(syscall)을 실시간으로 Windows NT 커널 API로 번역하는 레이어를 사용합니다.
[Linux 바이너리 (bash, grep, vim...)]
↓ Linux syscall 발생
[WSL1 Translation Layer] ← 번역기 역할
↓ 변환된 NT API 호출
[Windows NT Kernel]
이 구조의 장점은가볍다는 것입니다. VM이 없으므로 부팅 시간이 없고, 메모리 오버헤드도 적습니다.
단점은완벽하지 않다는 것입니다. Linux syscall을 100% 번역하는 것은 사실상 불가능에 가깝습니다. Docker 데몬이 필요로 하는namespace,cgroup같은 커널 기능들이 제대로 지원되지 않았죠.
🔍 WSL2의 구조 — 경량 VM 방식
WSL2는 접근 방식 자체를 바꿨습니다.진짜 Linux 커널을 돌립니다.
핵심은 Hyper-V 경량 가상 머신(Lightweight Utility VM)입니다. Windows에 내장된 Hyper-V 하이퍼바이저 위에 아주 작은 VM을 띄우고, 그 안에서 Microsoft가 직접 관리하는커스텀 Linux 커널을 실행합니다.
┌─────────────────────────────────────────────┐
│ Hyper-V Hypervisor │
├──────────────────┬──────────────────────────┤
│ Windows 파티션 │ WSL2 VM 파티션 │
│ Windows NT │ Linux Kernel │
│ Kernel │ (Microsoft 커스텀) │
│ │ + Linux 사용자 공간 │
└──────────────────┴──────────────────────────┘
이 구조에서 중요한 포인트가 두 가지 있습니다.
🔑 포인트 1 — Hyper-V가 중간에 있다
WSL2는 Windows 커널과직접 나란히실행되는 게 아닙니다.Hyper-V라는 하이퍼바이저 위에, Windows와 Linux가 각각의 파티션으로 나뉘어 실행됩니다.
"병렬 실행"이라는 표현이 완전히 틀린 건 아닙니다. 두 커널이 동시에 메모리에 올라와 있고, 서로 독립적으로 동작하기 때문에 넓은 의미에서 병렬이라고 볼 수 있습니다. 하지만 정확히는 "하이퍼바이저 위의 두 파티션"입니다.
🔑 포인트 2 — Linux 커널의 정체
WSL2에서 사용하는 Linux 커널은Microsoft가 직접 유지보수하는 오픈소스 커스텀 커널입니다.
주소는github.com/microsoft/WSL2-Linux-Kernel이며, 표준 Linux 커널을 기반으로 WSL2 환경에 최적화되어 있습니다.
wsl --update명령을 실행하면 이 커널이 업데이트됩니다. Ubuntu나 Debian의 커널이 업데이트되는 게 아닙니다.
🔍 "병렬"이라는 표현은 어디서 나왔나
Microsoft 공식 문서에서도 WSL2를 설명할 때 이런 표현을 씁니다:
WSL 2 uses virtualization technology to run a Linux kernel inside of a lightweight utility virtual machine (VM).
일부 발표 자료나 유튜브 영상에서 "Windows 커널과 Linux 커널이 나란히 실행된다"는 시각화를 쓰기도 합니다. 이는 사용자 입장에서 두 운영체제가 동시에 돌아간다는 개념을 쉽게 전달하려는 의도입니다.
하지만 하이퍼바이저 아키텍처를 아는 사람 입장에서는 이 그림이 조금 오해를 불러일으킵니다. 더 정확한 표현은:
"Hyper-V 하이퍼바이저 위에서 Windows 파티션과 Linux VM 파티션이 함께 실행된다"
💻 실습 — WSL2 구조 직접 확인하기
WSL2의 VM 구조는 직접 확인할 수 있습니다.
WSL2 커널 버전 확인
# WSL2 셸 안에서 실행
uname -r
# 출력 예: 5.15.167.4-microsoft-standard-WSL2
microsoft-standard-WSL2라는 접미사가 붙어 있습니다. 이게 Microsoft 커스텀 커널의 증거입니다.
Windows에서 Hyper-V VM 확인
# PowerShell (관리자)에서 실행
hcsdiag list
WSL2 인스턴스가 Hyper-V 컨테이너 VM으로 목록에 표시됩니다.
메모리 사용 구조 확인
# 작업 관리자 대신 CLI로 확인
Get-Process -Name "Vmmem" | Select-Object Name, WorkingSet
Vmmem프로세스가 보입니다. 이것이 WSL2 VM이 사용하는 메모리입니다. 진짜 VM이 떠 있다는 증거입니다.
wsl.conf로 메모리/CPU 제한하기
WSL2는 VM이기 때문에 리소스 제한이 가능합니다.%USERPROFILE%\.wslconfig파일로 설정합니다.
# C:\Users\<사용자명>\.wslconfig
[wsl2]
memory=4GB # VM에 할당할 최대 메모리
processors=2 # VM에 할당할 CPU 코어 수
swap=2GB # 스왑 파일 크기
🆚 WSL1 vs WSL2 — 무엇을 선택할까
항목
WSL1
WSL2
아키텍처
syscall 번역
Hyper-V 경량 VM
Linux 커널
없음 (번역기)
실제 커널
파일 I/O (Linux 파일시스템)
느림
빠름
파일 I/O (Windows 파일시스템)
빠름
느림 (9P 프로토콜)
Docker 지원
제한적
완전 지원
시스템 콜 호환성
부분
거의 완벽
부팅 시간
즉시
수 초 (첫 실행)
Hyper-V 필요
불필요
필요
일반적인 개발 환경에서는 WSL2가 압도적으로 유리합니다. Docker Desktop도 WSL2 백엔드를 권장합니다.
Windows 파일시스템(/mnt/c/...)을 대용량으로 읽고 써야 하는특수한 경우라면 WSL1이 더 빠를 수 있습니다. 하지만 이런 케이스는 드뭅니다.
⚠️ 주의사항 / 흔한 실수
🚨 파일은 Linux 파일시스템 안에 두자
WSL2에서/mnt/c/(Windows 파일시스템)에 있는 파일을 다루면 9P 프로토콜을 통해 VM 경계를 넘나들어야 하므로 I/O가 느립니다. 프로젝트 폴더는 반드시~/(Linux 홈 디렉터리) 안에 두는 것이 좋습니다.
🚨 Hyper-V와 다른 가상화 소프트웨어 충돌
구형 VirtualBox나 VMware는 Hyper-V와 충돌할 수 있습니다. WSL2를 활성화하면 Hyper-V가 켜지므로, VirtualBox 6.0 이하 버전에서 문제가 생길 수 있습니다. VirtualBox 6.1 이상 또는 VMware 15.5.5 이상은 Hyper-V와 공존 가능합니다.
🚨wsl --shutdown은 VM을 내린다
WSL2를 쓰다가wsl --shutdown을 실행하면 Linux 프로세스만 종료되는 게 아니라VM 자체가 종료됩니다. 다음wsl명령 실행 시 VM이 다시 부팅됩니다 (수 초 소요).
✅ 정리 / 마무리
WSL2의 핵심을 정리하면 다음과 같습니다.
WSL1은 Linux 커널 없이 syscall을 번역하는 방식
WSL2는 Hyper-V 위의 경량 VM 안에서 실제 Linux 커널을 실행
"Windows 커널과 병렬 실행"은 엄밀히는 틀린 표현 — 정확히는하이퍼바이저 위의 두 파티션
WSL2 Linux 커널은 Microsoft가 직접 관리하는 오픈소스 커스텀 커널
Vmmem프로세스가 VM의 존재를 증명함
WSL2는 "가상 머신처럼 무겁지 않으면서도 진짜 Linux"를 제공하는 절충안입니다. 구조를 알고 쓰면 성능 튜닝도, 트러블슈팅도 훨씬 수월해집니다.
다음 단계로는WSL2 + Docker Desktop 아키텍처,WSLg(GUI 앱 지원),Windows 11에서의 WSL2 개선사항등을 살펴보면 좋습니다.