Published Book on Amazon
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 |
|
All of IOT
Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) |
|
최신 라즈베리파이(Raspberry Pi)로 시작하는 사
물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
18.3.2 VNC 프로그램을을 이용한 Desktop GUI 접속
VNC(Virtual Network Connection)이라는 것은 나의 컴퓨터에서 원격에 있는 컴퓨터에 접속해서 해당 컴퓨터를 마치 나의 컴퓨터처럼 마음대로 통제할 수 있는 기능을 제공하는 접속방식을 의미한다.
VNC 프로그램은 VNC server와 VNC client로 구성되어 있으며 각각이 원격에서 서로 상호 작용하면서 작동한다.
이러한 VNC 프로그램에는 여러 가지가 있는데, <TightVNC>, <RealVNC> 등이 유명한 프로그램들이다.
Raspberry Pi 시스템에서는 <TightVNC> 프로그램을 기본 지원 프로그램으로 탑재하고 있으며, Install 과정을 거친 후 정상적으로 사용할 수 있다. 물론 사용자가 원하면 다른 VNC 프로그램을 설치하여 사용할 수도 있다. Raspberry Pi 시스템에 접속하고자 하는 컴퓨터에서는 Raspberry Pi 시스템의 VNC server와 상호 호환되는 적당한 VNC client 프로그램을 이용할 수 있다. <TightVNC> server와 <RealVNC> client는 서로 호환하여 사용할 수 있다.
여기서는 <TightVNC> 프로그램을 server와 client로 설치하여 사용하도록 하겠다. 해당 프로그램을 download 하려면 아래의 homepage를 참조하기 바란다.
■ http://www.tightvnc.com/download.php
18.3.2.1 <TightVNC> server의 설치
아래와 같이 <TightVNC> server 프로그램을 설치할 수 있다. 해당 명령을 실행하면 프로그램 설치가 시작되며 다음과 같은 메시지가 표시된다.
pi@raspberrypi ~ $ sudo apt-get install tightvncserver |
~ 중략 ~ 중략 ~ 중략
|
VNC server가 설치된 후 VNC 접속에 사용할 session을 생성해야 한다. 아래와 같이 "tightvncserver" 명령을 실행하거나 "vncserver" 명령을 실행하여 session을 생성한다. 여기서 ":1"은 session번호를 의미하며, 여러 개의 session을 추가하고자 하면 이 번호를 증가시켜 session을 여러 개 생성해야 한다. 참고로 특별히 session번호를 지정하지 않으면 ":1" 부터 시작하여 session을 생성하게 된다.
session 생성을 위해 해당 명령을 입력하면 다음과 같이 session에 대한 설정화면이 나타난다.
pi@raspberrypi ~ $ vncserver:1 |
You will require a password to access your desktops.
Password: Verify: Would you like to enter a view-only password (y/n)? n
New 'X' desktop is raspberrypi:1
Creating default startup script /home/pi/.vnc/xstartup Starting applications specified in /home/pi/.vnc/xstartup Log file is /home/pi/.vnc/raspberrypi:1.log |
명령이 실행되면 먼저 원격으로 VNC로 접속하는데 필요한 암호를 입력해야 한다. 그리고 나면 "view only" 암호를 다시 입력하라고 하는데, 이는 선택사항이며 반드시 필요한 것은 아니다. VNS server에 "view only" 방식으로 접속하면, 화면을 볼 수는 있지만, 특별한 작업은 할 수 없는 상태가 된다.
새로운 명령을 또다시 시작하면 자동으로 Session 번호가 하나 증가된 session이 추가적으로 생성된다. 이렇게 새로운 session을 생성하면 별도 암호를 입력하지 않고 이전에 지정한 암호를 사용하게 된다.
pi@raspberrypi ~ $ tightvncserver |
New 'X' desktop is raspberrypi:2
Starting applications specified in /home/pi/.vnc/xstartup Log file is /home/pi/.vnc/raspberrypi:2.log |
<TightVNC> 프로그램은 default port로 "5900"을 사용하는데, 이렇게 session을 만들면 session 번호가 더해진 새로운 port번호를 생성한다. 즉 1 번 session이면 "5901" port, 2번 session이면 "5902" port를 생성하는 것이다.
18.3.2.2 <TightVNC> server 의 자동 시작
Raspberry Pi 시스템이 종료되면 이러한 VNC server 프로그램의 실행이 중단되고, 다음에 다시 booting했을 때는 자동으로 실행되지 않는다. 따라서 시스템이 booting할 때마다 server 프로그램을 매번 실행해 주지 않으면 client에서 접속이 불가능하다. 이렇게 시스템이 booting할 때마다 매번 VNC server 프로그램을 수작업으로 실행하는 것은 불편하므로 자동으로 server 프로그램이 시작되는 방식을 사용하면 매우 편리할 것이다.
booting할 때 <TightVNC> server가 자동 실행되도록 하려면 아래 방법을 사용할 수 있다.
■ /etc/rc.local 파일의 설정을 이용하는 방법
■ 시작 script를 이용하는 방법
■ desktop booting 기준으로 자동 시작을 설정하는 방법
● /etc/rc.local 파일의 설정을 이용하는 방법
이 방법은 시스템 booting 시점에 실행되는 script 파일을 이용하는 것이다. 이 방법을 사용하기 위해서는 /etc/rc.local 파일의 내용을 아래와 같이 수정한다.
GNU nano 2.2.6 File: /etc/rc.local |
#!/bin/sh -e # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing.
# Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi
vncserver :1 exit 0 |
● 시작 script를 이용하는 방법
이 방법은 시스템에서 자동으로 실행되는 Schedule Task에 해당 프로그램을 등록해 놓고, 시스템이 시작할 때마다 자동으로 그 프로그램이 실행되도록 하는 것이다.
이를 위해서는 먼저 <TightVNC> server에 대한 시작 script를 작성해야 한다. 텍스트 편집기 파일을 이용해서 /etc/init.d/tightvnc 파일의 내용을 다음과 같이 수정한다.
GNU nano 2.2.6 File: /etc/init.d/tightvnc |
### BEGIN INIT INFO # Provides: tightvnc # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start TightVNC Server at boot time. # Description: Start TightVNC Server at boot time. ### END INIT INFO #! /bin/sh # /etc/init.d/tightvnc
USER=pi HOME=/home/pi Export USER HOME
case "$1" in start) echo "Start TightVNC Server" /usr/bin/vncserver :1 ;; stop) echo "Stop TightVNC Server" /usr/bin/vncserver –kill :1 ;; *) echo "Usage: /etc/init.d/tightvnc start|stop" exit 1 ;; Esac
exit 0
|
생성된 시작 script 파일에 대해서 "chmod" 명령을 이용하여 실행 가능한 파일로 상태를 변경한다.
pi@raspberrypi ~ $ sudo chmod +x /etc/init.d/tightvnc |
그런 다음 해당 script가 자동으로 실행될 수 있도록 script를 시스템에 등록해야 한다.
pi@raspberrypi ~ $ sudo update-rc.d tightvnc defaults: |
update-rc.d: using dependency based boot sequencing |
이렇게 처리한 다음 <TightVNC> server를 처음 실행하면 VNC 암호를 다시 입력하라고 하는데, 이는 해당 script가 실행될 때 처음 VNC server를 설정한 "pi"계정이 아니라 "root" 계정으로 실행되기 때문이다.
● desktop booting 기준으로 자동 시작을 설정하는 방법
이 방법은 Raspberry Pi 시스템이 booting할 때 Desktop GUI window으로 자동 login하도록 설정되어 있는 경우에 사용할 수 있는 방법이다. 이 방법을 사용하면 window에 로그인할 때 <TightVNC> server가 자동 실행된다.
이를 위해서 먼저 "/home/pi/.config" directory에 "autostart" directory를 만든다.
pi@raspberrypi ~ $ mkdir ./.config/autostart |
"/home/pi/.config/autostart" directory에 "tightvnc.desktop" 파일을 생성하고 다음을 입력한다.
[Desktop Entry] Type=Application Name=TightVNC Exec=vncserver :1 StartupNotify=false |
18.3.2.3 VNC client를 이용한 연결
여기서는 MS Windows와 Apple Mac에서 VNC Client를 이용해서 <TightVNC> server 설치되어 있는 Raspberry Pi 시스템에 접속하는 과정을 설명한다.
● VNC client 프로그램 설치
VNC를 이용하여 Raspberry Pi 시스템에 접속하기 위해서는 VNC client 프로그램을 설치해야 한다. 통상 VNC client 프로그램은 MS Windows 또는 Apple Mac에서 정식으로 설치할 수 있는 형태로 프로그램이 제공되므로 정상적인 설치과정을 거쳐서 설치하면 된다.
● VNC server 접속
해당 컴퓨터에 <TightVNC> client 프로그램을 설치한 후, 프로그램을 실행하면 다음과 같은 화면이 나타난다. 접속하고자 하는 Raspberry Pi 시스템의 IP address나 host 이름을 입력하고 뒤에 ":session 번호"를 화면과 같이 지정한다. 동시에 원하는 항목에 대해서 여러 가지 사전 설정항목을 입력하여 사용할 수 있다. 필요한 사항을 입력하여 [connect] 버튼을 누른다. 그러면 아래와 같이 암호를 입력하는 화면이 나온다. 여기서 입력하는 암호는 특정 사용자의 계정 암호가 아니라 앞에서 VNC server 설정에서 session을 생성할 때 지정한 접속 암호이다. 여러 개의 session이 있는 경우에도 공통으로 지정된 암호를 사용하면 된다.
그림 18‑3 <TightVNC> 프로그램을 이용한 Desktop GUI 접속 client 설정
암호를 입력하고 [OK] 버튼을 누르면 다음과 같이 Raspberry Pi의 Desktop GUI window 화면으로 접속이 된다. 이렇게 Raspberry Pi 시스템으로 접속할 때는 "pi" 사용자 계정으로 logon한다.
그림 18‑4 <TightVNC> 프로그램을 이용한 Desktop GUI 접속