WSL2 기능에 대한 심층 분석

Windows와 Linux, 두 운영 체제의 조화로운 공존

Windows와 Linux는 오늘날 가장 널리 사용되는 운영 체제입니다. Windows는 사용자 친화적인 환경을 제공하지만, Linux는 뛰어난 사용자 정의 기능으로 개발자, 생산성 향상 사용자, 그리고 학습자들에게 최고의 선택지로 꼽힙니다.

원래는 이 두 운영 체제를 함께 사용하려면 가상화 또는 이중 부팅과 같은 번거로운 과정이 필요했습니다.

하지만 이제 Windows 내에서 Linux에 훨씬 더 편리하게 접근할 수 있는 새로운 방법이 등장했습니다.

바로 ‘WSL2’, 즉 Windows Subsystem for Linux입니다. 이 기능을 통해 Windows 환경에서 Linux 커널에 직접 접근할 수 있게 되었습니다.

이 글에서는 WSL2에 대해 자세히 살펴볼 것입니다. WSL2의 정의, 목적, 설치 과정, 그리고 효과적으로 활용하는 방법까지 상세히 다룰 예정입니다.

그럼, 시작해 볼까요?

Linux용 Windows 하위 시스템(WSL)이란 무엇일까요?

Linux용 Windows 하위 시스템(WSL)은 별도의 가상화 도구나 이중 부팅 없이도 Windows 터미널에서 GNU/Linux 환경에 직접 접근할 수 있게 해주는 혁신적인 기능입니다. 이를 통해 사용자는 Linux 커널을 직접 활용하고, 명령줄 도구, 응용 프로그램, 유틸리티를 포함한 다양한 Linux 기능을 Windows에서 자유롭게 사용할 수 있습니다.

WSL2는 Windows 10과 함께 처음 도입된 WSL1보다 더 향상된 기능과 속도를 제공하는 최신 버전입니다. WSL2는 대부분의 Windows 설치 환경에 이미 포함되어 있으며, 사용자는 간단히 활성화하기만 하면 됩니다.

WSL2는 내부적으로 Windows의 Hyper-V 가상 머신 기술을 사용하기 때문에 WSL1보다 훨씬 빠른 속도를 자랑합니다. WSL2는 Linux와 호환성이 뛰어나며, 실행 속도가 WSL1에 비해 약 20배나 빠릅니다.

요약하자면, WSL2는 Linux 커널에 직접 접근하고자 하는 Windows 사용자들을 위해 개발된 최신 Windows 하위 시스템입니다.

WSL2 시작하기

이 튜토리얼에서는 Windows 터미널을 주요 도구로 활용할 것입니다. Windows 터미널은 명령줄 도구와 WSL 환경을 사용하는 사용자들에게 현대적이고 빠르며 효율적인 인터페이스를 제공합니다.

PC 요구 사항

WSL2는 모든 PC에서 실행 가능한 것은 아닙니다. 시스템이 가상화를 지원해야만 WSL2를 사용할 수 있습니다. 이는 WSL2가 내부적으로 Hyper-V를 사용하기 때문입니다.

또한, SLAT(Second Level Address Translation)를 지원하는 64비트 CPU가 필요합니다. 다행히 거의 모든 최신 CPU는 이를 지원합니다.

디스크 공간의 경우, 최소 1GB 이상의 여유 공간이 필요합니다.

BIOS에서 가상화 활성화

하드웨어 요구 사항을 충족하는 경우, 마더보드의 BIOS 설정에서 가상화를 활성화해야 합니다.

BIOS 설정에 진입하려면 부팅 시 F2, Del, F10과 같은 특정 키를 눌러야 합니다.

BIOS 메뉴에서 AMD의 SVM(Secure Virtual Machines) 또는 Intel의 VTx(Virtualization Technology)를 찾아서 활성화해야 합니다. 설정 변경 후 컴퓨터를 재부팅합니다.

더 자세한 정보가 필요하신 분들은 Hyper-V를 사용하여 Windows 10에 Ubuntu를 설치하는 방법을 다룬 이전 게시물을 참조하시면 도움이 될 것입니다.

WSL2를 위한 Windows 기능 활성화

이제 하드웨어 요구 사항을 충족했으므로 Windows에서 WSL2를 활성화할 차례입니다.

가장 먼저 해야 할 일은 현재 Windows 버전을 확인하는 것입니다. 이를 통해 WSL 지원 여부를 확인할 수 있습니다.

Windows 버전 확인을 위해 키보드에서 CMD + R 키를 누르고 “winver”를 입력합니다. 그러면 Windows 버전 정보가 표시됩니다.

Windows 10 사용자의 경우, 대부분 WSL1을 사용하고 있을 가능성이 높습니다. 하지만 Windows 11 사용자의 대부분은 WSL2를 사용하고 있습니다.

