Windows 11의 WSL2에서 리눅스 X Window 응용프로그램 실행하기

By | 2021-11-29

언제부턴가 마이크로소프트가 오픈소스 진영에 호의적인 행동을 보이기 시작했다.

그리고 놀랄만한 도구를 마이크로소프트에서 무료로 공개하고 있다. 대표적으로 VSCODE라고 불리는 Visual Studio Code라는 개발자도구가 있다. 그리고 최근 또 하나의 획기적인 작품(?)을 공개했으니… 바로 WSL2에서 GPU 가상화를 통한 X Window 응용프로그램 지원이다.

쉽게 말해 Windows 에서 지원하고 있는 WSL(Windows Subsytem for Linux)에서 리눅스의 GUI 응용프로그램들을 실행할 수 있다는 얘기다.

오래 전, 유닉스와 리눅스 환경에서 실행되는 X Window 프로그램들을 Windows에서 Windows 응용프로그램들과 함께 실행할 수 있었으면 좋겠다는… 당시로서는 말도 안되고 상상조차도 할 수 없던 바램이 있었다. 그래서 Windows 용 X Server를 설치하고 억지로 억지로 네트워크를 통해 다른 유닉스나 리눅스에 X Window 터미널을 실행시켜 접속하고 작업을 하기도 했었다.

그런데… 그런 상상을 한지 20년도 더 지난 지금 그 상상이 현실이 되었다.

Windows 11에 포함된 WSL2에서 실제로 가능해졌다. 사실 WSL을 처음 만져보면서 마이크로소프트의 개과천선에 놀랐었다. 하지만 X Window까지 지원하리라고는 생각하지 못했었는데 언제부턴가 WSL에서 X Window 지원을 위해 작업을 하고 있다는 소문이 들리더니 결국은 현실이 되었다.

하지만 Windows 11의 WSL2의 리눅스 커널에서 공식적으로 X Server를 지원함에도 Windows에 X Server를 설치하고 DISPLAY만 Windows로 설정하여 X Window 응용프로그램을 실행하는 편법을 소개하거나 MSTSC 클라이언트를 통해 접속하는 방법을 소개하는 블로그도 꽤나 많다. 하지만 이제 그럴 필요가 없다.

WSL에서 X Window 응용프로그램을 실행시키는 방법을 포스팅한다.

vGPU를 지원하는 그래픽 드라이버 설치

WSL의 가상화에서  X Window의 GUI API를 실행하기 위해서는 GPU(Graphic Process Unit)의 가상화가 이루어져야 가능한 것으로 보인다. 그래서 마이크로소프트의 WSL 관련 기술자료에서는 주요 GPU 벤더에서 제공하는 vGPU를 지원하는 드라이버 다운로드 페이지를 제공하고 있다.

https://docs.microsoft.com/ko-kr/windows/wsl/tutorials/gui-apps

위의 마이크로소프트 사이트에 가면 다음과 같이 각 GPU 벤더의 다운로드 페이지 링크를 제공한다.

WSL에서 Linux GUI 앱 실행
WSL에서 리눅스 GUI 앱 실행을 위한 주요 GPU 벤더의 vGPU 지원 드라이버 다운로드 페이지 링크

인텔의 vGPU 지원 그래픽 드라이버를 다운로드 받아 설치한다.

인텔의 vGPU 지원 그래픽 드라이버 다운로드 및 설치

WSL2 업데이트 및 버전 2 리눅스 실행

vGPU 지원 그래픽 드라이버를 설치하고 나면 Windows 11의 WSL 실행하기 위해 Windows Power Shell 또는 Command 창 또는 Windows Terminal을 관리자 권한으로 실행한다.

윈도 파워쉘 실행
Windows 파워쉘 실행

먼저 WSL 엔진을 업데이트 한다. ( wsl –update )

WSL 업데이트 및 셧다운
WSL 업데이트 및 셧다운

그리고 WSL로 실행중일 수도 있는 가상머신들을 모두 종료한다.  ( wsl –shutdown )

