Raspbian에 RealVNC가 제공된다. 항상 X를 사용하지는 않기 때문에 Virtual Mode를 설정하면 되지만, vncserver-virtuald.service를 제대로 사용하려면 RealVNC 계정을 만들어야 한다.
계정을 만들지 않고 Virtual Mode를 사용할 수 있도록 설정한다.
RealVNC 설치
$ sudo apt-get install realvnc-vnc-server
RealVNC 서비스 중지
$ sudo systemctl disable vncserver-x11-serviced.service
$ sudo systemctl disable vncserver-virtuald.service
스크립트 작성
vncserver-virtuald.service를 사용하지 않고 직접 vncserver-virtual 를 사용할 경우 접속한 X 환경에서 logoff 등을 할 경우 VNC 연결이 끊어지면서 vncserver-virtual 도 종료된다.
10초마다 vncserver-virtual 가 동작 중인지 검사해서 실행시키는 스크립트를 작성한다.
스크립트는 /usr/local/bin/loop_vnc.sh로 저장한다.
#!/bin/bash
if [ -x /usr/bin/vncserver-virtual ]; then
while [[ true ]]; do
PS_COUNT=`ps aux | grep Xvnc | grep $USER | grep -v grep | wc --lines`
if [ 0 == $PS_COUNT ]; then
/usr/bin/vncserver-virtual :0
fi
sleep 10s
done
fi
부팅 설정
/etc/rc.local에 아래 내용을 추가해서 부팅 할 때 스크립트를 자동으로 시작하게 설정한다. 이 때 로그인을 원하는 계정 권한으로 실행해야 하기 때문에 sudo를 사용한다.
if [ -x /usr/local/bin/loop_vnc.sh ]; then
sudo -H -u pi /usr/local/bin/loop_vnc.sh &
fi