작성 동기
WSL2 상에서 JMAVSIM을 띄워보려하는데 가시화가 안되서 찾다가 정리한다.
https://docs.px4.io/master/en/dev_setup/dev_env_windows_bash_on_win.html
위의 PX4 문서를 보면, Xming을 설치한 후, bash shell에서 다음을 설정하면 보인다고 하는데..
export DISPLAY=:0
$ make px4_sitl jmavsim
...
Starting GUI...
Exception in thread "main" java.lang.reflect.InvocationTargetException
Caused by: java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
... 5 more
위와 같이 오류가 나오면서 DISPLAY로 :0를 잡을 수 없다고 나온다.
Windows 10 에서
1. Xming 설치하기
https://sourceforge.net/projects/xming/
다 설치하고 끄자.
2. Xming 실행 속성 수정하기
그냥 실행하면 잘 안된다...
예를 들어 X Window 작동 확인을 위해 xeyes를 실행해보면 다음과 같이 나온다.
$ xeyes
No protocol specified
Error: Can't open display: IP_ADDRESS:0
아래 그림처럼 실행 바로가기 파일에 실행 명령어 뒤에 '-ac'를 붙여준다.
바로가기 대상에 추가되는 문구는 다음과 같다.
:0 -clipboard -multiwindow -ac
3. Xming 방화벽 설정
Xming 의 Windows 방화벽 허용 - Windows Powershell을 관리자 권한으로 켠 후,
방화벽 허용을 하고, 되어있는지 확인한다.
Set-NetFirewallRule -DisplayName "Xming X Server" -Enabled True -Profile Any
New-NetFirewallRule -DisplayName "Xming X Server" -Enabled True -Profile Any
4. -ac 설정한 Xming 실행하기
실행하자.
WSL 에서
1. x11 패키지와 폰트 설치하기
sudo apt -y install x11-apps xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic
2. WSL에서 DISPLAY 출력 IP 지정해주기
WSL을 켜고 bash shell에서 다음을 입력하여 주소를 설정해준다.
이는 echo $DISPLAY를 입력하여 입력된 주소를 확인할 수 있다.
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
3. X window 작동 확인하기
WSL bash shell 에서 xeyes 라던지, xclock을 실행해보자.
Troublemshooting
canvas = me.drton.jmavsim.Visualizer3D$CustomCanvas3D\[canvas0,0,0,0x0,invalid\] X11Util.Display: Shutdown (JVM shutdown: true, open (no close attempt): 1/1, reusable (open, marked uncloseable): 0, pending (open in creation order): 1) X11Util: Open X11 Display Connections: 1 X11Util: Open\[0\]: NamedX11Display\[---------:0, 0x7f31a0030960, refCount 1, unCloseable false\]
Reference
https://evandde.github.io/wsl2-x/
https://superuser.com/questions/1476086/error-cant-open-display-0
https://superuser.com/questions/1476086/error-cant-open-display-0