WSL 2 에서 GUI 환경 사용하기


윈도우 10이 업데이트 되면서 WSL 2 라는 것을 쓸 수 있게 되었다. WSL 2 는 Windows Subsystem for Linux 2 이며, Windows 10 2020년 5월 업데이트 이후부터는 사용할 수 있다.

물론, CPU 와 메인보드 조합에서 몇가지 조건을 충족시켜야 한다. WSL 2 는 Hyper-V 를 사용하므로, CPU 에서 Hyper-V 를 쓸 수 있어야 한다. 그리고, 소프트웨어적으로는 같은 기능을 사용하는 다른 프로그램과 한 시스템에 같이 설치해서 사용할 수는 없다.

이러한 조건이 충독되면, 윈도우 10의 버전부터 확인해 보자. 시작 메뉴 - Windows PowerShell - Windows PowerShell 실행 (이때 마우스 오른쪽 버튼 눌러서 관리자로 실행 을 선택하여 관리자 권한으로 실행하도록 한다.) PowerShell 창이 열리면 winver 를 입력하면, 위에 큼직하게 Windows 10 이라고 찍힌 창이 화면에 나타나는데, 거기에 Microsoft Windows 버전 2004 (OS빌드 19041.450) 이런 비슷한 글씨가 적혀 있을텐데, 버전 2004 라고 되어 있으면 된다. 앞으로 업데이트 되면 2005, 2006 이 되겠지만, 일단 지금 시점에서는 2004 …

PowerShell 창에서 WSL 을 활성화시키는 명령을 실행하자.

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

다음 명령은 VM Platform 을 활성화시키는 명령이다.

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

그리고 https://docs.microsoft.com/ko-KR/windows/wsl/wsl2-kernel 에 접속해서 리눅스 커널 업데이트를 다운받아서 실행시키자. 설치가 완료되면 리부팅하면 된다.

리부팅아 되면, 아까처럼 Windows PowerSheel 을 관리자 권한으로 실행시킨 후,

wsl --set-default-version 2 

를 실행하자.

윈도의 시작메뉴 - Microsoft Store 를 실행하고, 오른쪽 위에 보이는 검색을 누른 후 linux 를 검색하자.

몇가지가 나오는데, 이 중에서 가장 최근에 배포된 Ubuntu 20.04 LTS 를 선택하는 게 편하다. 물론, 데비안이나 칼리 리눅스, 그리고 Microsoft Store 에서 배포하지 않더라도 사용자들이 만든 배포판 WSL 2 용 배포판 이미지가 웬만한 배포판들은 다 있으니 그걸 찾아서 다운로드 받아서 설치해도 된다.

보다 자세한 내용은 Linux용 Windows 하위 시스템 설명서, https://docs.microsoft.com/ko-kr/windows/wsl/ 를 참조하면 된다.

WSL 2 로 Ubuntu 20.04 LTS 버전을 설치했다면, 이제 GUI 환경을 설치할 차례다.

내 경우는 xfce4 를 주로 쓰기 때문에 …

sudo apt update && sudo apt upgrade

로 일단 우분투에 설치된 프로그램들을 싹 업데이트 하고 …

sudo apt-get install xfce4 xfce4-goodies
sudo apt-get install xrdp

로 xfce4 와 RDP 의 리눅스 서버를 설치한다.

그런데, 기본적으로 RDP의 기본 TCP/IP 포트가 3389 이므로, 이걸 그대로 쓰면 윈도우 내장 RDP 프로그램이 리눅스에 접속하겠다는 건지, 지금 실행하고 있는 윈도우에 다시 원격으로 접속하겠다는 건지 알 수가 없으므로, 몇가지 추가 설정이 필요하다. 아래 명령에서 두번째 줄에서 포트 번호를 3390 으로 바꾸고 있는데, 다른 것으로 바꿔도 무방하다.

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession

그리고 dbus 와 xrdp 를 실행시킨다. dbus 는 데몬 활성화 시킬 때 오류가 발생하거나 경고 메시지가 나오기도 하는데, 무시하면 된다.

sudo systemctl enable dbus
sudo /etc/init.d/dbus start
sudo systemctl enable xrdp
sudo /etc/init.d/xrdp start

WSL 2 측에서는 모든 준비가 끝났다.

다시 윈도로 돌아가서 … 시작메뉴 - Windows 보조프로그램 - 원격 데스크탑 연결 을 실행한다.

컴퓨터 주소를 입력하는 창이 나오는데, localhost:3390 이라고 입력하고 연결 을 누르면 잠시 시간이 지나면 아래와 같이 xfce4 화면이 나온다.

그런데 .. 제대로 안될 때가 있다. 이럴 땐 이렇게 하자.

  1. WSL2 에서 Ubuntu 를 실행시킨다.
  2. sudo /etc/init.d/xrdp start
  3. 윈도에서 시작메뉴 - Windows 보조프로그램 - 원격 데스크탑 연결에서 주소에 localhost:3390 입력하고 연결

WSL 실행시 xrdp 데몬이 실행이 정상적으로 안되는 경우가 있을 때 발생하는 현상인데 해결 방법은 위와 같다. 그런데, 이런 현상이 좀 잦다.. 음…

Gnome 이나 KDE 를 쓰는 경우도 가능한데, 약간 더 설정이 복잡(?)하기는 하지만 뭐 그게 그거니까 …

* 추가 사항

RDP 로 로그인을 했는데, 색상 프로필을 만들려면 인증이 필요합니다. 라며 비밀번호를 또 물어보는 경우가 있다.

/etc/polkit-1/localauthority/50-local.d/color.pkla 라는 파일을 아래처럼 하나 만들어 두면 된다.

[Allow colord for all users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=yes
ResultInactive=yes
ResultActive=yes

* 추가 사항 2 메뉴에서 글꼴이 깨지거나, 아이콘 밑에 있는 글꼴이 깨져 보일 수 있다. 이런 이유는 글꼴이 제대로 설치 안되어 있을 때… 또는 locale 이 제대로 설정이 안돼 있어서 그렇다.

먼저 글꼴은 …

sudo apt install fonts-unfots-core fonts-naver-d2coding

로 2개만 설치하면 일단 쓰는 데는 지장 없다. locale 은 다음과 같이 설정하면 된다.

sudo apt install languages-pack-ko
sudo locale-gen ko_KR.UTF-8
sudo dpkg-reconfigure locales

이렇게 하면 메뉴에서 고르는 것이 나오는데, 키보드의 커서키로 위아래로 내리면서 ko_KR.UTF-8 을 고르면 된다. 그리고 …

sudo update-locale LANG=ko_KR.UTF-8 LC_MESSAGES=POSIX

라고 하면 된다.

사실 이건 /etc/default/locale 파일에

LANG=ko_KR.UTF-8
LC_MESSAGES=POSIX

라고 적어넣어도 된다, 단, 글꼴과 languages-pack-ko 는 설치되어 있어야 한다.

저렇게 하고 리부팅을 하거나 RDP 에서 로그아웃을 한 후 윈도 터미널 창에서

wsl -t ubuntu-20.04

를 입력해서 wsl 을 중지시킨 후 wsl 을 다시 실행하고 RDP 로 로그인하면 적용된다.


2020/08/28 akpil