여기서 중요한 점은 wsl에 설치된 리눅스가 모두 아래와 같이 VERSION 2 로 설치되어 있어야 한다. VERSION 1에서는 X Window 응용프로그램을 실행할 수 없다.

wsl 리눅스 가상머신의 버전 확인
wsl 리눅스 가상머신의 버전 확인

WSL에 설치된 리눅스의 가상머신 버전 확인은 wsl -l -v 명령으로 수행한다.

버전이 2 로 확인되면 다음의 명령을 통해 리눅스를 실행한다. 이 포스트에서는 Kali Linux (칼리 리눅스)를 기준으로 설명한다. 가상 머신의 실행은 wsl – d kali-linux 로 실행한다. -d 옵션 뒤에의 리눅스는 앞에서 wsl -l -v 명령의 결과로 출력되는 리눅스 머신의 NAME의 값을 지정하면 된다.

 wsl 의 가상머신을 명령행에서 실행하기
wsl 의 가상머신을 명령행에서 실행하기
만약 우분투라면 마이크로소프트의 공식 지원 페이지를 참고하는게 좋겠다.https://docs.microsoft.com/ko-kr/windows/wsl/tutorials/gui-apps

리눅스 업데이트 및 GUI 패키지 설치 (칼리 리눅스 – Kali Linux)

칼리 리눅스가 실행되면 먼저 리눅스를 업그레이드 한다. 우선 데비안 계열과 우분투 계열 모두 동일한 명령으로 패키지 정보를 업데이트가 가능하다.  ( sudo apt update )

칼리 리눅스 패키지 정보 업데이트

다음은 실제 업그레이드를 실행한다. ( sudo apt upgrade )

칼리 리눅스 업그레이드 패키지 설치

다음은 칼리 리눅스의 X Window 패키지를 새로 설치하거나 업그레이드 한다. ( sudo apt install kali-desktop-xfce )

칼리리눅스에 x window 패키지 설치

이 과정은 꽤 시간이 걸릴 수 있는데… 다음에 설치할 칼리 리눅스 앱의 설치에 비하면… 껌이다. -.-

X Window 패키지 설치

칼리 리눅스의 기본적인 도구들을 설치한다. 이 패키지들은 해킹 또는 모의해킹이나 취약점 점검에 사용되는 도구들이다. 그리고 X Window 응용프로그램으로 개발된 점검 도구들도 함께 설치된다. ( sudo apt install kali-linux-default )

칼리리눅스의 도구 설치를 위한 다운로드

이 작업은 징그럽게 오래 걸렸다. 다운로드에만 거의 14시간 이상 걸린 듯 하다. 다운로드가 끝나면 자동으로 설치가 진행된다.

다운로드 받은 칼리리눅스 응용프로그램 설치

일단 편한 X Window 터미널 응용프로그램인 gnome-terminal 을 설치해본다.

 gnome-terminal 설치
gnome-terminal 설치

WSL에서 리눅스 X Window 응용프로그램 실행

여기까지 문제 없이 진행되었다면 wsl에 설치된 리눅스에서 gnome-terminal 명령을 실행해본다.

wsl에서 x window 터미널 실행 - gnome-terminal
wsl에서 x window 터미널 실행 – gnome-terminal

오옷… Windows 터미널과 x window 터미널 (gnome-terminal)이 함께 실행되었다.

만약 여기서 디스플레이할 터미널을 찾을 수 없다거나 display 라는 단어가 들어간 에러가 발생한다면 다음의 명령어를 실행한 뒤 gnome-terminal을 실행시켜 본다.

$ DISPLAY=:0.0;export DISPLAY

이제 칼리리눅스의 다른 앱 중 하나를 실행해본다. burpsuite 다.

윈도탐색기, 엑셀과 칼리리눅스의 버프스위트와 그놈터미널이 함께 실행된 화면

오래(?) 살다보니 상상만 하던 이런 세상이 오기도 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다