WSL2 — Windows 위의 Linux
WSL2 — Windows 위의 Linux
Windows 에서 개발할 때 자주 부딪히는 자리는 "Linux 전용 도구". Docker · 일부 CLI · 셸 스크립트 · 컴파일 환경이 그렇습니다. 듀얼 부팅이나 가상 머신 없이 같은 PC 안에서 진짜 Linux 환경을 띄우는 길이 WSL2.
1. WSL 에 대한 이야기
WSL 은 Windows Subsystem for Linux 의 줄임말. 2016 년 Windows 10 Anniversary Update (1607) 에 첫 버전이 들어갔고, 2020 년 5 월 Windows 10 2004 업데이트에서 WSL2 가 정식 출시. 2022 년부터는 Microsoft Store 에서 단독 앱 (wsl --install) 으로.
| 세대 | 동작 | 출시 |
|---|---|---|
| WSL1 | Linux 시스템콜을 Windows API 로 변환하는 호환 계층. | 2016 |
| WSL2 | 진짜 Linux 커널을 Hyper-V 기반 경량 VM 으로 실행. | 2020 |
WSL2 가 압도적으로 호환성이 좋고 일반 권장 기본값.
2. 설치
Windows 10 2004+ 또는 Windows 11 관리자 PowerShell 에서 한 줄:
wsl --install
이 명령이 다음을 한 번에 처리:
- WSL 기능 활성화.
- Virtual Machine Platform 활성화.
- 최신 Linux 커널 설치.
- WSL2 를 기본 버전으로 설정.
- Ubuntu 배포판 설치.
설치 후 재부팅. 시작 메뉴의 "Ubuntu" 또는 wsl 명령으로 셸 진입.
wsl --list --online # 사용 가능한 배포판
wsl --install -d Debian # 다른 배포판 설치
wsl --list --verbose # 설치된 목록과 버전
wsl --set-default Ubuntu # 기본 배포판 지정
wsl --shutdown # 모든 WSL 인스턴스 종료
wsl --terminate Ubuntu # 특정 배포판만 종료
wsl --unregister Ubuntu # 완전 제거 (데이터 사라짐)
3. WSL1 vs WSL2
| 항목 | WSL1 | WSL2 |
|---|---|---|
| 구조 | Linux 시스콜 → Windows 변환 | 진짜 Linux 커널 (Hyper-V VM) |
| 시스콜 호환 | 부분적 | 완전 |
| 시작 속도 | 즉시 | 1~2 초 |
| 메모리 | 공유 | 가상 메모리 풀 (동적 할당) |
| Linux 측 파일 I/O | 느림 | 빠름 (ext4) |
Windows 측 파일 I/O (/mnt/c) |
빠름 | 느림 (9P 프로토콜) |
| Docker | 미지원 | 지원 (Docker Desktop) |
| systemd | 미지원 | 지원 (2022~) |
| GPU | 미지원 | CUDA · DirectX 지원 |
wsl --set-version Ubuntu 2
wsl --set-default-version 2
4. 파일 시스템 — 어디에 코드를 두는가
| 위치 | 어디서 빠른가 | 권장 |
|---|---|---|
\\wsl$\Ubuntu\home\user\project (Linux 측) |
Linux 도구 | Linux 도구 위주. |
C:\Users\name\project (/mnt/c/...) |
Windows 도구 | Windows 도구 위주. |
두 영역을 가로지르는 I/O 가 가장 느림. Node 의 npm install, Git 작업처럼 작은 파일이 수만 개 만들어지는 작업은 양쪽을 섞으면 체감이 크게 떨어집니다.
권장 — Linux 도구를 쓸 코드는 WSL 내부 (~/) 에, Windows 도구만 쓸 코드는 C:\ 에. 한 프로젝트가 양쪽 도구를 모두 쓰면 WSL 내부에 두고 Windows 측은 VS Code 를 통해 접근.
5. VS Code 통합
Remote - WSL 확장이 표준. WSL 셸에서:
cd ~/project
code .
VS Code 가 자동으로 WSL 측에 서버를 띄우고 Windows 측 UI 가 그것에 붙습니다. 확장·터미널·디버거 모두 Linux 측에서 실행되므로 경로·줄바꿈·실행 비트 같은 자리가 자연스러움. 윈도우 왼쪽 아래에 WSL: Ubuntu 표시.
6. Docker Desktop on WSL2
Docker Desktop 의 WSL2 백엔드가 사실상 표준. Docker Desktop 설치 시 WSL2 통합을 활성화하면, WSL 셸에서 docker 명령이 그대로 동작.
장점:
- Hyper-V VM 의 무거움 없이 시작이 빠름.
- WSL 안의 다른 배포판에서도 같은 Docker 를 공유.
- 리소스 사용량이 윈도우 측 Hyper-V 모드보다 효율적.
.wslconfig 로 메모리·CPU 제한:
# C:\Users\<user>\.wslconfig
[wsl2]
memory=8GB
processors=4
swap=4GB
7. systemd 활성화
2022 년부터 WSL2 가 systemd 정식 지원. 일부 패키지 (Snap · 일부 서비스 데몬) 가 systemd 를 요구하는데, 이를 켜려면 /etc/wsl.conf:
[boot]
systemd=true
저장 후 PowerShell 에서 wsl --shutdown 한 번. 다음 실행 시 활성화.
8. 다른 옵션
- Hyper-V VM — 전통적 가상 머신. 무겁지만 격리 강함.
- VirtualBox — Oracle. 다른 호스트 OS 도 가능.
- VMware Workstation — 상용 가상 머신.
- Multipass — Canonical 의 Ubuntu VM 도구.
- Cygwin · MSYS2 · Git Bash — Windows 위에서 GNU 도구 흉내. 진짜 Linux 아님.
- 듀얼 부팅 — 가장 빠르지만 작업 흐름 분리가 큰 비용.
WSL2 는 Microsoft 가 직접 만들어 통합도가 높고, 윈도우 일상 작업과 함께 쓰기에 마찰이 적습니다.
9. 자주 쓰는 명령
# WSL 안에서 (Ubuntu 가정)
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl build-essential
# Windows 측 파일 접근
ls /mnt/c/Users/<name>/Documents
# Windows 클립보드와 연동
echo "hello" | clip.exe
# Windows 명령 실행
cmd.exe /c "echo Hello from cmd"
powershell.exe -c "Get-ChildItem"
# 브라우저 열기
explorer.exe https://example.com
# WSL 측 IP 확인
hostname -I
# Windows 측에서
wsl ls -la /home/user
wsl --user user -d Ubuntu bash -c "cd /home/user/project && pnpm install"
copy file.txt \\wsl$\Ubuntu\home\user\
10. 자주 걸리는 자리
두 영역 가로지르는 I/O — 가장 큰 함정. 대규모 디렉터리는 WSL 내부에.
줄바꿈 — Git 의 core.autocrlf 가 활성화돼 있으면 WSL 안에서 체크아웃 시 CRLF 가 섞일 수 있음. .gitattributes 의 * text=auto eol=lf 가 안전.
실행 비트 — Windows 측에 둔 .sh 가 실행 권한이 없는 채로 보입니다. chmod +x 가 효과 없을 때 git update-index --chmod=+x 로 명시.
localhost 포트 — WSL2 안에서 띄운 서버는 보통 Windows 측 localhost:포트 로 접근 가능 (자동 포워딩). 안 될 땐 wsl hostname -I 로 IP 확인.
DNS — 회사망 등에서 DNS 가 꼬일 때. /etc/resolv.conf 가 자동 생성되는데, /etc/wsl.conf 의 [network] generateResolvConf=false 로 끈 후 직접 작성.
메모리 누수처럼 보이는 RAM 점유 — WSL2 의 vmmem 프로세스가 캐시를 잡고 안 놓는 경우. .wslconfig 의 memory 제한 또는 wsl --shutdown.
VHDX 디스크 회수 안 됨 — docker_data.vhdx 가 prune 으로 자동 축소되지 않는 문제 (MS WSL #4699). Optimize-VHD -Mode Full 로 회수.
GUI 앱 — WSLg (Windows 11 · Win10 2004+ 패치) 가 X 서버 없이 GUI 를 직접 지원. 그 전에는 VcXsrv · X410 같은 X 서버 별도 설치.
하고픈 말
WSL2 는 Windows 사용자에게 진짜 Linux 환경을 가장 자연스럽게 가져다줍니다. 두 영역 (WSL ↔ NTFS) 가로지르는 I/O 만 의식하면 일상 사용에 큰 마찰이 없습니다. VHDX 디스크 회수 는 운영의 별도 챙길 자리.
Next
- (environment 끝)
Microsoft WSL · WSL GitHub · WSL Release Notes · .wslconfig · Docker Desktop WSL2 · WSLg · WSL1 vs WSL2 를 참고합니다.