들어가며: 윈도우 개발자의 오랜 고민

개발하다 보면 이런 상황, 한 번쯤 겪어보셨을 겁니다.

“이 라이브러리는 리눅스에서만 제대로 돌아간다고요?” “맥 쓰는 팀원이랑 환경이 달라서 계속 오류가 나요.” “Docker 쓰려면 리눅스가 있어야 한다는데…”

그래서 예전엔 선택지가 두 가지였습니다. 맥으로 갈아타거나, 아니면 윈도우에 리눅스를 듀얼 부팅하거나. 둘 다 번거롭죠.

그런데 이제는 WSL2라는 선택지가 생겼습니다. 윈도우를 그대로 쓰면서, 리눅스 터미널과 툴체인을 네이티브처럼 사용할 수 있는 방법입니다.


WSL2가 뭔가요?

**WSL2(Windows Subsystem for Linux 2)**는 마이크로소프트가 직접 만든 기능으로, 윈도우 안에서 진짜 리눅스 커널을 실행할 수 있게 해줍니다.

VMware나 VirtualBox 같은 가상머신과 비슷하지만, 결정적인 차이가 있습니다.

  • 별도 OS 창이 뜨지 않고 터미널처럼 바로 사용합니다
  • 부팅이 수 초 내에 완료됩니다
  • 윈도우 파일과 자연스럽게 연동됩니다
  • 메모리와 CPU를 필요한 만큼만 씁니다

쉽게 말하면, 윈도우 안에 리눅스가 들어있는 건데 체감상으론 그냥 터미널 하나 더 열린 것처럼 느껴집니다.

WSL1 vs WSL2, 뭐가 다른가요?

WSL은 1세대(WSL1)부터 시작했지만, 지금은 WSL2가 사실상 표준입니다. 차이를 간단히 보면:

항목WSL1WSL2
방식리눅스 명령어를 윈도우 방식으로 번역진짜 리눅스 커널을 실행
파일 성능리눅스 파일시스템에서 느림리눅스 파일시스템에서 빠름
시스템 콜 호환성일부 미지원완전 호환
Docker제한적완벽 지원
부팅 속도빠름매우 빠름

결론: 특별한 이유가 없다면 WSL2를 쓰세요. Docker, Python, Node.js 등 대부분의 개발 작업에서 WSL2가 훨씬 낫습니다.


시작 전 확인사항

내 윈도우가 WSL2를 지원하나요?

Win + R 키를 누르고 winver를 입력해서 버전을 확인하세요.

  • Windows 11: 모든 버전 지원 ✅
  • Windows 10: 버전 2004(빌드 19041) 이상 지원 ✅
  • Windows 10 그 이하: 수동 설치 필요 (아래 안내 참고)

가상화(Virtualization)가 켜져 있나요?

WSL2는 경량 가상화 기술을 사용하기 때문에 BIOS에서 가상화 기능이 활성화되어 있어야 합니다. 작업 관리자(Ctrl+Shift+Esc) → 성능 탭 → CPU 항목에서 가상화: 사용 이라고 표시되는지 확인하세요.

만약 사용 안 함이라면, PC를 재부팅해서 BIOS 설정으로 들어가 Intel은 VT-x, AMD는 AMD-V(또는 SVM)를 활성화해야 합니다.


WSL2 설치하기

가장 빠른 방법: 명령어 한 줄

PowerShell을 관리자 권한으로 실행합니다. (시작 메뉴에서 PowerShell을 검색한 뒤 우클릭 → “관리자로 실행”)

그리고 아래 명령어를 입력하세요.

1
wsl --install

이 명령어 하나가 아래 작업을 모두 자동으로 처리합니다.

  1. WSL 기능 활성화
  2. 가상 머신 플랫폼 활성화
  3. Linux 커널 업데이트
  4. WSL2를 기본 버전으로 설정
  5. Ubuntu 최신 LTS 버전 설치

설치가 완료되면 PC를 재부팅하세요. 재부팅 후 Ubuntu 창이 자동으로 열리면서 리눅스 사용자 계정을 만들라고 안내합니다. 원하는 사용자 이름비밀번호를 설정하면 끝입니다.

💡 이 비밀번호는 sudo 명령어를 쓸 때 필요하니 기억해두세요. 윈도우 로그인 비밀번호와 다르게 설정해도 됩니다.

특정 리눅스 배포판을 설치하고 싶다면

기본값은 Ubuntu지만, 다른 배포판을 원한다면 먼저 목록을 확인하세요.

1
wsl --list --online

출력 예시:

1
2
3
4
5
6
7
NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
openSUSE-42                     openSUSE Leap 42

원하는 배포판을 골라서 설치합니다.

1
2
3
4
5
# 예: Ubuntu 22.04 설치
wsl --install -d Ubuntu-22.04

