복수의 WSL 사용하기 (feat. Windows & WSL)

문제 : WSL2와 Windows의 file system

Windows에 WSL(Windows Subsystem for Linux)이 생겨난 뒤로 코딩 환경이 크게 개선되었다. 현재는 일반 GUI 작업은 윈도우 측에서 수행하고, 코딩이나 개발 관련된 작업은 WSL 측에서 수행한다. WSL에 대한 세부적인 내용은 WSL에 대한 공식 문서를 참조하자.

그러나 다음과 같은 현실적인 문제가 있다.

나는 보통 윈도우 환경에서 VS Code(Visual Studio Code)를 실행시키고, VS Code 안에서 WSL에 접근한 다음, 코딩을 하거나 개발 작업을 수행한다. VS Code는 윈도우에서 동작하지만, 개발 자체는 WSL에서 작업하는 것이다. VS Code에서는 이미 이런 방식을 상정하고 기능을 제공하고 있다. 구체적인 방법은 공식 홈페이지의 글 “Developing in WSL“를 참고하자.

문제는 여기서 발생한다. 나의 경우 주요 작업 파일들을 윈도우 파일 시스템에 만들어 놓고, WSL에서 여기에 접근하여 작업을 하는 방식을 택하고 있다. 그 이유는 다음과 같다.

그래서 나의 경우 다음과 같이 운용하고 있다.

현재 Microsoft에서는 WSL2 사용을 권장하고 있다. 하지만 위와 같은 나의 상황 때문에 file system 사이의 접근이 느린 WSL2를 전적으로 사용하기 어렵다.

방법: 복수의 WSL 설치

이 문제를 다음과 같이 해결해 보았다.

이를 정리하면 다음과 같다.

이제 구체적인 설치 방법을 살펴보자.

WSL 설치에 대해서는 공식 문서에 잘 설명되어 있으므로 명령어 중심으로 정리하겠다. Windows Powershell에서 작업하는 것인지, WSL shell에서 작업하는 것인지 유념하자. Windows Powershell은 관리자 권한으로 실행시켜서 명령을 수행해야 한다.

1st and 2nd WSL 설치

복수의 WSL을 설치하기 위해서는 다음과 같은 과정이 필요하다. 서로 다른 distro를 설치하는 것이 관리하기 쉽다.

# Windows Powershell
# install WSLs
## 옵션: 설치 가능한 distro의 정보를 알아보자.
wsl --list --online
## 1st WSL 설치 (Ubuntu-24.04)
wsl --install Ubuntu-24.04 --name Ubuntu2404-WSL2
## 2nd WSL 설치 (Debian)
wsl --install Debian --name Debian-WSL2
# Windows Powershell
# 추가 설정
## 1st WSL을 WSL version 1로 수정
wsl --set-version Ubuntu2404-WSL1 1
## (optional) 1st WSL을 기본 distro 변경
wsl --set-default Ubuntu2404-WSL1

wsl.exe에서 자주 쓰는 명령어는 다음과 같다.

# Windows Powershell
# 설치 가능한 WSL distro 확인 
wsl --list --online
# local에 설치된 WSL 확인
wsl --list -v
# WSL 실행
wsl -d <WSL name>
# WSL 종료
wsl -t <WSL name>
# 모든 WSL 종료
wsl --shutdown
# wsl 사용법 
wsl --help

Tip

나의 주요 작업 폴더가 윈도우 기준 D:Working라고 해보자. WSL1에서 이곳에 ~/Working으로 접근하고 싶다면 어떻게 해야 할까?

다음과 같이 심볼릭 링크를 걸어주면 된다.

# Ubuntu2404-WSL1
ln -s /mnt/d/Working /home/<wsl username>/Working

Windows와 app 설정 공유

다음 글을 참고하자.

Root 권한 사용 불가

만약 WSL에서 sudo 권한을 쓰려고 할 때 “user is not in the sudoers file.”이라는 메시지와 함께 root 권한에 접근할 수 없다면? 현재 user에서 sudo 권한이 없다는 의미이다. 다음과 같이 해결한다.

# Windows Powershell
# WSL에 root 권한으로 로그인 
# wsl -l -v
wsl -d <WSL name> -u root
# WSL Bash Shell / # as root
# 'sudo'를 쓰기 위해 기본 user를 sudo group에 넣기
usermod -a -G sudo <wsl username>
... ... ... ...
Back