Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

IT/문제해결

WSL GUI 테스트 문제 해결과정 간단기록

Eli♪ 2021. 5. 17. 05:35

간단요약

Windows subsystem for linux (WSL)을 통해서 몇몇 GUI 앱을 동작시켜 봤다. gedit과 리눅스용 chrome은 성공했으나 gimp는 로딩되고 첫화면 뜨자마자 뻑나면서 꺼진다. 아직 안정성은 떨어지는듯.

 

WSL 우분투 설치관련

Windows insider preview 업데이트 공지에 wsl GUI를 native하게 하는 방법이 있다고 써있는걸 봄. 다음과 같이 관련 페이지도 찾음

https://devblogs.microsoft.com/commandline/the-initial-preview-of-gui-app-support-is-now-available-for-the-windows-subsystem-for-linux-2/

 

그리고 다음의 MS 공식 문서에 나와 있는 대로 설치를 시도함

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

 

나의 경우 wsl --install이 계속 에러나서 안먹힘

wsl --install -d Ubuntu도 잘 안됨

wsl --update시 오류 발생

 

wsl -l -o 를 써서 전체 리스트 확인 후 

wsl --install -d Ubuntu-20.04 써서 설치함.

 

설치경로는 %LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState 로 들어감. 아래와 같이 가상하드로 생성됨.

설치 후에는 시작버튼 누르면 나옴. 거기서 우클릭 후 제거하면 이 폴더가 삭제됨. 참고로 CanonicalGroup은 우분투 개발사이다. 어쨌거나 가상하드라서 기본적으로 내부가 투명하게 보이지는 않는다.

 

몇몇 GUI 앱 설치후 실행시 문제발생

공식 문서에 있는대로 sudo apt update와 sudo apt upgrade를 한 후 gedit과 gimp를 설치했다.

https://devblogs.microsoft.com/commandline/the-initial-preview-of-gui-app-support-is-now-available-for-the-windows-subsystem-for-linux-2/

 

sudo apt install gedit -y
sudo apt install gimp -y

그리고 바로 실행하면 cannot open display 라면서 에러가 뜬다. MS 문서에는 마법같이 된다고 써있는데 왜 나는 마법이 실패하나?

 

윈도우에서 vcxserver 설치

어쨌거나 인터넷을 좀 뒤져보니 결국엔 윈도우에 창 표시가 가능한 클라이언트를 설치하는 것으로 해결했다. 다음의 링크에서 vcxserver를 다운받고 설치한다.

https://sourceforge.net/projects/vcxsrv/

 

다 깔면 시작버튼 눌렀을때 Xlaunch라는 앱이 보인다. 기본 세팅으로 다음 누르다가 중간에 Extra settings 부분에 disable access control에 체크해준다.

그리고 다음과 같이 save configuration을 눌러서 저장한다. 

이 과정이 끝나면 vcxsrv가 자동으로 실행된다. 아래와 같이 트레이에서 확인할 수 있다.

아까 저장한 것은 이 프로그램이 꺼져있을 때 설정해뒀던 세팅으로 자동으로 켜는거라고 보면 된다. 우분투에서 GUI 앱 켜기전에 이게 무조건 켜있어야 된다.

 

우클릭을 해보면 hide root window라고 되어있는데 저걸 해제하면 전체화면이 까매지면서 작업표시줄까지 사라지고 검은 창이 뜬다. 그냥 숨겨두는게 맞는듯.

디스플레이 출력을 위한 bashrc 수정

현재 상태로는 gedit같은 gui 텍스트 편집기들이 다 에러나서 안켜지기 때문에 고전적인 vim을 켜서 bashrc를 수정한다. bashrc는 OS 켜질때 자동으로 실행되는 명령어 집합같은거라고 이해했다. 참고로 수정시에 sudo를 안걸고 그냥켜면 권한이 없어서 readonly로 읽히니 sudo 붙여서 다음과 같이 쓸 것.

sudo vim ~/.bashrc

터미널환경의 편집기에 안익숙하면 당황스러울 수 있는데, 키보드의 insert 키를 누르면 왼쪽아래에 --insert-- 라고 표시되고 파일 내용을 수정할 수 있다. 키보드 커서로 위아래 이동 가능하다. ESC를 누르면 수정모드에서 빠져나와서 저장이나 종료 등을 수행할 수 있다. 맨 마지막에 다음을 추가한다.

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