# 예: Debian 설치
wsl --install -d Debian

구버전 Windows 10 사용자 (빌드 18362 이상)

위 방법이 안 된다면 수동으로 기능을 활성화해야 합니다.

1
2
3
4
5
# 1단계: Linux 하위 시스템 활성화
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 2단계: 가상 머신 플랫폼 활성화
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

두 명령어 실행 후 재부팅하고, Linux 커널 업데이트 패키지를 수동으로 다운로드해서 설치하세요. 그 다음 아래 명령어로 WSL2를 기본 버전으로 설정합니다.

1
wsl --set-default-version 2

마지막으로 Microsoft Store에서 원하는 Linux 배포판을 검색해서 설치하면 됩니다.


기본 사용법 익히기

설치 상태 확인

1
2
# 설치된 배포판과 버전 확인
wsl -l -v
1
2
3
  NAME            STATE           VERSION
* Ubuntu          Running         2
  Ubuntu-22.04    Stopped         2

* 표시가 기본 배포판입니다. VERSION2이면 WSL2로 실행 중입니다.

WSL 실행과 종료

1
2
3
4
5
6
7
8
# 기본 배포판 실행
wsl

# 특정 배포판 지정해서 실행
wsl -d Ubuntu-22.04

# 모든 WSL 인스턴스 완전 종료 (메모리 반환)
wsl --shutdown

파일시스템 오가기

WSL과 윈도우는 서로의 파일에 자유롭게 접근할 수 있습니다.

1
2
3
4
5
6
7
8
# WSL 안에서 윈도우 C 드라이브 열기
ls /mnt/c/Users/내사용자명

# WSL 안에서 윈도우 탐색기로 현재 폴더 열기
explorer.exe .

# WSL 안에서 윈도우 메모장으로 파일 열기
notepad.exe ./파일명.txt

반대로 윈도우 탐색기 주소창에 \\wsl$\Ubuntu\home\ 을 입력하면 WSL 내부 파일을 탐색기에서 볼 수도 있습니다.

⚠️ 중요한 성능 팁: 프로젝트 파일은 반드시 WSL 안쪽(~/projects/)에 저장하세요. /mnt/c/ 경로를 통해 Windows 드라이브에 접근하면 파일 I/O 속도가 눈에 띄게 느려집니다. git clone, npm install 같은 작업이 몇 배 차이 나기도 합니다.


Windows Terminal로 더 편하게 쓰기

WSL2를 제대로 활용하려면 Windows Terminal을 함께 쓰는 걸 강력히 권장합니다. Microsoft Store에서 무료로 설치할 수 있고, WSL 배포판, PowerShell, CMD를 탭으로 한 창에서 관리할 수 있습니다.

설치 후 + 버튼 옆 화살표를 누르면 설치된 WSL 배포판이 바로 목록에 보입니다.

Oh My Zsh로 터미널 업그레이드하기

기본 bash 쉘도 괜찮지만, zsh + Oh My Zsh 조합을 쓰면 자동완성, 문법 강조, 깃 상태 표시 등을 편리하게 쓸 수 있습니다.

1
2
3
4
5
# zsh 설치
sudo apt update && sudo apt install -y zsh

# Oh My Zsh 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

설치 완료 후 기본 쉘을 zsh로 변경할지 묻는데, y를 입력하면 됩니다.

유용한 플러그인 추가 (~/.zshrc 파일의 plugins=() 항목 수정):

1
2
3
4
5
6
7
8
# ~/.zshrc
plugins=(
  git                    # git 단축 명령어
  zsh-autosuggestions    # 이전 명령어 기반 자동완성 (회색으로 미리 보여줌)
  zsh-syntax-highlighting # 올바른 명령어는 초록색, 잘못된 건 빨간색
  node                   # node 버전 관리
  docker                 # docker 명령어 자동완성
)

zsh-autosuggestionszsh-syntax-highlighting은 별도 설치가 필요합니다.

1
2
3
4
5
6
7
8
# zsh-autosuggestions 설치
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# zsh-syntax-highlighting 설치
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

# 설정 적용
source ~/.zshrc

VS Code 연동하기

WSL2를 설치했다면 VS Code와 연동하는 것이 거의 필수입니다. 설정도 굉장히 간단합니다.

설정 방법

1. VS Code에서 “WSL” 확장을 설치합니다.

확장 마켓플레이스(Ctrl+Shift+X)에서 WSL을 검색하거나, Microsoft의 Remote Development 확장 팩을 설치하면 한 번에 됩니다.

2. WSL 터미널에서 프로젝트 폴더로 이동한 뒤 아래 명령어를 실행합니다.

1
code .

그러면 VS Code가 WSL 모드로 자동 실행됩니다. 왼쪽 아래에 초록색으로 WSL: Ubuntu 같은 표시가 뜨면 성공입니다.

