Linux용 Windows 하위 시스템(WSL)은 최근 몇 년 사이 등장한 가장 주목할 만한 소프트웨어 프로젝트 중 하나입니다. 한때 마이크로소프트 윈도우와 리눅스는 서로를 라이벌로 여겼지만, 이제는 듀얼 부팅이나 가상 머신 설정 없이도 윈도우 환경에서 완전한 기능을 갖춘 리눅스 앱을 실행할 수 있습니다.
이미 WSL을 사용하고 있다면, 어떻게 하면 더욱 편리하게 활용할 수 있을까요? 지금부터 WSL 경험을 한층 끌어올려 줄 7가지 팁을 소개합니다.
1. Windows Terminal 설치하기

마이크로소프트 스토어에서 리눅스 배포판을 설치하면 기본적인 터미널 창이 함께 제공되지만, 더 나은 선택지가 있습니다.
그중 대표적인 것이 마이크로소프트가 직접 개발한 Windows Terminal입니다. 이 애플리케이션은 탭 기반 창 관리 등 현대적인 터미널 에뮬레이터에서 기대할 수 있는 다양한 기능을 갖추고 있습니다. 뿐만 아니라 리눅스뿐 아니라 PowerShell과 전통적인 명령 프롬프트까지 하나의 앱에서 처리할 수 있습니다.
아직 다소 아쉬운 점도 있습니다. 설정을 변경하려면 .json 파일을 직접 수정해야 합니다. 다만 커맨드 라인을 자주 사용하는 사용자라면 설정 파일을 편집하는 일은 크게 어렵지 않을 것입니다.
2. 기본 셸 변경하기
우분투를 포함한 대부분의 리눅스 배포판에서 기본 셸은 Bash입니다. Bash에 문제가 있는 것은 아니지만, 리눅스에 익숙한 사용자들은 출고 상태 그대로 만족하지 않고 자신만의 방식으로 시스템을 조정하는 경우가 많습니다. 셸 역시 예외가 아닙니다.
유닉스/리눅스 세계에서 인기 있는 Bash 대안 중 하나가 zsh입니다. 이미 Apple의 macOS에서도 기본 셸로 채택되었으며, 명령어 한 줄로 손쉽게 전환할 수 있습니다.
대부분의 배포판에는 zsh가 기본으로 설치되어 있지 않습니다. 우분투에서는 apt로 간단히 설치할 수 있습니다:
sudo apt install zsh
우분투 WSL에서 기본 셸을 zsh로 변경하려면 다음 명령어를 입력하세요:
chsh -s /usr/bin/zsh
사용 중인 배포판에 따라 셸의 설치 경로는 다를 수 있습니다. 셸 변경 시에는 비밀번호 입력을 요구받습니다. 셸의 위치를 확인하려면 다음과 같이 입력하세요:
which zsh
다른 셸을 사용하고 싶다면 위 명령어에서 zsh 부분을 해당 셸의 이름으로 바꿔주면 됩니다.
3. Windows와 Linux 파일 동시에 접근하기

WSL은 윈도우와 리눅스 프로그램을 나란히 실행할 수 있게 해줄 뿐만 아니라, 양쪽 시스템의 파일에 동시에 접근할 수 있도록 지원합니다.
개발 프로젝트에서 특히 유용한 기능입니다. 윈도우 에디터로 코드를 작성하고, 리눅스 창에서 바로 테스트할 수 있습니다.
윈도우 파일 시스템은 리눅스 쪽에서 /mnt/[드라이브 문자] 디렉터리에 마운트됩니다. 예를 들어 윈도우 드라이브가 C라면 /mnt/c가 됩니다. 이렇게 하면 표준 리눅스 명령어로 모든 윈도우 파일에 접근할 수 있습니다.
반대로 윈도우에서 리눅스 파일 시스템에 접근하는 것도 간단합니다. 윈도우 탐색기에서 \\wsl$ 경로 아래에서 확인할 수 있으며, 윈도우는 리눅스 시스템을 네트워크 드라이브처럼 인식합니다. 우분투 20.04가 설치되어 있다면 \\wsl$\Ubuntu-20.04와 같은 형태가 됩니다.
현재 작업 디렉터리를 탐색기 창으로 바로 열고 싶다면 다음 명령어를 사용하세요:
Explorer.exe .
4. WSL 2로 업그레이드하기