뭐 대충 다른곳의 설명을 찾아보면 wsl 1에서 wsl 2로 업글되면서 로컬호스트가 아니라 별도 아이피를 쓴다고 하는데 /etc/resolv.conf 안에 있는걸 읽어서 export display로 쏴주는 역할이다. 이전 글에서 vnc관련해서 해본거랑 비슷하다고 생각했다. 하여간 이걸 bashrc에 추가하면 앞으로 우분투 켤때 자동으로 맵핑으로 해준다. 이걸 안넣으면 매번 OS켜고 GUI 앱 실행 전에 저걸 입력해줘야 한다.

 

참고로 윈도우 터미널에서 ipconfig를 쳐보면 WSL용 이더넷 어댑터에 아래와 같이 가상 아이피로 등록된 것을 확인할 수 있고, 우분투상에서 resolv.conf에도 그게 써있는 것을 확인할 수 있다.

 

적용을 위한 WSL 재부팅

하여간 위 작업을 마무리한 후 wsl 우분투에서 logout을 입력한다. 창은 꺼지지만 사실 백그라운드에서 계속 돌고있기 때문에 윈도우 터미널(나는 powershell에서 진행) wsl --shutdown을 입력한다.

wsl --shutdown

그리고 잘 꺼졌는지 확인을 위해 다음을 입력한다. -l은 list이고 -v 는 verbose이다.

wsl -l -v

이 상태에서 시작버튼 눌러서 우분투를 켜주면 재부팅된다. 나의 경우 윈도 터미널에 우분투가 자동으로 등록되어서 그걸로 켰다.

 

Xlauncher를 통해 gedit 앱 켜지는거 확인

일단 트레이에 xlaunch가 돌고있는지 확인후 wsl 우분투 터미널에서 다음을 입력해본다.

gedit ~/.bashrc

뭐 에러가 나긴 하는데 어쨌거나 창이 잘 나온다. 혹시 안되면 트레이에서 xlauncher 우클릭 후 reload를 누르고 재시도한다.

아까 수정했던게 잘 나온다. 터미널에서 foreground로 돌고있기 때문에 이 창을 닫고 앱이 종료되기 전까지는 터미널은 먹통이 된다.

 

Gimp 실행시 fail나는 것 확인

gedit을 끄고 gimp를 실행하기 위해 터미널에 gimp를 치면 뭔가 아름답게 잘 켜질 듯하다가 잠시 후에 꺼지면서 다음과 같이 에러가 나온다.

왜 이렇게 되는지는 아직 확인을 못했다.

 

Chrome 설치 후 작동

다른 앱도 그런가 해서 공식문서 설명대로 chrome을 깔아봤다.

https://docs.microsoft.com/ko-kr/windows/wsl/tutorials/gui-apps#install-google-chrome-for-linux

절차를 보면 알겠지만 중간에 fix같은 절차가 들어간다. 아직 뭔가 완전하지 않은 것 같다. 하여간 실행하면 크롬 창이 잘 뜬다. 창이 안뜨면 xlaunch가 켜있는지 확인한다. xlaunch를 켜고 우클릭해서 reload를 하면 제대로 창이 표시된다.

우리나라 사람이라면 국룰인 네이버도 들어가봤는데, 한글이 죄다 깨져나왔다. 인터넷을 뒤져보니 그냥 한글폰트가 없어서 그런거였다.

 

우분투 터미널에 다음을 입력하여 네이버에서 배포한 나눔폰트를 설치한다. 나도 평소에 저작권문제가 없어서 애용하는 폰트이다.

sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra

인터넷 찾아보면 그 뒤에 추가설정들 하라고 하는데 나는 이것만 하고 우분투를 재부팅했더니 다음과 같이 한글이 잘 나왔다.

다음과 같이 동영상 재생도 잘 된다. 그런데 소리가 안나온다. 관련문제 해결은 시간이 없어서 어려울 것 같고, 이정도로 맛보기선에서 마무리하도록 한다.

 

결론

gimp는 실패했지만 일단 우분투에서 크롬 웹브라우저 창을 윈도우로 띄우는 데 성공했다. MS공식버전에서 하라는대로는 안됐지만 어쨌거나 써먹을 수 있는 수준으로는 된 것 같다. 끝.