이렇게 하면 무엇이 좋은가요?

  • VS Code 터미널이 WSL bash/zsh로 열립니다
  • 언어 서버(LSP), 린터, 포매터가 모두 WSL 환경의 툴을 사용합니다
  • localhost:3000 같은 포트도 자동으로 포워딩됩니다
  • Python, Node.js, Go 등의 실행 환경도 WSL 것을 씁니다

즉, VS Code는 윈도우에서 열리지만 실제 실행은 전부 리눅스에서 이루어집니다. 설정 파일 하나 없이 완벽한 리눅스 개발 경험을 얻을 수 있습니다.


개발 환경별 설치 가이드

Node.js 개발 환경

Node.js는 버전 관리가 중요하기 때문에 nvm을 사용하는 것을 권장합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# 터미널 재시작 후 Node.js LTS 설치
nvm install --lts
nvm use --lts

# 확인
node -v
npm -v

Python 개발 환경

Python도 버전 관리를 위해 pyenv를 활용하는 게 좋습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 의존성 설치
sudo apt update && sudo apt install -y \
  build-essential libssl-dev zlib1g-dev \
  libbz2-dev libreadline-dev libsqlite3-dev \
  curl libncursesw5-dev xz-utils tk-dev \
  libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# pyenv 설치
curl https://pyenv.run | bash

# ~/.zshrc (또는 ~/.bashrc)에 추가
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# 설정 적용 후 Python 설치
source ~/.zshrc
pyenv install 3.12.0
pyenv global 3.12.0

Git 설정

WSL 안에서 Git을 쓰려면 기본 설정을 잡아주세요.

1
2
3
4
5
git config --global user.name "내 이름"
git config --global user.email "이메일@example.com"

# Windows 줄바꿈 문자 자동 변환 방지 (중요!)
git config --global core.autocrlf input

Docker 연동하기

WSL2는 Docker를 가장 쾌적하게 사용할 수 있는 환경입니다.

Docker Desktop을 쓰는 경우

Docker Desktop을 설치한 뒤 아래 설정을 확인하세요.

Docker Desktop → Settings → General → Use the WSL 2 based engine 체크

이렇게 하면 Windows와 WSL 양쪽에서 docker 명령어를 동일하게 쓸 수 있습니다.

특정 WSL 배포판에서 Docker를 쓰려면 추가 설정도 필요합니다.

Docker Desktop → Settings → Resources → WSL Integration → 사용할 배포판 토글 ON

Docker Desktop 없이 직접 설치하는 경우

개인 프로젝트나 소규모 팀은 Docker를 WSL 안에 직접 설치하는 방법도 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# Docker 공식 저장소 추가
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# sudo 없이 docker 명령어 쓰기
sudo usermod -aG docker $USER

# Docker 데몬 시작 (WSL2는 systemd 사용 시 자동 시작 가능)
sudo service docker start

참고: 2026년 기준 Docker Desktop은 직원 250명 초과 또는 연매출 $10M 이상인 기업에서 유료 라이선스가 필요합니다. 개인 개발자와 소규모 팀은 무료입니다.


WSL2 세부 설정 다듬기

.wslconfig: 리소스 한도 설정

WSL2는 기본적으로 시스템 메모리의 50%까지 사용할 수 있습니다. 메모리가 부족하거나 WSL에 너무 많이 할당하고 싶지 않다면 조정할 수 있습니다.

Windows의 사용자 홈 폴더(C:\Users\사용자명\)에 .wslconfig 파일을 만들고 아래 내용을 작성하세요.

1
2
3
4
5
6
7
8
[wsl2]
memory=8GB         # WSL2에 할당할 최대 메모리
processors=4       # 사용할 CPU 코어 수
swap=2GB           # 스왑 파일 크기

# 네트워크 설정 (선택사항)
networkingMode=mirrored   # Windows IP와 동일한 IP 사용 (Windows 11 22H2+)
dnsTunneling=true         # VPN 환경에서 DNS 문제 해결

설정 변경 후엔 wsl --shutdown으로 WSL을 재시작해야 적용됩니다.

wsl.conf: 배포판별 설정

WSL 배포판 내부(/etc/wsl.conf)에서 해당 배포판의 동작을 세부 설정할 수 있습니다.

1
sudo nano /etc/wsl.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[boot]
systemd=true        # systemd 활성화 (서비스 자동 시작 등)

[automount]
enabled=true        # Windows 드라이브 자동 마운트
options="metadata"  # 리눅스 파일 권한 정보 저장

[network]
generateResolvConf=true  # DNS 설정 자동 생성

[interop]
appendWindowsPath=true  # Windows PATH를 WSL PATH에 추가

