여기서는 VNC를 이용해 자신의 컴퓨터에서 작동 중인 WSL(Windows Subsystem for Linux)2를 GUI가 있는 리눅스 데스크톱으로 변신시키고 거기에서 QGIS를 실행하는 방법에 관해 설명한다. 이곳 내용의 대부분은 https://gist.github.com/tdcosta100/385636cbae39fc8cd0937139e87b1c74 을 참조하였다. 

 

전체적인 큰 과정은 다음과 같다. 

 

1. WSL2에 리눅스 데스크톱 패키지를 설치한다. 

2. WSL2에 VNC 서버를 설치한다. 

3. 관련 설정을 한다. 

4. Windows에 VNC 클라이언트를 설치하고 실행하여 WSL2의 VNC 서버를 활용해 리눅스 데스크톱을 활용한다

 

위 과정을 하나씩 자세히 실행하면 아래와 같다. 

 

0. 리눅스 패키지 정보 최신화

$ sudo apt update
$ sudo apt upgrade

 

1. WSL2에 리눅스 데스크톱 패키지 설치 

리눅스에는 각종 패키지를 쉽게 설치하게 도와주는 tasksel이 있다. 하지만 WSL2에는 설치가 안 되어 있을 것이기에 이를 설치해 준다. 

sudo apt install tasksel

이후 tasksel을 실행한다. 

sudo tasksel

tasksel을 실행하면 아래와 같은 화면이 나온다. 여기서 Ubuntu Dekstop, Mate Desktop 등 설치하고 싶은 Desktop을 선택해 주면 된다.  

 

2. WSL2에 VNC 서버 설치

VNC 서버를 WSL2에 설치하는 법은 매우 간단하다. 아래와 같이 입력해 주면 간단히 VNC 서버가 설치된다. 

$ sudo apt install tigervnc-standalone-server

 

3. WSL2에 리눅스용 닷넷 런타임 설치 

본 방식에서 사용하는 systemd-genie가 닷넷을 필요로 한다. 따라서 아래와 같이 입력하여 닷넷 런타임을 설치한다. 

$ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
$ sudo apt update
$ sudo apt install dotnet-runtime-3.1

 

4. systemd-genie 설치 

$ curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
$ sudo apt install systemd-genie

위와 같이 하면 이제 WSL2 쪽에 필요한 프로그램은 모두 설치된 것이다. 이제 본격적인 환경 설정을 해줘야 한다. 

 

5. VNC 서버 암호 설정

아래처럼 VNC 서버의 현재 사용자 암호를 설정해 준다. 사용자, 루트, gdm에 사용되는 암호다. 다른 사용자없이 혼자 사용할 거면 모두 같아도 된다. 하지만, 암호가 없으면 VNC 서버에 접속할 수 없다. 

$ vncpasswd
$ sudo vncpasswd
$ sudo -u gdm vncpasswd

 

6. 기본 X를 Xvnc로 변경

6.1 기존 Xorg 스크립트 백업

$ sudo mv /usr/bin/Xorg /usr/bin/Xorg_old

6.2 새로운 Xorg 스크립트 생성

$ sudo vim /usr/bin/Xorg
혹은 
$ sudo nano /usr/bin/Xorg

새로운 Xorg 스크립트를 만들어 준 뒤 그 안에 아래와 같은 스크립트를 넣어주고 저장한다. 

#!/bin/bash
for arg do
  shift
  case $arg in
    # Xvnc doesn't support vtxx argument. So we convert to ttyxx instead
    vt*)
      set -- "$@" "${arg//vt/tty}"
      ;;
    # -keeptty is not supported at all by Xvnc
    -keeptty)
      ;;
    # -novtswitch is not supported at all by Xvnc
    -novtswitch)
      ;;
    # other arguments are kept intact
    *)
      set -- "$@" "$arg"
      ;;
  esac
done

# Here you can change or add options to fit your needs
command=("/usr/bin/Xvnc" "-geometry" "1024x768" "-PasswordFile" "${HOME:-/root}/.vnc/passwd" "$@") 

systemd-cat -t /usr/bin/Xorg echo "Starting Xvnc:" "${command[@]}"

exec "${command[@]}"

위 스크립트 중 1024x768은 화면 사이즈다. 그 수치를 1920x1080처럼 자신의 모니터에 맞게 적절하게 변경해 주면 된다. 그리고 위 스크립트를 실행가능하도록 권한을 변경해 준다. 

$ sudo chmod 0755 /usr/bin/Xorg

 

7. systemd-genie 관련 설정 변경

/usr/lib/genie/deviated-preverts.conf 파일을 vim이나 nano를 이용해 아래와 같이 변경해 준다. 

{
  "daemonize": "/usr/bin/daemonize"
}

 

8. systemd-genie 실행

$ genie -s

위와 같이 입력함으로써 WSL2측에서 할 작업은 모두 마친 것이고, 이제 VNC 서버가 작동을 시작하게 된다. 이 명령을 실행하면 아래 그림처럼 터미널 프롬프트 마지막에 -wsl이 추가된다. 현재 VNC 서버가 작동 중이라고 알려 주는 것.

 

9. Windows에 VNC Client 설치하고 접속 

RealVNC(https://www.realvnc.com/pt/connect/download/viewer/), TightVNC(https://www.tightvnc.com/download.php), TigerVNC(https://bintray.com/tigervnc/stable/tigervnc/1.10.1), UVNChttps://www.uvnc.com/downloads/ultravnc.html) 등에서 적당한 VNC Client를 다운받아 설치한다. 이후 VNC 클라이언트를 아래처럼 실행해 localhost에 접속하면 된다. 

 

주의: 여기에 암호를 입력하고 로그인에 성공하면 그냥 빈화면만 나타난다. 당황하지 말고 localhost:5901을 입력해서 다시 접속하면 실제 로그인이 된 리눅스 데스크톱 화면을 보게 된다.(lightGDM을 이용할 경우 로그인 화면에서 바로 리눅스 데스크톱 화면으로 바뀜)

 

처음에는 리눅스 데스크톱 화면의 색상이 열화된 듯 제 색상을 모두 표현하지 못 하지만 조금 지나면 실제 모든 색상을 아래처럼 제대로 표현한다. 이제부터는 WSL2에서 리눅스 데스크탑의 기능을 모두 이용할 수 있게 된다. 

 

팁: 뭔가 꼬였다는 느낌이 들면 WSL 전체를 내렸다가 다시 시작하면 된다. Windows 명령어 창이나 PowerShell 창에서 아래처럼 입력하면 된다. (Ubuntu 20.04 기준)

wsl --terminate Ubuntu-20.04 

 

2020년 7월 11일
신상희 

 

2020/05/31 - WSL(Windows Subsystem for Linux)에서 QGIS를 돌려보자!

Posted by 뚜와띠엔
,