WSL 2에서 X에 연결할 때 환경 변수 DISPLAY에 지정해야하는 주소 (2020/06 시점)

WSL 1 에서는 문제없이 X 의 GUI 에 연결되어 있었지만, WSL 2 로 하고 나서 연결되지 않게 되어 버렸다. Windows 10 May 2020 Update의 일반 릴리스 후에 사양이 바뀌어 버렸는지, 각처에서 소개되고 있는 방법이나 여기 이나 여기 의 기사의 방법을 시험해도 좋지 않았지만, 다른 IP를 시험 일단 해결했으므로 일례로서 써 남겨 둔다. 다만 향후의 WSL 2 의 사양 변경에 따라서는 마음대로 고치거나 할지도 모른다.

결론 : 호스트 측 IP 지정


localhost 이나 /etc/resolv.confnameserver 의 IP 에서는 안 되는 일이 있어, 그 경우, WSL 측이 아니고 Windows 측의 네트워크 어댑터의 IPv4 를 지정하면 연결되는 일이 있다. ※ May 2020 Update 일반 릴리스 후에 /etc/resolv.conf의 사양이 바뀌어 버린 것으로 보인다. WSL 1에서는 호스트와 IP가 공유되었던 것 같습니다.

구체적으로는 DISPLAY 환경 변수를 다음과 같이 export 하면 된다(copipe로 OK).
export DISPLAY=$(ipconfig.exe | grep "IPv4" | head -1 | awk '{print $NF}' | awk 'sub(/\r$/,"")'):0

어떤 환경에서도 잘 가는지는 모르겠지만, 수중의 환경에서는 이것으로 X 에 연결되게 되었으므로 한번 시험해 봐도 좋을 것이다.

※ 각자의 환경에서의 ipconfig.exe 의 출력 내용에 맞추어 적절히 스크립트는 수정하는 것

어떤 IP를 사용해야 합니까?





이 기사: WSL2의 GUI 설정으로 넘어진 곳 , WSL2의 X-Server로 GUI 표시할 때 "export DISPLAY=:0.0"이 효과가 없다 에서는 /etc/resolv.confnameserver 의 IP안에 고치고 있는 것처럼 보였다, 그러나 지금 (2020/06)의 나의 수중 환경에서는 안 되었다. 현재의 /etc/resolv.confnameserver 는 WSL 측의 vEthernet 어댑터를 가리키고 있어, 그 쪽이 아니고 호스트측 Windows 의 네트워크 어댑터의 IP 로 했는데, 수중의 환경에서는 그것으로 고쳤다.

WSL상에서 Windows측의 실행 형식은 그대로 움직이므로 ipconfig.exe 로 IP 를 취득해 그것을 DISPLAY 환경 변수에 export 한다. Windows의 개행 코드가 나쁘게 하기 때문에 깎고 나서 건네주고 있다. 환경에 따라서 ipconfig.exe 가 표시하는 어댑터의 순서등은 다를 가능성이 있으므로, 서두에 나타낸 스크립트로 안 되었을 경우는 각자의 환경에서의 출력 내용에 맞추어 적절히 수정하는 것.

덧붙여서 Pengwin 에서는 원래 호스트측 어댑터의 IP 가 참조되고 있어 아무것도 하지 않아도 X 에 연결되고 있다. 다른 Microsoft 스토어 앱 ( 우분투 20.04 LTS 등) 으로 인스톨 하면 현재 상태 안 되는 것이지만 , 그 중 대응해 마음대로 고쳐 주는 것일지도 모른다 .

좋은 웹페이지 즐겨찾기