본문 바로가기
Programming/Setting

WSL2에서 VNC를 이용하여 Ubuntu Desktop 이용하기

by EDGE-AI 2021. 1. 22.

dlarhkd1211.tistory.com/2

 

Window에서 WSL2로 Ubuntu 이용하기

1. WSL이란? WSL 은 Windows Subsystem for Linux 의 약자로, 리눅스 환경 구동을 위한 윈도우의 부분 시스템입니다. 일반적인 가상화와는 달리 리눅스의 시스템 콜을 구현하기 위해 일종의 해석기를 사용

dlarhkd1211.tistory.com

위 포스트에 이어서 진행하는 글입니다.


1. VNC

VNC는 컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템이다. 자판과 마우스 이벤트를 한 컴퓨터에서 다른 컴퓨터로 전송시켜서 네트워크를 거쳐 그래픽 화면을 갱신하는 방식을 제공한다.

기존 방법으로는 ubuntu terminal만 사용이 가능했지만 vnc를 이용하면 ubuntu desktop을 사용할 수 있습니다.


2. Ubuntu Desktop 설치하기

2.1 리눅스 패키지 정보 최신화하기

windows terminal을 관리자 권한으로 열어주고, Ubuntu를 실행한 후 진행합니다.

sudo apt update
sudo apt upgrade

2.2 tasksel 설치하기

tasksel은 우분투에서 쉽게 패키지를 설치할 수 있도록 해주는 도구입니다.

sudo apt install tasksel

tasksel을 실행합니다.

sudo tasksel

2.3 Ubuntu desktop 설치

다음과 같은 화면에서 Ubuntu desktop에 커서를 옮긴후 spacebar로 체크한 후 enter로 나와줍니다.

원하는 프로그램이 있으면 추가로 선택하시면 됩니다.


3. WSL2에 VNC 서버 설치하기

sudo apt install tigervnc-standalone-server

4. WSL2에 dotnet-runtime 설치하기

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

5. systemd-genie 설치하기

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

여기까지 하면 Ubuntu에서 필요한 프로그램의 설치가 끝난다.


6. VNC 서버 암호 설정

사용자, 루트, gdm에 해당하는 암호를 설정해줍니다. 세번의 암호설정을 모두 같은 암호로 설정해도 무관하다.

선택옵션에서는 n을 입력해줍니다.

vncpasswd
sudo vncpasswd
sudo -u gdm vncpasswd

7. 새로운 Xorg 스크립트 생성

sudo nano /usr/bin/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은 사용할 모니터에 맞는 해상도를 입력해주면 됩니다.

입력 후 Ctrl+o, Ctrl+m+a, Ctrl+x 를 통해 저장후 nano를 빠져나오면 됩니다.

 

다음 명령어로 스크립트 파일에 대한 권한을 설정해줍니다.

sudo chmod 0755 /usr/bin/Xorg

8. systemd-genie 설정

/usr/lib/genie/deviated-prevents.conf 파일을 nano를 이용해 변경해줍니다. 

파일이나 디렉토리가 없는경우 생성 후 진행하면 됩니다.

sudo mkdir /usr/lib/genie
sudo nano /usr/lib/genie/deviated-prevents.conf

아래 내용을 입력해줍니다.

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

9. systemd-genie 실행

genie -s

위와같이 입력하면 

Waiting for systemd....!! 와 같은 문구가 나타나면 Ctrl+c로 종료 후 다시 입력해주시면 됩니다.

사용자 pc명 옆에 -wsl이 생기면 실행된것입니다.


10 VNC Viewer 설치

www.realvnc.com/en/connect/download/viewer/

 

Download VNC Viewer | VNC® Connect

 

www.realvnc.com

위 링크에서 VNC Viewer를 설치해줍니다.

설치 후 Viewer를 실행하고 VNC Server address를 입력하는 부분에 localhost:5900을 입력해줍니다.

ip로 접속해도 무관하나 고정ip가 아니기 때문에 부팅시마다 계속 변경해주어야 합니다.

 

접속이 되면 앞서 설정한 VNC 암호를 입력해줍니다. 

접속이 된 경우 ubuntu에서 설정한 계정이 나타나있습니다. 이 계정에 접속하면 아무것도 없는 보라색 화면이 나옵니다.

 

그 창을 종료한 후, localhost:5901로 같은 방식으로 접속하면 아래와 같은 화면을 볼 수 있습니다.

 

댓글