WSL2에서 X window를 세팅하는 법
https://evandde.github.io/wsl2-x/
WSL2에서 X window를 세팅하는 법
이 글에서는 WSL2를 설치한 뒤 X window(GUI)를 사용하기 위한 세팅 방법을 알아봅니다.
WSL을 설치하더라도, GUI 기반의 프로그램을 실행하려면 X window에 관한 추가적인 설정이 필요합니다. 이 글에서는 WSL2에서 X window 사용을 위한 세팅 방법을 다룹니다.
TL;DR
Xming 공식 홈페이지에서 Xming 다운로드
Xming 설치 (다음만 누르며 설치해도 괜찮음)
Xming을 한 번 실행한 뒤 종료. (방화벽에 Xming 허용 규칙을 추가하기 위함)
Xming 단축아이콘을 만들고, 속성-대상 항목의 맨 끝에 한 칸을 띄고
-ac
를 이어서 적음WarningWindows PowerShell을 관리자 권한으로 실행한 뒤, 다음 명령어 입력 (에러가 뜬다면 본문 참고)
WSL2에서 다음 명령어 입력
X window, X server란
X window는 UNIX 내지 Linux 계열의 운영체제에서 사용되는 GUI 환경 구현을 위한 시스템입니다. X11이라고도 부르고, 줄여서 그냥 X라고 부르기도 합니다. X window의 동작 원리는 간단하게 말하면 서버-클라이언트 구조입니다. “프로그램이 GUI 창을 띄워달라고 X server에 요청“하면, “X server가 요청을 처리하여 GUI 창을 띄우는 것“이죠.
일반적으로 Linux 운영체제 내에서 X server 프로그램이 구동되도록 설정된 환경에서는 내부적으로 알아서 화면을 띄울 수 있습니다. 하지만, PuTTY1나 WSL과 같이 Windows에서 터미널만 켜서 이용하는 경우에는, 프로그램의 X window 실행 요청을 Windows가 받아서 처리해야 하기 때문에, Windows용 X server 프로그램이 필요합니다. 대표적으로 Xming, VcXsrv, X410 등이 있습니다.
클라이언트가 보내는 X window 실행 요청은, Linux 상에서 DISPLAY
라고 정의된 환경변수의 값으로 전송됩니다. 즉, X server를 사용하려면, X server 프로그램이 요청을 받을 수 있는 일종의 사서함 주소를 확보한 뒤, 이 값을 DISPLAY
로 정의해주면 되는 것입니다.
Xming 설치
이 글에서는 Xming이라는 프로그램을 이용할 것입니다.
Xming 공식 홈페이지에 들어가셔서 Xming 설치파일을 받아오시기 바랍니다. (버전이 높은 것은 Xming 측에 돈을 기부하고 계정을 받아야 사용가능하니, 그 밑에 있는 낮은 버전을 받으시면 됩니다.)
(2021년 2월 17일 기준, 공식 홈페이지 접속이 안되네요. 구글에서 찾아서 다운받으세요.)
설치는 그냥 다음 버튼만 누르며 하셔도 됩니다만, 나중의 편의를 위해 단축아이콘 하나만 만들어두도록 합니다. 아래 그림에 보이는 내용이 떴을 때 Create a desktop icon for Xming에 체크해주시면 됩니다.
Xming이 켜져 있는지의 여부는, 작업표시줄 오른쪽의 트레이아이콘을 확인하시면 알 수 있습니다. 트레이아이콘 중 X모양의 아이콘이 있다면 켜져있는 것입니다. 종료하고자 할 때에는, 트레이아이콘을 우클릭하고 Exit를 눌러주시면 됩니다.
WSL2와 X server 연동의 어려움
WSL2에서 X server를 연동하는 경우는 WSL1에서와 사뭇 다릅니다.
WSL1이 Windows와 동일한 네트워크를 사용했던 것과 달리, WSL2는 Windows 10 내에서 별도의 WSL2 전용 네트워크를 사용하고 있기 때문입니다.
즉, WSL2와 Windows 10의 주소가 다르기 때문에, WSL2에서 자기자신(localhost)에 X 요청을 보내게 되면 Window로 그 요청이 도달하지 못하는 것이지요.
우리는 이 문제를 해결하기 위해 다음의 과정을 거쳐야 합니다.
- Windows에서 실행한 X server 프로그램(Xming)에서 외부 IP로부터 들어오는 요청을 허용하도록 설정
- Windows 방화벽에서 WSL2의 요청을 허용하도록 설정
- WSL2에서 Windows의 주소를 획득하고, 이를
DISPLAY
환경변수로 지정
WSL2와 Xming 연동
Xming에서 외부 IP로부터의 요청을 허용하도록 설정
Xming은 기본적으로 자기자신(localhost)으로부터 들어온 요청만을 받아들이고, 외부 IP로부터의 요청은 받지 않도록 설정되어 있습니다. 그래서 Xming에서 설정을 바꿔주지 않으면, 아무리 WSL2에서 요청을 보내도 Xming이 받지 않는 것이지요.
이 부분을 허용하도록 설정하기 위해서는 Xming을 켤때 -ac 옵션을 넣어주면 됩니다.
-ac 옵션을 넣어 실행하기 위한 Xming 단축아이콘 생성 (설치 시 바탕화면에 생성하였다면 이것을 이용해도 괜찮음)
단축아이콘에서 우클릭 - 속성
바로 가기 탭 선택
대상 항목의 맨 끝에 한 칸을 띄어쓴 뒤 -ac를 이어서 적음
Warning확인
이제 이 단축아이콘으로 Xming을 실행하게 되면, Xming이 -ac 옵션이 적용된 채로 켜지게 됩니다. 혹시 현재 Xming이 켜져있다면 종료하시고, 방금 설정한 단축아이콘으로 다시 실행해주세요.
Windows 방화벽에서 Xming으로 들어가는 요청 허용
WSL2에서 보내는 요청이 Xming에 도달하기 전에 Windows 방화벽이 차단해버리는 경우를 막기 위해, 다음의 작업을 통해 방화벽에서 Xming X Server로 들어가는 요청을 허용하도록 설정하시기 바랍니다.
[WIN]+[R]을 눌러 실행 창 띄우기
powershell을 입력한 뒤, [CTRL]+[SHIFT]+[ENTER]를 눌러서 PowerShell을 관리자 권한으로 실행
다음 명령어 입력
이 명령어를 입력할 때 다음과 같은 에러가 뜬다면, Xming을 실행한 적이 없기 때문입니다.
혹시 Xming을 실행한 적이 있음에도 이런 에러가 뜬다면, 다음 명령어를 입력하세요. (앞의 Set이 New로 바뀝니다)
Windows의 IP 주소 획득 및 DISPLAY 환경변수로 지정
WSL2에서 Windows의 IP 주소를 보는 것은 다음 명령어를 통해 가능합니다.
값을 확인했다면 이걸 이용해서 DISPLAY 환경변수의 값을 설정해주면 됩니다.
이 작업 역시, 터미널을 종료하면 설정한 정보가 날아가버립니다. 때문에, Windows의 IP 값을 받아다가 DISPLAY
변수를 정의하는 작업을 한 문장으로 작성하여 ~/.bashrc
에 적어두는 방식을 사용합니다. 이 작업을 위해서는 |
2, grep
3, awk
4등 생소할 수도 있는 명령어가 사용됩니다만, 그대로 따라서 한 번만 실행시키시면 WSL2에서 작업할 내용은 끝나게 됩니다.
GUI 연동 확인을 위한 테스트
이 모든 작업이 끝났다면, 아마 정상적으로 GUI가 실행될 것입니다.
GUI 창을 띄우는 프로그램을 사용하시는 게 있다면 그 프로그램으로 테스트 하시면 됩니다. 이 글에서는 xclock이라는 프로그램을 받아서 테스트하도록 하겠습니다.
댓글
댓글 쓰기