WSL2 개념과 설치 방법



1. WSL이란?

1.1. WSL의 개념

리눅스용 윈도우 하위 시스템(Windows Subsystem for Linux, WSL)은 윈도우 10에서 네이티브로 리눅스 실행 파일(ELF)을 실행하기 위한 호환성 계층입니다. 즉, 윈도우에서 리눅스를 사용하기 위한 도구라고 보면 됩니다. 기존에 윈도우에서 Virtual Machine과 같은 도구를 사용하여 느린 리눅스를 사용하거나, 우분투를 따로 설치하여 부팅 때 OS를 선택하여 사용하는 방식보다 훨씬 더 빠르고 효율적이라고 볼 수 있습니다. 속도는 Virtual Machine 보다 훨씬 빠르고, 재부팅을 해야 할 필요가 없습니다.

image winver 검색 후 실행

윈도우 10 에서는 WSL를 지원하며, 성능이 더 향상된 버전인 WSL2는 windows 2004(20H1) version에서 지원합니다. 상세 버전을 확인하는 방법은 윈도우 버튼 + R -> winver입력 후 실행을 통하여 확인할 수 있습니다.

image winver을 통하여 버전 확인

기존 윈도우에서 리눅스를 이용한 개발을 하기 어려웠던 것을 크게 개선하고 있습니다. 향후 맥 환경이 아니라 윈도우 환경에서 개발하는 개발자가 많아질 수도 있을 것 같습니다.

1.2. WSL1과 WSL2 비교

기능 WSL 1 WSL 2
Windows와 Linux 통합
빠른 부팅 시간
작은 리소스 공간
관리 VM
전체 Linux 커널
전체 시스템 호출 호환성
현재 버전의 VMWare 및 VirtualBox로 실행
OS 파일 시스템 간 성능

WSL2는 기존과 다른 VM 환경을 가지고 있습니다. WSL 1에서 Linux의 System Call을 Windows API로 변환하는 구조였다고 하면, WSL 2에서는 윈도우즈에 리눅스 커널을 아얘 올려버렸다고 합니다.

WSL1이 윈도우의 api를 이용하기 위하여 변환과정을 거쳤기 때문에, 속도적인 측면에서 불리하였고 일부 api는 변환이 불가능하였습니다. 하지만, WSL2는 linux 커널을 포함하고 있기 때문에, linux의 모든 api를 지원합니다.

2. WSL 2 설치하기

2.1. Windows Terminal 설치하기

Default로 제공하는 윈도우의 CMD는 UI나 사용이 다소 불편하였습니다. 맥과 같이 다양한 terminal을 제공하지 않았는데요. Windows Store에서도 이제 향상된 terminal을 제공합니다. 이 터미널은 Microsoft에서 직접 제작한 프로그램으로 기존 cmd 대비 향상된 UI와 개발환경을 제공하고 있습니다.

image windows store에서 terminal을 검색한 결과

실제 terminal 환경은 아래와 같습니다. 오른쪽 상단에 있는 아래 방향의 화살표를 눌러서 Ubuntu와 같은 linux 환경을 수행할 수 있습니다(이미 이미지가 설치되어 있기 때문에 저는 보이지만, 이미지가 없는 경우에는 보이지 않을 수 있습니다).

image terminal 화면

2.2. WSL2 활성화 명령어 실행

Windows 10에 Linux용 Windows 하위 시스템 설치 가이드에서 리눅스 설치에 필요한 명령어를 확인할 수 있습니다. 이 때, 터미널은 아래의 2가지 명령어를 수행해야 WSL2를 설치할 수 있습니다. WSL2가 아닌 WSL의 경우는 다소 상이하니 위의 링크를 참고해주세요.

WSL feature Enable

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

Virtual Machine Platform feature Enable

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2.3. 원하는 Linux 버전 설치하기

  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS
  • openSUSE Leap 15.1
  • SUSE Linux Enterprise Server 12 SP5
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux
  • Debian GNU/Linux
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL

위와 같은 수많은 버전을 지원하고 있습니다. 저는 Ubuntu를 설치해보겠습니다. Windows store에서 검색하여 원하는 os를 설치합니다.

image wsl ubuntu 설치하기

2.4. WSL2로 변환하기

다음은 설치한 linux 버전을 wsl2로 변경하는 일이 필요합니다. 설치한 각 Linux 배포에 할당된 WSL 버전을 먼저 확인합니다.

wsl --list --verbose

저의 경우에는 아래와 같은 결과를 출력합니다.

  Name           State         Version
* Ubuntu         Running       1

다음은 해당 버전을 WSL2로 만들어 주기 위한 작업을 수행합니다. 아래의 형태와 같이 명령어를 수행해줍니다. 예시에 있는 명령어처럼 입력해주면 됩니다.

wsl --set-version <distribution name> <versionNumber>
예시) wsl --set-version Ubuntu 2

아래의 명령어를 이용하여 WSL 2를 기본 버전으로 설정 해줍니다.

wsl --set-default-version 2

변환이 완료되면 아래와 같은 메세지가 뜹니다!

변환이 진행 중입니다.   정도 걸릴  있습니다...
WSL 2와의 주요 차이점에 대한 자세한 내용은 https://aka.ms/wsl2 참조하세요
변환이 완료되었습니다.

이후에 적용된 버전을 살펴보면 아래와 같이 변경된 것을 확인할 수 있습니다. 이제 wsl2를 사용할 수 있습니다!

  Name           State         Version
* Ubuntu         Running       2

혹시, 위와 같이 나오지 않는다면 아래와 같이 명령어를 입력하여 wsl을 재부팅시키고 확인해주세요.

wsl -t Ubuntu

출처

  • https://www.44bits.io/ko/post/wsl2-install-and-basic-usage
  • https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9%EC%9C%88%EB%8F%84%EC%9A%B0%ED%95%98%EC%9C%84_%EC%8B%9C%EC%8A%A4%ED%85%9C
  • https://docs.microsoft.com/ko-kr/windows/wsl/install-win10
  • https://docs.microsoft.com/ko-kr/windows/wsl/compare-versions
  • https://ryanking13.github.io/2019/05/07/Announcing-WSL-2.html