보안을 위해 가상화가 비활성화된 Windows S 버전을 제외하고는, 모든 Windows 10 및 11 버전에서 WSL2를 지원합니다.

Windows S 버전을 사용 중인 경우, Windows Home 또는 Pro와 같은 다른 버전으로 변경해야 합니다.

운영 체제를 변경하려면 설정 > 업데이트 및 보안 > 정품 인증 메뉴로 이동하세요.

WSL2의 원활한 작동을 위해서는 최신 Windows 업데이트도 설치되어 있어야 합니다. 시스템 업데이트를 하려면 설정 > Windows 업데이트 메뉴로 이동하세요.

WSL2를 사용하려면 특정 Windows 기능을 활성화해야 합니다.

제어판 > 프로그램 및 기능으로 이동한 다음 “Windows 기능 켜기/끄기”를 클릭하세요. 그러면 “Windows 기능”이라는 새 창이 나타납니다.

여기에서 “Hyper-V”, “가상 머신 플랫폼”, “Linux용 Windows 하위 시스템”을 찾아 체크 박스를 선택합니다.

변경 사항을 적용하려면 시스템 재부팅이 필요할 수 있습니다.

다음 명령어를 실행하여 Windows 기능을 활성화할 수도 있습니다.

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

WSL2 설치

필수 구성 요소 설정이 완료되었으니, 이제 WSL을 설치할 차례입니다.

Windows 터미널(Windows 10) 또는 Windows PowerShell(Windows 11)을 열고 다음 명령을 입력하세요.

$ wsl

# 결과

Copyright (c) Microsoft Corporation. All rights reserved.
Usage: wsl.exe [Argument]
Arguments:
.....

이 메시지는 WSL을 사용할 수는 있지만 아직 활성화되지 않았음을 의미합니다.

WSL을 설치하려면 관리자 권한으로 다음 명령을 실행하세요.

$ wsl --install

# 결과

PS C:UsersLogan99> wsl --install
Installing: Virtual Machine Platform
Virtual Machine Platform has been installed.
Installing: Windows Subsystem for Linux
Windows Subsystem for Linux has been installed.
Installing: Ubuntu
Ubuntu has been installed.
The requested operation is successful. Changes will not be effective until the system is rebooted.

참고: 이미 Windows 기능을 통해 활성화한 경우, 이 메시지는 표시되지 않을 수도 있습니다. 대신 다음과 유사한 결과를 얻게 될 것입니다. (그렇다면 다음 섹션으로 넘어가세요.)

Ubuntu is already installed.
Launching Ubuntu...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
New password:
Retype new password:

WSL 버전 확인을 위해서는 `wsl –version` 명령을 사용하세요.

$ wsl --version

# 결과

WSL version: 1.1.6.0
Kernel version: 5.15.90.1
WSLg version: 1.0.50
MSRDC version: 1.2.3770
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.1413

WSL 버전 1.1.6.0이 이미 설치되어 있음을 알 수 있습니다. 따라서 작동하지 않거나 오류가 발생한다면, WSL이 실제로 설치되지 않은 것일 수 있습니다.

WSL2로 변경하려면 다음 명령을 실행하세요.

$ wsl --set-default-version 2

WSL이 이미 시스템에 설치되어 있기 때문에 이 메시지가 나타납니다.

Windows 스토어에서도 WSL을 설치할 수 있습니다. 스토어를 실행하고 “Linux용 Windows 하위 시스템”을 검색하세요.

“받기”를 클릭하고 설치가 완료될 때까지 기다립니다.

설치가 완료되면 “열기”를 클릭하세요. 그러면 “Linux용 Windows 하위 시스템에 설치된 배포판이 없습니다.”라는 메시지와 함께 Windows 터미널이 실행됩니다.

WSL에 배포판 설치

WSL 설치를 완료했으면 이제 Linux 배포판을 설치할 차례입니다.

기본적으로 WSL은 Ubuntu LTS 버전을 설치합니다. 이를 위해 다음 명령을 실행해야 합니다.

$ wsl --install

Ubuntu 설치가 시작됩니다. 설치 과정 중에 새로운 UNIX 사용자 이름과 암호를 설정하라는 메시지가 표시될 것입니다.

설치가 완료되면 Ubuntu Linux 프롬프트가 나타납니다. 여기에서 모든 Linux 명령어를 사용할 수 있습니다. Ubuntu 버전을 확인해 봅시다.

$ lsb_release -a

# 결과

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

이제 Linux 커널에 접근할 수 있게 되었습니다.

배포판을 종료하려면 다음 명령을 입력해야 합니다.

$ exit

# 결과

