본문 바로가기

Programming/IoT_Embedded

원격 터미널로(윈도우, 맥) 라즈베리파이 GUI 띄우기


VNC로 원격 데스크탑 연결이 아니라 터미널에서 X-Window 띄우기

라즈베리파이의 화면을 윈도우나 맥에서 띄우는 방법은 VNC나 Xrdp를 이용하면 되기는 합니다.
그런데, 원격 데스크탑을 연결해서 작업하다보면 아무래도 반응이 느릴 수 밖에 없습니다.
그래서, 일반적으로 터미널 하나 열어서 ssh로 접속해서 명령어 위주로 작업하는 것이 빠른데요. 

터미널로 작업하던 중에 작업한 결과가 GUI가 있는 X-Window 화면을 띄워야 할때가 필요하면,
다시 VNC나 Xrdp를 이용해서 원격 데스크탑으로 접속해야 하는 것은 많이 불편합니다.

이번 포스팅에서는 VNC나 Xrdp 없이 단순한 ssh 터미널에서 라즈베리파이의 X-window 화면을
윈도우와 맥에서 띄우는 방법을 차례대로 설명하겠습니다.
(사실, 라즈베리파이 뿐만 아니라 X11을 사용하는 모든 리눅스에서 사용가능합니다.)
이 방법은 X11-Forward라고 부릅니다.
이 방법은 라즈베리파이나 기타 다른 리눅스 머신을 통해서 OpenCV나 머신러닝을 통한 Computer Visining 작업에 아주 요긴합니다.



윈도우즈에서 Putty로 라즈베리파이 X-Window 화면 띄우기

무료인 Putty에서 하는 방법을 알아 보겠습니다.

우선 Putty 연결에 앞서서 윈도우즈에서 X-Window 화면을 띄우기 위해서는 xming이라는 것을 설치해야 합니다.
아래 URL에서 다운로드 받아서 설치하면 됩니다.



설치 마지막에 Putty 어떤 것을 사용하는지 묻는 창이 나오면 적절히 선택해주면 됩니다.
대부분 Portable을 사용하고 있을테니 잘 모르면 그냥 Default로 설치를 진행하면 될겁니다.

다음에 putty를 실행시켜서 아래의 그림처럼 설정창에서 Connection > SSH > X11을 선택하고 X11 forwarding을 활성화 합니다.


 “X display location” 항목은 기본이기 때문에 입력하나 안하나 같고, 다음번에 다시 확인해 보면 자동으로 "localhost:0" 으로 입력되어 있을 겁니다.

이제 접속하면 평소보다 실행 시간이 조금 더 걸리고나서 로그인이 될겁니다.

잘 되는지 확인 해보기 위해 라즈베리파이에 있는 탐색기 같은 파일매니저(pcmanfm)를 실행해 봅니다.

$ pcmanfm


참고로, 윈도우즈에서는 터미널 프로그램들 선택지가 무척 많습니다.
그 중에 MobaXterm 이라는 프로그램은 하나의 IDE 처럼 그 안에서 많은걸 해주게 되어있는데요.


그 기능 중에 하나가 터미널에서 실행한 원격 X-Window를 실행 시켜 주는 겁니다.
집에서 쓰는 것은 무료인데, 기업에서는 돈주고 사야 합니다.


맥에서 ssh로 라즈베리파이 X-Window 화면 띄위기

MacOX는 원래 유닉스이기 때문에 X를 지원했는데, 이젠 데스크탑에서 사용하지 않기 때문에 더이상 포함하지 않는다고 합니다.
대신에 X를 사용하고 싶다면 xquartz를 사용자가 직접 다운로드 받아서 사용하라고 설명하고 있습니다.
아래의 링크는 Apple에서 X윈도우와 관련한 설명 문서 링크입니다.



Apple에서 하라는 대로 Xquartz를 설치합니다. Xquartz 다운로드 링크는 아래에 있습니다.



dmg 파일이라서 다운로드 받아서 설치를 진행하면 절차는 아주 쉽습니다.


설치를 성공적으로 마치고 나서 로그아웃을 한번 해줘야 정상적인 사용이 가능합니다.

이제 터미널을 열고 ssh 명령으로 라즈베리파이에 접속할 때, 아래와 같이 -X 옵션을 추가로 줍니다.

$ ssh -X pi@my.pi.ip_addr

그러면 첫 로그인이 이루어 지는 동안 맥에 XQuartz가 자동으로 실행되고 접속이 이루어 집니다.
이때 장시간 사용을 하지 않으면 자동으로 X11-forward 기능이 끊어 지는데, 추가적으로 -Y 옵션을 주면 됩니다.

$ ssh -X -Y pi@my.pi.ip_addr

라즈베리파이에 로그인하고 나서 라즈베리파이에 기본설치된 탐색기 같은 파일매니저(pcmanfm)을 실행해 봅니다.

pi$ pcmanfm




터미널에서 실행한 화면이 라즈베리파이 모니터에 나오게 하려면?

터미널에서 실행한 명령에의해서 실행한 결과가 GUI를 갖는다면 그 화면을 보기 위한 방법은 크게 3가지 정도입니다.

1. VNC나 xrdp를 이용해서 원격 데스크탑을 연결해서 
2. 위에서 설명한 X11-forward 기능을 활용해서
3. 라즈베리파이에 모니터를 연결해서

위의 1, 2번은 모두 네트웍을 통해서 결과 화면을 전송해 오기 때문에 실시간으로 변환하는 동영상등에서는 사용하기 힘듭니다.
뚝뚝 끊어져서 보일테니까요.

결국 이럴때는 위의 3번 같이 라즈베리파이에 모니터를 연결해서 보는 수 밖에 없습니다.
그런데, 이때 마다 다시 개발PC에서 다시 라즈베리파이에 키보드를 연결하고 실행해 본다면 많이 힘들겠죠?
이때는 모니터만 연결하고 명령어 작업은 여전히 Putty 같은 터미널에서 진행하고 결과 화면은 원격이 아닌 직접 연결된 모니터에 출력하게 하려면 아래와 같이 명령어 앞에 환경변수를 지정하면 됩니다.(물론, export 해서 사용해도 됩니다)

pi$ DISPLAY=:0 pcmanfm

앞서 설명한 X11-forward 기능으로 ssh에 접속한 경우에는 실제로 라즈베리파이에 모니터가 연결되어 있어서 결과 화면은 원격에서 명령을 내린 윈도우즈나 맥 PC에 뜨게 되는데, 이때 아주 요긴하게 사용할 수 있습니다.