WSL(Windows Subsystem for Linux)이란? 설치와 설정 방법
WSL(Windows Subsystem for Linux)은 Windows 10과 11에 포함된 하위 시스템으로, 별도의 가상 머신이나 듀얼 부팅 없이 실제 리눅스 배포판을 실행합니다. 관리자 권한의 PowerShell에서 wsl --install 명령 하나로 설치되며, 기본적으로 WSL 2와 Ubuntu가 설치됩니다. WSL 2에서는 실제 리눅스 커널이 가벼운 가상 머신 위에서 동작합니다.
WSL(Windows Subsystem for Linux, Windows용 리눅스 하위 시스템)은 Windows 10과 11에 포함된 기능으로, Windows 안에서 리눅스 배포판을 직접 실행할 수 있게 합니다. bash 터미널, apt, ssh, grep, Docker 등 명령줄 도구를 모두 쓸 수 있습니다. VirtualBox를 설치하거나 디스크를 나눠 다른 OS를 설치할 필요가 없습니다. Ubuntu는 몇 초 만에 일반 터미널 창처럼 열립니다. 아래에서는 WSL 1과 WSL 2의 차이, 설치 방법, 파일과 VS Code, GUI 앱 사용법, 자주 생기는 문제 해결을 설명합니다.
Windows와 리눅스에서의 WSL이란
간단히 말해 WSL은 Windows를 떠나지 않고 완전한 리눅스 환경을 얻는 방법입니다. 명령줄이나 Microsoft Store에서 Ubuntu, Debian, openSUSE, Kali, AlmaLinux 같은 배포판을 설치하고, 서버에서 하듯이 사용자, 권한, 패키지, 서비스를 다루며 작업합니다.
WSL이 하지 않는 일도 알아 두세요. Cygwin 같은 명령어 에뮬레이터도 아니고, 이식된 유틸리티 모음도 아닙니다. WSL 2에서는 Microsoft가 빌드한 실제 리눅스 커널이 동작합니다. 그래서 리눅스용 바이너리를 다시 컴파일하지 않고 실행할 수 있고, WSL에서 익힌 기술을 실제 서버에 그대로 옮길 수 있습니다.
WSL의 전형적인 용도:
- 별도의 컴퓨터 없이 리눅스와 명령줄 배우기.
- 운영 환경이 리눅스일 때의 웹 개발(Python, Node.js, PHP, Go).
- Docker Desktop — 엔진으로 WSL 2를 사용합니다.
- SSH로 서버 접속, bash 스크립트, 익숙한 환경에서의 git 작업.
WSL 1과 WSL 2의 차이
WSL에는 두 가지 아키텍처가 있습니다. WSL 1은 리눅스 시스템 호출을 Windows 커널 호출로 변환합니다. 별도의 리눅스 커널은 없습니다. WSL 2는 Hyper-V 기반의 가벼운 가상 머신에서 실제 리눅스 커널을 실행합니다. 가상 머신은 몇 초 만에 시작되며 메모리도 스스로 관리합니다.
| 항목 | WSL 1 | WSL 2 |
|---|---|---|
| 커널 | 없음, 시스템 호출 변환 | 실제 리눅스 커널 |
| 시스템 호출 호환성 | 부분적 | 완전 |
| Docker, systemd | 없음 | 있음 |
리눅스 파일(~/) 속도 | 느림 | 빠름 |
Windows 파일(/mnt/c) 속도 | 빠름 | 눈에 띄게 느림 |
| 가상화 필요 여부 | 필요 없음 | 필요함 |
| 네트워크 | Windows와 공유 | 독립된 가상 네트워크(기본 NAT) |
거의 모든 경우에 WSL 2를 선택하세요. WSL 2가 기본값입니다. WSL 1이 의미가 있는 경우는 가상화를 켤 수 없을 때(예: Windows 자체가 중첩 가상화 없이 가상 머신 안에서 도는 경우)나, 프로젝트를 Windows 디스크에 두고 계속 다뤄야 할 때입니다.
Windows 10과 11에 WSL 설치하는 방법
Windows 11과 Windows 10 버전 2004 이상(빌드 19041 이상)에서는 명령 하나로 설치가 끝납니다. 관리자 권한으로 PowerShell 또는 "터미널"을 열고 다음을 실행하세요.
wsl --install
이 명령은 필요한 Windows 기능을 켜고, WSL 2 커널을 내려받고, Ubuntu를 설치합니다. 재부팅 후 배포판 창이 열리면 리눅스 사용자 이름과 비밀번호를 정하세요. 이 값은 Windows 계정과 무관하며, 이 비밀번호는 sudo에서 필요합니다.
Enter new UNIX username: alex
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
바로 패키지를 업데이트하세요. 새 서버에서 하는 것과 같습니다.
sudo apt update && sudo apt upgrade -y
배포판 선택하기
기본으로는 Ubuntu가 설치되지만 다른 배포판을 고를 수도 있습니다. 사용 가능한 목록은 다음과 같습니다.
wsl --list --online
목록에 있는 이름으로 설치합니다.
wsl --install -d Debian
WSL이 이미 설치되어 있다면 이 명령은 새 배포판만 추가합니다. 여러 시스템을 동시에 둘 수도 있습니다. 예를 들어 업무용 Ubuntu와 실험용 Kali를 함께 쓸 수 있습니다.
버전 확인: wsl -l -v
설치된 배포판, 상태, WSL 버전을 확인합니다.
wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Debian Stopped 2
별표는 기본 배포판을 나타내며, wsl을 매개변수 없이 실행하면 이것이 열립니다. 기본값을 바꾸려면 wsl --set-default Debian을 실행하세요.
WSL 1을 WSL 2로 전환하기
새로 설치할 배포판의 버전은 다음 명령으로 지정합니다.
wsl --set-default-version 2
이미 설치된 배포판은 따로 변환합니다(데이터는 유지되지만 몇 분 걸릴 수 있습니다).
wsl --set-version Ubuntu 2
되돌리려면 wsl --set-version Ubuntu 1을 사용합니다.
WSL 관리에 유용한 명령
| 명령 | 동작 |
|---|---|
wsl | 기본 배포판 열기 |
wsl -d Debian | 특정 배포판 열기 |
wsl --shutdown | 모든 배포판과 WSL 2 가상 머신 중지 |
wsl --terminate Ubuntu | 배포판 하나 중지 |
wsl --update | WSL과 커널 업데이트 |
wsl --status | 기본 버전과 전체 상태 보기 |
wsl --export Ubuntu ubuntu.tar | 배포판을 아카이브로 백업 |
wsl --import Ubuntu2 D:\wsl\u2 ubuntu.tar | 배포판 복원 또는 복제 |
wsl --unregister Ubuntu | 모든 데이터와 함께 배포판 삭제 |
--unregister는 조심하세요. 배포판 안의 파일은 휴지통을 거치지 않고 바로 삭제됩니다. 실행 전에 --export로 백업하세요.
리눅스와 Windows 사이의 파일 다루기
Windows 드라이브는 WSL 안에서 /mnt 디렉터리에 자동으로 마운트됩니다. C 드라이브는 /mnt/c, D 드라이브는 /mnt/d입니다.
cd /mnt/c/Users/alex/Downloads
ls -l
cp report.csv ~/projects/
반대 방향으로, 리눅스 파일은 네트워크 경로 \\wsl$\Ubuntu(Windows 11에서는 \\wsl.localhost\Ubuntu도 가능)로 탐색기에서 볼 수 있고, 사이드바의 "Linux" 항목에도 나타납니다. 현재 리눅스 디렉터리를 탐색기로 바로 여는 방법은 다음과 같습니다.
explorer.exe .
WSL에서는 Windows 프로그램(notepad.exe, code)을 실행할 수 있고, PowerShell에서는 앞에 wsl을 붙여 리눅스 명령을 실행할 수 있습니다. 두 시스템 사이에서 경로를 변환하려면 wslpath 유틸리티를 씁니다.
wslpath 'C:\Users\alex'
/mnt/c/Users/alex
WSL 2 성능의 핵심 원칙은 프로젝트를 /mnt/c가 아니라 리눅스 파일 시스템(~/projects)에 두는 것입니다. Windows 드라이브 접근은 네트워크 프로토콜을 거치기 때문에, 큰 프로젝트에서 git status나 npm install이 몇 배 느려집니다.
VS Code와 WSL
Visual Studio Code는 WSL을 원격 머신처럼 다룰 수 있습니다. 인터페이스는 Windows에 남고, 터미널, 확장 기능, 인터프리터, 디버거는 리눅스 안에서 실행됩니다. 이를 위해서는 WSL 확장(Microsoft 제공)이 필요합니다. 배포판의 터미널에서 프로젝트 디렉터리로 이동한 뒤 다음을 실행하세요.
cd ~/projects/site
code .
처음 실행할 때 VS Code가 리눅스 쪽에 서버 구성 요소를 자동으로 설치합니다. 왼쪽 아래에 "WSL: Ubuntu" 표시가 나타나면, 내장 터미널에서 실행하는 모든 것이 리눅스에서 동작하고 있다는 뜻입니다. Python이나 ESLint 같은 확장 기능은 "WSL에 설치"해야 합니다. VS Code가 버튼으로 안내하니 눌러 주세요.
WSL에서 GUI 앱 실행하기(WSLg)
Windows 11과 최신 WSL이 설치된 Windows 10에는 WSLg라는 그래픽 리눅스 앱 지원 기능이 기본으로 들어 있습니다. X 서버를 따로 설정할 필요가 없습니다. 프로그램을 평소처럼 설치하면, 창이 Windows 창과 나란히 나타나고 바로 가기는 시작 메뉴에 추가됩니다.
sudo apt install gedit -y
gedit ~/.bashrc &
WSLg는 X11과 Wayland, 소리, 클립보드를 지원합니다. 다만 일상적으로 GNOME이나 KDE 데스크톱 전체를 쓰려는 용도의 대체재는 아닙니다. WSL은 개별 애플리케이션을 위한 것이지, 데스크톱 환경 전체를 위한 것이 아닙니다.
systemd와 WSL 2 리소스
최신 WSL 2는 systemd를 지원하며, 새로 설치한 Ubuntu에서는 기본으로 켜져 있습니다. 켜져 있지 않다면 배포판 안의 /etc/wsl.conf 파일에 다음을 추가하세요.
[boot]
systemd=true
그리고 PowerShell에서 하위 시스템을 다시 시작합니다: wsl --shutdown. 그러면 systemctl과 nginx, PostgreSQL 같은 서비스를 쓸 수 있습니다.
WSL 2 가상 머신이 쓸 메모리와 프로세서 수는 Windows 쪽의 %UserProfile%\.wslconfig 파일에서 제한할 수 있습니다.
[wsl2]
memory=4GB
processors=2
설정은 wsl --shutdown 이후에 적용됩니다.
WSL 설치 시 자주 생기는 오류
오류 0x80370102
전체 메시지는 "가상 머신을 시작할 수 없습니다. 필요한 구성 요소가 설치되어 있지 않습니다"(WslRegisterDistribution failed with error: 0x80370102)입니다. 원인은 거의 항상 하나로, WSL 2가 가상 머신을 시작하지 못하는 것입니다. 다음 순서대로 확인하세요.
- BIOS/UEFI에서 하드웨어 가상화가 켜져 있는지: Intel VT-x(Intel Virtualization Technology) 또는 AMD-V(SVM Mode). 상태는 작업 관리자 → "성능" → CPU → "가상화: 사용"에서 볼 수 있습니다.
- "가상 머신 플랫폼" 구성 요소가 켜져 있는지.
- 부트로더에서 하이퍼바이저가 꺼져 있지 않은지.
구성 요소는 관리자 권한의 PowerShell에서 켭니다.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
bcdedit /set hypervisorlaunchtype auto
그런 다음 컴퓨터를 재부팅하세요. 가상 머신 안에서 작업 중이라면, 호스트에서 중첩 가상화를 허용하거나 WSL 1을 사용하세요.
기타 자주 생기는 문제
- 0x800701bc — WSL 2 커널이 업데이트되지 않았습니다.
wsl --update를 실행하세요. wsl --install이 도움말만 출력함 — WSL이 이미 설치되어 있습니다.wsl --install -d Ubuntu로 배포판을 추가하세요.- VPN을 켜면 WSL 안에서 인터넷이 안 됨 — VPN 클라이언트가 가상 네트워크 경로를 가로챕니다. Windows 11에서는
.wslconfig의[wsl2]섹션에networkingMode=mirrored를 설정하면 도움이 되는 경우가 많습니다. - WSL이 디스크 공간을 많이 차지함 — 가상 디스크
ext4.vhdx는 커지지만, 파일을 지워도 자동으로 줄어들지 않습니다. 직접 축소하거나--export/--import로 배포판을 옮기세요. - 리눅스 비밀번호를 잊음 — PowerShell에서 root로 로그인한 뒤(
wsl -u root)passwd alex를 실행하세요.
WSL, 가상 머신, 듀얼 부팅 비교
Windows 컴퓨터에서 리눅스를 쓰는 방법이 WSL만 있는 것은 아닙니다. 목적에 따라 선택하면 됩니다.
| 방식 | 장점 | 단점 | 선택할 때 |
|---|---|---|---|
| WSL 2 | 몇 초 만에 실행, 파일 공유, VS Code, Docker | 완전한 데스크톱이 없음, 네트워크와 디스크 특성이 다름 | 개발, 명령줄 학습, 스크립트 |
| 가상 머신(VirtualBox, Hyper-V, VMware) | 완전한 격리, 스냅샷, 원하는 배포판과 데스크톱, 독립된 네트워크 카드 | 무겁고, 리소스를 미리 할당함 | 서버 실습 환경, 네트워크와 부팅 실험, 디스크 파티션 작업 |
| 듀얼 부팅 | 하드웨어 성능을 모두 사용, 네이티브 그래픽과 드라이버 | 전환할 때 재부팅 필요, 디스크 파티션 작업의 위험 | 리눅스를 주 시스템으로 사용, 리눅스에서 게임이나 GPU 작업 |
리눅스를 처음부터 배우는 것이라면 WSL로 충분한 경우가 많습니다. 파일, 권한, 프로세스, 패키지, bash 스크립트, SSH가 서버와 똑같이 동작합니다. 가상 머신이 필요해지는 때는 부트로더, 물리 디스크 파티션, 네트워크 인터페이스, 호스트 방화벽처럼 WSL에서는 구조가 다른 영역을 다룰 때입니다.
마무리
Windows Subsystem for Linux는 wsl --install이라는 명령 하나로 Windows 안에 실제 리눅스를 제공합니다. WSL 2를 선택하고, wsl -l -v로 버전을 확인하고, 프로젝트는 /mnt/c가 아니라 ~/에 두고, WSL 확장으로 VS Code를 연결하세요. 설치가 0x80370102로 실패하면 BIOS에서 가상화를 켜고 "가상 머신 플랫폼" 구성 요소를 활성화하세요. 이런 작업 환경을 준비하는 것에서 리눅스 실습이 시작됩니다.
자주 묻는 질문
WSL은 무료인가요?
예. WSL은 Windows 10과 11의 모든 에디션(Home 포함)에 들어 있으며, 리눅스 배포판도 무료로 배포됩니다.
WSL에서 Docker를 실행할 수 있나요?
예, 단 WSL 2에서만 가능합니다. WSL 2를 엔진으로 쓰는 Docker Desktop을 설치하거나, 일반 Ubuntu 서버처럼 배포판 안에 Docker Engine을 직접 설치할 수 있습니다.
WSL 배포판의 파일은 실제로 어디에 저장되나요?
WSL 2에서는 Windows 사용자 프로필 안의 가상 디스크 ext4.vhdx에 저장됩니다. 직접 열 필요는 없고, 탐색기에서 \\wsl$\ 경로를 사용하면 됩니다.
WSL을 완전히 제거하려면 어떻게 하나요?
wsl --unregister 이름 으로 배포판을 삭제한 뒤, "설정"의 "설치된 앱"에서 "Windows 하위 시스템 for Linux" 앱을 제거하세요. 필요하면 Windows 기능도 끌 수 있습니다.
WSL을 다른 드라이브로 옮길 수 있나요?
예. wsl --export Ubuntu ubuntu.tar 를 실행한 뒤 wsl --unregister Ubuntu 를 하고, wsl --import Ubuntu D:\wsl\ubuntu ubuntu.tar 를 실행합니다. 최신 버전에는 wsl --manage Ubuntu --move 명령도 있습니다.