[email protected]:/mnt/c/Users/Logan99$ exit
logout

더 많은 배포판 설치

Fedora, Debian, OracleLinux_8_5와 같은 다른 배포판도 설치할 수 있습니다. 사용 가능한 배포판 목록을 보려면 다음 명령을 입력하세요.

$ wsl --list --online

Debian을 설치하려면 다음 명령을 입력해야 합니다.

$ wsl --install -d Debian
Or
$ wsl.exe --install Debian

Ubuntu와 마찬가지로 사용자 이름과 암호를 설정하라는 메시지가 표시될 것입니다.

# 결과

이제 Debian 버전을 확인해 봅시다.

$ cat /etc/issue

# 결과

Debian GNU/Linux 11 \n \l

그렇다면 Fedora는 어떻게 설치할 수 있을까요? `wsl –list –online` 명령어를 실행해도 목록에 나타나지 않습니다.

Windows 스토어에서 배포판을 설치할 수도 있습니다.

Windows 스토어를 열고 Linux 배포판을 검색하세요. 사용 가능한 모든 배포판이 표시될 것입니다. 여기서는 공식적으로 지원되는 배포판만 확인할 수 있습니다.

비공식 배포판은 수동으로 검색해야 합니다. 이러한 비공식 배포판은 버그가 있을 수 있으며, 100% 안전하지 않을 수 있다는 점을 유의해야 합니다. 따라서 실험적인 목적으로만 사용하시기를 권장합니다.

“설치”를 클릭하여 시스템에서 해당 배포판을 사용할 수 있도록 하세요.

기본 배포판 설정

설치된 배포판 목록을 보려면 다음 명령을 사용하면 됩니다.

$ wsl --list

Ubuntu 옆에 표시된 “Default” 키워드는 명령 프롬프트에서 “wsl”만 입력했을 때 실행되는 기본 Linux 배포판이 Ubuntu임을 의미합니다.

기본 배포판을 변경하려면 다음 명령어를 입력합니다.

$ wsl --setdefault <배포판 이름>

Debian을 기본 배포판으로 설정하려면 다음 명령을 입력해야 합니다.

$ wsl --setdefault Debian

다음부터 터미널에서 `wsl`을 입력하면 Debian이 실행됩니다.

배포판의 WSL 버전 변경

기본적으로 배포판은 WSL2를 사용합니다. 현재 설치된 배포판과 해당 WSL 버전을 확인하려면 다음 명령을 실행하세요.

$ wsl --list --verbose

# 결과

NAME       STATE    VERSION
* Ubuntu    Stopped     2
  Debian    Stopped     2

여기서 `*` 기호는 기본 Linux 설치를 나타냅니다.

이제 WSL 버전을 2에서 1로 변경하려면 다음 명령을 입력하세요.

$ wsl --set-version Ubuntu 1

그리고 1에서 2로 다시 변경하려면 다음 명령을 입력하세요.

$ wsl --set-vesion Ubuntu 2

참고: 변환 과정은 다소 시간이 걸릴 수 있습니다. 변환 중에는 창을 닫지 마세요.

다른 사용자 이름으로 특정 배포판 실행

특정 배포판을 실행하려면 어떻게 해야 할까요? 다음 명령을 사용하면 됩니다.

$ wsl -d <배포판 이름>
Or
$ wsl --distribution <배포판 이름>

Ubuntu를 실행하려면 다음 명령을 입력하세요.

$ wsl -d Ubuntu

특정 사용자 이름으로 실행하려면 `-user` 옵션과 사용자 이름을 추가해야 합니다.

$ wsl -d <배포판 이름> --user <사용자 이름>

예를 들어, “root” 사용자 이름으로 Debian을 실행하려면 다음 명령을 입력하세요.

$ wsl -d Debian --user root

참고: 존재하지 않는 사용자로 배포판을 실행하면 “사용자를 찾을 수 없습니다”라는 오류가 발생합니다.

Linux 업데이트

Linux 배포판을 업데이트하려면 다음 명령을 사용하면 됩니다.

$ sudo apt update
$ sudo apt upgrade

또한 WSL용 Linux 커널 업데이트를 확인할 수도 있습니다.

$ wsl --update

WSL2와 함께 Visual Studio Code 설정하기

VS Code를 WSL과 함께 사용할 수 있도록 설정할 수 있습니다. 이렇게 하면 VS Code에서 직접 WSL 터미널에 접근할 수 있습니다. Linux 관련 유틸리티 및 도구 체인을 활용하면서 Linux 기반 애플리케이션에서 애플리케이션을 개발할 수 있습니다.

또한 VS Code의 기능을 활용하면서 Windows 관련 생산성 도구에도 접근할 수 있습니다.

