0. 편의를 위해 리눅스를 윈도우에서 조작할 필요가 생겼다.
하지만 리눅스는 만만하게 접속을 허락(?)하지 않았다.
그 과정에서 만났던 에러를 해결하는 데에만 1 달을 소비했다.
1. yum install
==
==
yum install xorg-x11-server-Xorg
yum install xorg-x11-xauth
yum install xorg-x11-apps
당연히 X11 server가 설치되어 있어야 한다.
물론 어지간히 GNOME Desktop이라도 설치한 경우엔
이 패키지가 이미 설치되어 있다고 한다.
그리고 xauth는 X server에 접속하기 위한 자격증명(?)을 위한 것 같다.
x11-apps는 "xclock"같이 매우 간단한 프로그램을 실험삼아 실행시켜보기 위해 설치.
==
==
putty :
다운로드 페이지
Xming :
다운로드 페이지
(설치를 도와줄 다른 블로그)
putty는 ssh를 이용해 통신하기 위해 설치했다.
Windows 10에서 Win key + R, cmd를 실행시킨 뒤
'ssh -X username@localhost.localdomain' 처럼 접속해서
ssh를 이용할 수도 있다고 하지만...
실제로 해보니 제대로 되는 게 없었다.
(-Y 플래그를 사용하기도 하는
것 같던데 어차피 해결 안 되니까 정확하게 읽진 않았다)
물론 ssh 접속은 되니까 console mode로 조작은 가능하지만
내가 원하는건 GUI 환경이었다.
2. Setting!!
하도 많은 설정을 건드리고 다닌 탓에
정확히 어떤 설정이 의미있었는지 잘 기억나진 않지만
그래도 기억을 더듬어서 작성하였으니
자세한건 구글에서 추가 검색이 필요하다.
일단 CentOS에서 설정해줘야 할 것.
sudo vim /etc/ssh/sshd_config 명령어로 설정파일에 들어가면
X11Forwarding, X11DisplayOffset, X11UseLocalhost 등이 보인다.
위의 설정을
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
로 바꿔주었다. (기본값은 앞에 "#"이 붙어서 주석처리 되어있을 수 있다)
'포워딩'은 중개업자처럼 가운데에서 무언가를 전달해주는 행동을 말한다.
이런 짓을 해야 하는 이유는, X는 마치 네트워크 프로토콜처럼
서버와 클라이언트의 개념으로 윈도우창을 띄워주기 때문이다.
한 컴퓨터 내에서 통신하던 X server와 client에서 벗어나
그것을 다른 컴퓨터로도 forwarding하겠다는 의미이다.
X11 Display Offset은 이런 X 서버에서 디스플레이의 넘버링을 시작할 위치이다.
디폴트로 10이 되어있다.
이론적으로
X11은 여러개의 디스플레이를 가질 수 있다.
(X11 서버의 구조를 시각화한 다이어그램)
그리고 Windows 10에서 설정해줘야 할 것.
아까전에 설치한 Xming(XLaunch)을 실행시킨다.
그러면 윈도우 화면 오른쪽 아래에 Xming 아이콘 하나가 달랑 뜨는데
이게 전부다.
더블 클릭해보면 이런 화면이 뜬다.
(할많하않)
이후에 putty를 통해 접속할 시
3. Link start!!
(putty 실행 사진)
Host Name에 localhost.localdomain 혹은 아이피 주소를 적어주면 된다.
나는 공유기에 물려있기 때문에 192.168.xxx.xxx 식으로 입력해주었다.
'내 리눅스 아이피가 몇이지?' = $ ifconfig 명령어로 확인할 수 있다.
그리고 좌측 카테고리에서 Connection - SSH - X11에 가보면
Enable X11 forwarding 옵션이 있다. 여기에 체크를 해줘야 한다.
그리고 아래에 X display location은 공백으로 둬도 되는데
만약 필요하다면 localhost:0.0 혹은 :10.0 등을 입력해보기 바란다.
그리고 open을 눌러서 ssh 환경을 실행시킨 뒤
$ xclock
같은 평범한 GUI 프로그램을 실행시켜보며 테스트해본다.
물론 X window system은 '이 글자를 여기여기에 배치하고 이런 메뉴를 놓아줘'
식으로 작동하기 때문에
동영상 플레이어, 자체적인 GUI를 사용하는 프로그램을 구동할 경우엔
정상적으로 실행되지 않을 수도 있다고 한다.
+a : $ xdg-open 은 CentOS에서 file manager의 모습을 보여준다.
4. 추가 내용
기억을 되짚어 작성해보았다.
- "Warning: Missing charsets in String to FontSet conversion" 경고가 뜹니다.
--> $ xclock을 실행하기 전에 $ export LC_ALL=C 를
입력해준다.
- "Error: Can't open display:" 라고 뜹니다.
--> $ export DISPLAY=localhost:10.0 을 입력해보는 것도 해결책이 될 수 있다.
하지만 근본적으로 $ echo $DISPLAY에서 공백이 뜨는 경우에만 해당될 수 있다.
이럴 땐 Xming이 실행중인지, X display location이 정확한지 확인해보는 것이 좋다.
- "PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused" 라는 에러가 뜨면서 GUI가 실행되지 않습니다.
--> $ sudo vim /usr/bin/startx 를 찾아 들어가서 defaultserverargs= 부분을 찾은 뒤
defaultserverargs="-multiwindow -listen tcp"
또한 Xming이 제대로 동작하고 있는지를 확인해보는 것도 좋은 방법이 될 수 있다.
5. 또 다른 오류를 많이 겪었지만 일단 생략하였다.
이미 지나간 에러들이라서 검색하기 쉽지 않았다(...)
(하도 많은 문서를 검색해보다보니 history 저 뒤편으로 밀려나버려 이제 찾을 수 없다)
에러메세지 혹은 증상을 댓글로 남겨주시면
제가 아는 선에서 의심되는 원인을 짚어드리겠습니다.