systemd 활성화를 하면 systemctl 명령어로 서비스를 관리할 수 있어, 일반 리눅스 서버처럼 사용하기가 훨씬 편해집니다. Docker나 Nginx 같은 서비스를 부팅 시 자동 시작하게 설정할 수도 있습니다.


GPU 활용하기 (머신러닝 / AI 개발)

NVIDIA 그래픽카드가 있다면 WSL2에서도 GPU를 직접 쓸 수 있습니다. TensorFlow, PyTorch 등 딥러닝 프레임워크도 그대로 돌아갑니다.

설정 순서

1단계: Windows에 최신 NVIDIA 드라이버를 설치합니다.

2단계: WSL2를 업데이트합니다.

1
wsl --update

3단계: WSL2 안에서 CUDA 툴킷을 설치합니다. (Ubuntu 22.04 기준)

1
2
3
4
5
6
7
8
# CUDA 저장소 추가
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-3

# GPU 인식 확인
nvidia-smi

⚠️ 주의: WSL2 내부에 NVIDIA GPU Linux 드라이버를 별도로 설치하면 안 됩니다. Windows 드라이버가 자동으로 WSL2에 연결됩니다. CUDA 툴킷만 설치하면 됩니다.


자주 쓰는 명령어 모음

WSL 관리 명령어

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 설치된 배포판 목록 확인
wsl -l -v

# 기본 배포판 변경
wsl --set-default Ubuntu-22.04

# 특정 배포판을 WSL2로 변환
wsl --set-version Ubuntu 2

# WSL 업데이트
wsl --update

# WSL 전체 종료 (메모리 즉시 반환)
wsl --shutdown

배포판 백업 및 복원

1
2
3
4
5
6
7
8
# 배포판 내보내기 (백업)
wsl --export Ubuntu C:\backup\ubuntu-backup.tar

# 배포판 가져오기 (원하는 경로에 복원)
wsl --import Ubuntu C:\wsl\ubuntu C:\backup\ubuntu-backup.tar

# 배포판 초기화 (삭제 후 재설치)
wsl --unregister Ubuntu

자주 발생하는 문제 해결

문제 1: 설치 중 “0x80070003” 또는 “0x80070057” 오류

BIOS에서 가상화(Virtualization)가 꺼져 있을 가능성이 큽니다. PC를 재부팅해서 BIOS로 진입한 다음, Intel CPU라면 VT-x, AMD CPU라면 AMD-V(또는 SVM Mode)를 Enabled로 바꿔주세요.

문제 2: wsl 명령어가 없다고 나와요

PowerShell을 관리자 권한으로 실행했는지 확인하세요. 또는 Windows 기능 켜기/끄기에서 “Linux용 Windows 하위 시스템"이 체크되어 있는지 확인하세요.

문제 3: 파일 작업이 너무 느려요

/mnt/c/, /mnt/d/ 같은 경로는 윈도우 NTFS 파일시스템에 접근하는 거라 느립니다. 프로젝트를 WSL 내부(~/projects/)로 옮기면 눈에 띄게 빨라집니다.

1
2
3
4
# 홈 디렉토리에 projects 폴더 만들고 거기서 작업
mkdir ~/projects
cd ~/projects
git clone https://github.com/...

문제 4: WSL2 메모리를 너무 많이 먹어요

WSL2는 사용한 메모리를 자동으로 반환하지 않는 경우가 있습니다. .wslconfig에서 메모리 상한선을 설정하거나, 사용 후 wsl --shutdown으로 완전히 종료하면 메모리가 바로 반환됩니다.

문제 5: VPN을 쓰면 인터넷이 안 돼요

WSL2는 기본적으로 NAT 방식을 써서, VPN을 켜면 WSL2의 네트워크가 끊기는 경우가 있습니다. .wslconfig에 아래 옵션을 추가해 보세요. (Windows 11 22H2 이상)

1
2
3
[wsl2]
networkingMode=mirrored
dnsTunneling=true

문제 6: systemctl 명령어가 안 돼요

/etc/wsl.confsystemd=true 설정이 있는지 확인하고, wsl --shutdown 후 재시작하세요.


마치며

WSL2는 윈도우 개발 환경에서 정말 큰 변화를 가져다줍니다. 예전처럼 리눅스 전용 툴을 못 쓰거나, 맥과 다른 환경 때문에 고생하는 일이 크게 줄어듭니다.

처음 설치할 때는 조금 낯설게 느껴질 수 있지만, 익숙해지면 윈도우와 리눅스의 장점을 동시에 누릴 수 있습니다. 특히 VS Code + WSL2 + Docker 조합은 2026년 현재 윈도우에서 쓸 수 있는 가장 강력한 개발 환경 중 하나라고 자신 있게 말할 수 있습니다.

wsl --install 하나로 시작해 보세요. 생각보다 훨씬 쉽습니다.


참고 자료