이를 위해서는 ‘Remote Development 확장 팩’을 설치해야 합니다. VS Code 확장 탭에서 해당 이름을 검색하여 설치할 수 있습니다.

로컬에서 작업 중이라면 VS Code 메뉴에서 설정할 수 있습니다. 보기 > 터미널을 선택합니다.

터미널이 열립니다. “+” 기호 옆에 “>” 기호가 있습니다. 클릭하면 사용 가능한 WSL 터미널 목록을 볼 수 있습니다.

여기에서 “기본 프로필”을 선택할 수도 있습니다.

이러한 기능들은 VS Code가 `\\wsl$`과 `localhost`에서 실행 중인 모든 디버거에 직접 접근할 수 있기 때문에 가능합니다.

그래픽 애플리케이션 및 WSL2 활용

그래픽 애플리케이션을 사용하려면 WSL2용 올바른 드라이버를 설치해야 합니다. Intel, AMD, Nvidia는 Linux 기반 그래픽 애플리케이션이 원활하게 실행될 수 있도록 WSL용 드라이버를 제공합니다.

하지만 이러한 접근 방식에는 여전히 문제가 있습니다. 우선, 이러한 그래픽 앱 중 일부는 작동하지 않는 기능이 있을 수 있으며, 많은 앱이 전혀 작동하지 않을 수도 있습니다. 따라서 다른 대안을 찾아야 할 수도 있습니다.

요컨대, 이 방법은 시행착오를 거치면서 많은 시간을 소모할 수 있습니다.

Ubuntu를 사용하여 그래픽 애플리케이션을 실행하는 방법에 대한 자세한 내용은 WSL2 관련 가이드를 참조하세요.

Windows의 Docker Desktop WSL2

Hyper-V를 사용하여 로컬 설정을 하지 않으려면 공식적으로 WSL2를 지원하는 Docker Desktop을 사용할 수 있습니다. 이를 통해 Windows에서 Docker 도구를 직접 사용할 수 있어 더욱 빠른 워크플로를 구축할 수 있습니다. 자세한 내용은 관련 가이드를 참조하세요.

Microsoft가 Linux에 진지한 이유

과거 Microsoft는 폐쇄적인 환경에서 Windows와 같은 독점 솔루션을 제공하는 것을 선호했습니다. 사용자들이 Linux 대신 Windows를 계속 사용하도록 하는 것이 목표였습니다.

하지만 2016년, Microsoft는 오픈 소스에 대한 지지를 선언했습니다. 이는 2001년 초 스티브 발머가 Linux를 “암”이라고 불렀던 시점과는 대조적인 모습입니다.

2023년 현재, 상황은 완전히 바뀌었습니다. Microsoft는 Linux를 자사의 생태계에 직접 통합하고 있습니다. 2019년 5월에 WSL2를 발표했고, 2021년 10월에는 Windows 스토어에 WSL2를 도입했습니다. 또한 2022년 11월에는 WSL2 v1.0을 출시했습니다.

더 나아가, Edge 및 Teams와 같은 Microsoft 소프트웨어를 Linux 사용자들이 접근할 수 있도록 했습니다. 또한 Linux 커널과 Linux Foundation의 제품 구성원으로서 적극적으로 기여하고 있습니다.

이 모든 것은 Microsoft가 Linux를 진지하게 받아들이고 있다는 것을 시사합니다. 하지만 일부 회의론자들은 여전히 Microsoft가 Linux를 진심으로 사랑한다고 생각하지 않습니다.

분명한 것은, Microsoft는 Linux에 관심을 가지고 있다는 것입니다. Windows 하위 시스템은 그들이 Linux와 오픈 소스에 관심을 가지고 있다는 증거입니다. 가장 중요한 점은, 사용자들이 가상화나 이중 부팅 없이도 Linux 커널에 원활하게 접근할 수 있기를 원한다는 것입니다.

마지막으로

“개발자에게 가장 적합한 운영 체제” 시대에 개발자들은 이제 두 운영 체제 모두에 접근할 수 있는 방법을 선택할 수 있습니다. WSL2는 다양한 Linux 배포판을 통해 Linux 커널에 대한 접근을 제공하며, 빠른 속도와 Docker와의 호환성을 자랑합니다.

현재 WSL2는 활발하게 개발 중이며, 호환성 문제를 해결하고 개발자들에게 더 많은 권한을 부여하기 위해 노력하고 있습니다. 따라서 WSL2의 미래는 밝아 보이며, Microsoft는 Windows 사용자들이 Linux 커널에 접근할 수 있도록 모든 노력을 다하고 있습니다.

이제 Linux 배포판을 자세히 알아보고, 시스템 관리자 및 개발자로서의 역량을 향상시켜 보세요.