2020년 마이크로소프트는 WSL 2를 선보였습니다. WSL 1에 비해 가장 큰 개선점은 실제 리눅스 커널을 사용한다는 것입니다. 이 커널은 Windows Update를 통해 제공됩니다. 리눅스 시스템 호출을 윈도우 시스템 호출로 변환하는 대신 커널이 직접 실행하기 때문에 성능이 크게 향상됩니다.
WSL 2로 업그레이드하는 방법은 몇 가지 명령어만 입력하면 됩니다. 먼저 하이퍼바이저를 활성화해야 합니다. 관리자 권한으로 PowerShell 창을 열고 다음을 입력하세요:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
그런 다음 컴퓨터를 재시작합니다.
다음으로 리눅스 커널을 다운로드해야 합니다. 마이크로소프트 웹사이트에서 패키지를 받아 설치 프로그램을 실행하세요.
이제 앞으로 설치할 모든 배포판에 대해 버전 2를 기본값으로 설정합니다:
wsl --set-default-version 2
하지만 기존에 설치된 배포판도 WSL 2로 업그레이드하고 싶을 것입니다. 다행히 이 과정 역시 어렵지 않습니다.
설치된 배포판 목록을 확인하려면 다음을 입력하세요:
wsl --list
우분투 20.04 설치 환경을 WSL 2로 전환하려면 --set-version 옵션을 사용합니다:
wsl --set-version Ubuntu-20.04 2
이제 현재 및 향후 모든 설치 환경에서 WSL 2의 고급 기능을 활용할 수 있으며, 커널은 시스템의 다른 드라이버처럼 Windows Update를 통해 자동으로 업그레이드됩니다.
5. 개발 도구 갖추기
리눅스가 개발자들에게 오랫동안 사랑받아온 이유는 에디터, 컴파일러, IDE, 서버 소프트웨어 등 플랫폼에서 사용할 수 있는 방대한 프로그래밍 도구 때문입니다.
WSL 기반 설치 환경에도 다른 시스템과 마찬가지로 좋아하는 도구를 손쉽게 구성할 수 있습니다. 시스템에 내장된 표준 패키지 관리자를 사용하기만 하면 됩니다.
데비안과 우분투에서는 apt, SuSE에서는 YaST, Alpine에서는 APK를 사용합니다. 요컨대, 기존 리눅스 설치 환경에서처럼 WSL에서도 개발 프로젝트에 필요한 모든 것을 찾을 수 있다는 뜻입니다.
C 프로그래머라면 데비안과 우분투에서 제공하는 build-essential 패키지가 유용합니다. 이 패키지에는 GCC 컴파일러, C 라이브러리, Make 유틸리티, 패키지 개발 도구가 포함되어 있습니다. 원래 배포판 자체를 개발하는 사람들을 위해 만들어졌지만, 일반적인 C 개발에도 매우 유용합니다.
설치는 apt 명령어 한 줄이면 충분합니다:
sudo apt install build-essential
패키지 목록을 살펴보며 즐겨 쓰는 도구가 있는지 확인하고, 새로운 도구를 발견하는 재미도 놓치지 마세요.
6. 서비스 관리하기

WSL에서는 대부분 일반적인 명령어를 실행하겠지만, 때로는 서비스를 시작하거나 중지해야 할 때가 있습니다. 웹 애플리케이션을 개발하면서 웹 서버로 테스트해야 하는 상황이 대표적입니다.
다행히 다른 리눅스 배포판에서와 마찬가지로 서비스를 쉽게 시작하고 중지할 수 있습니다.
다만 WSL의 우분투는 조금 다릅니다. Systemd 대신 구식 System V 방식의 init 스크립트를 활용하는 Service 유틸리티로 서비스를 관리합니다.
예를 들어 Apache 서버를 시작하려면 다음 명령어를 입력하면 됩니다:
sudo service apache2 start
이 명령으로 Apache 서버가 실행됩니다. top 명령어로 실행 중인 서비스를 확인하면 프로세스 목록에서 apache2를 볼 수 있습니다.
Apache 서버를 중지하는 것도 마찬가지로 간단합니다:
sudo service apache2 stop
7. 다양한 배포판 탐색하기

WSL의 묘미 중 하나는 여러 배포판을 동시에 실행할 수 있다는 점입니다. 우분투나 SuSE, 데비안과 함께 Alpine Linux처럼 상대적으로 덜 알려진 배포판을 함께 사용해 보는 것은 어떨까요? 새로운 최애 배포판을 발견할 수도 있습니다. 마음에 드는 배포판을 찾았다면 --set-default 플래그로 기본 배포판으로 지정할 수 있습니다:
wsl --set-default distro-name
여기서 distro-name은 기본 배포판으로 지정하고 싶은 시스템의 이름입니다.
WSL 탐험, 지금 시작하세요
WSL은 리눅스와 윈도우가 결합된 새로운 세계를 탐험할 수 있는 무궁무진한 가능성을 제공합니다. 항상 새롭게 발견할 무언가가 있는 듯합니다. 셸을 바꾸고, 터미널을 교체하고, 서비스를 시작·중지하고, 다양한 배포판을 시험해 보세요.
Linux용 Windows 하위 시스템은 일반 리눅스 배포판과 상당히 다른 특징을 많이 가지고 있지만, 윈도우 머신에서 빠르게 리눅스 환경에 접근할 수 있다는 점에서 충분히 활용할 가치가 있습니다.