【今日から始めるラズパイ その3】Raspberry Pi VNCでGUI操作


はじめに

これまでLAN内からラズパイにSSH接続する方法としてIPアドレスを固定するやり方Avahiを使用するやり方について書いてきました。SSH接続というのは基本的にCLI(Command Line Interface)操作が前提となっています。
しかし、慣れていない人はどうしてもGUI(視覚的な操作)などのグラフィカルな操作ができたらいいのにと思う人もいるでしょう。(自分もそうでした。)
リモート接続としてコマンドラインを使用したSSH接続を紹介してきましたが、今回の記事では視覚的な操作を可能にする VNCを利用してリモート接続する方法 について書いていきたいと思います。

目次

  • VNC(Virtual Network Computing)
  • 環境
  • VNCのセットアップ
    • VNCをインストール
    • VNCを有効化
    • VNCサーバを起動
    • VNCサーバへ接続
  • VNCサーバの自動起動設定
  • 最後に

VNC(Virtual Network Computing)

  • VNCとは

リモートデスクトップの一種で、ネットワーク上の離れたコンピュータを画面を見ながら遠隔操作するものです。つまり、モニタなどを直接接続しなくても、自分の使用するPC上にラズパイの画面を表示して利用することができます。
オリジナルのVNCがオープンソースとして公開されているため、現在では様々なVNCの派生ソフトがあります。

  • VNCサーバ

その名の通り、VNCを提供するサーバです。VNCサーバはソフトウェアとして動作します。このソフトウェアはサーバソフトと、クライアント(もしくはビューア)ソフトの2つに分かれており、ラズパイ上でサーバソフトを起動しておき、遠隔操作する側はクライアントソフトを起動させて接続しにいきます。

環境

今回は、以下の環境を想定して書いています。

  • 接続元PC:Mac
    • OS:macOS Catalina ver. 10.15.6
  • 接続先PC:Raspberry Pi 3 model B
    • OS:Raspbian GNU/Linux version: 8 jessie(Debian)
  • 構成
    • 今回はLAN内でのリモート接続を想定して設定をするのでPC、ラズパイ共に同じルータに接続してください。(同じ構成にしたい場合、こちらの記事を参考に)

VNCのセットアップ

VNCをインストール

### tightvncserverのインストール
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install tightvncserver

VNCを有効化

  • GUIの場合


- CLIの場合 - `$ sudo raspi-config` - 『Interfacing Options Configure connections to peripherals』を選択 - 『VNC Enable/Disable graphical remote access to your Pi using RealVNC』を選択
- 『』を選択
  • 設定を反映
    • $ sudo reboot

VNCサーバを起動

  • サーバ起動コマンドを実行
    • $ tightvncserver
    • 初回起動時にVNCログインパスワードを設定します
  • 接続ポートの生存を確認
      VNCはウェルノウンポート 5901番を使用します。
    • netstatコマンドで5901番の状態を確認する
      • $ netstat -nlt



        5901番ポートがLISTENとなってれば問題なく接続することができます。

VNCサーバへ接続

  • Finder から "サーバへ移動" を選択( コマンド(⌘)+K )
  • ラズパイの接続IP(vnc://[ラズパイのIPアドレス]:5901)を入力する
  • 上で設定したVNCログインパスワードを求められる
- 注意:VNCを通してChromiumなどの検索エンジンを使用する場合、YouTubeを見たり、omxplayerを使用して動画を再生することはできないらしい。(第一スペック的にもきつい) - もちろん、ラズパイにモニタを繋いでダイレクトに利用する場合は問題なく見れます。 - 動画は普通に自分のPCで見ましょう。

VNCサーバの自動起動設定

ラズパイ起動時にVNCサーバも同時に立ち上げたい場合、以下の設定をしておきます。
また、今回使用している Raspberry Pi 3 model B のデフォルトの解像度は低すぎて、Macからリモート接続すると画質が一気に悪くなります。なので、ついでに解像度の設定も一緒に記述しておきます。
僕はPCのモニタとして1920x1080 (フルHD)を使用しているので、設定もこれに合わせます。設定は自分の環境に合わせて変更してください。

  • VNCサーバを自動起動させるにはvncbootというスクリプトを書きます
    • $ sudo nano /etc/init.d/vncboot
vncboot
#! /bin/sh    

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

# /etc/init.d/vncboot

USER=pi
HOME=/home/pi

export USER HOME

case "$1" in
    start)
        echo "Starting VNC Server"
        #Insert your favoured settings for a VNC session
        su $USER -c '/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24'
        ;;

    stop)
        echo "Stopping VNC Server"
        su $USER -c '/usr/bin/vncserver -kill :1'
        ;;

    *)
        echo "Usage: /etc/init.d/vncboot {start|stop}"
        exit 1
        ;;
esac

exit 0
  • 作成したスクリプトに実行権限を付与して自動起動の登録をします
    • $ sudo chmod 755 /etc/init.d/vncboot
    • $ sudo update-rc.d vncboot defaults
  • 再起動して、VNCサーバが自動起動することを確認
    • $ sudo reboot
  • プロセスとLISTENポートの確認
    • $ ps -ef | grep tightvnc | grep -v grep
      • 以下を応答すれば問題なくプロセスが立ち上がっている
pi         857     1  0 04:18 ?        00:00:05 Xtightvnc :1 -desktop X -auth /home/pi/.Xauthority -geometry 1920x1080 -depth 24 -rfbwait 120000 -rfbauth /home/pi/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
  • $ netstat -nlt



    5901番ポートがLISTENとなってれば問題なく接続することができます。

最後に

今回は、VNCを利用する方法としてtightVNCというソフトウェアをインストールして実行し、VNCクライアント(ホストPC)から接続してGUI利用する方法を紹介しました。
もちろんMacだけでなく、WindowsからもVNCを利用できます。その際はRealVNC, VNCViewerというものを使用する方法などがあります。詳しくは以下のURLを参考にしてみてください。

WindowsからRaspberry Pi 3 Model B+にリモート接続する
RaspberryPiのVNC設定をSSHで完結させる。

それでは 💪