ラズパイのGUIを遠隔で操作(VNCサーバ構築)

(注)この記事は2015年5月4日に旧ブログに投稿したものです。今でも有効な内容かは不明・・・

色々なソフトの組み合わせを試してみましたが、自分の使い方ではこれが一番しっくりしたのでその方法をまとめます。

tightvncserverの導入

インストールします。

sudo aptitude install tightvncserver

まずは手動で起動してみます。
初回の起動時に初期パスワードを聞いてきますので、適当に入力。

vncserver

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サーバが立ち上がりました。
PCから繋いでみます。

f:id:xyzplus:20161210010243p:plain

ポート番号は5900 + vncserver起動時に表示されたディスプレイ番号

f:id:xyzplus:20161210010258p:plain

無事接続できているようです。
ここでVNCサーバのメニューからログアウトを選択すると、VNCサーバを再起動するまで使えなくなりますので、ログアウトせずビューアを終了します。

VNCサーバを終了します。

vncserver -kill :1
Killing Xtightvnc process ID 2326

当然ですが、VNCサーバ終了後はビューアで接続を試みても接続できません。

xinetdの導入

上記の方法では使っていないときでもVNCサーバが常駐します。まぁサーバってそういうもんなんですが。
頻繁に使用する場合であれば起動しっぱなしでもいいですが、そうでない場合はリソースの無駄遣いです。
ということで、スーパーサーバ(xinetd)を使用して必要なときだけVNCサーバを起動することにします。

まずはxinetdをインストール

sudo aptitude install xinetd

VNCで使用するポート番号をxinetdの設定で使用できるように、/etc/servicesファイルに以下を追記します。
追記場所はどこでもOK

vnc             5901/tcp

続いて、xinetdからVNCサーバを起動するための設定ファイルを作成します。

/etc/xinetd.d/vnc (新規作成)

service vnc
{
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry 1024x768 -depth 16 -rfbauth /etc/vnc_passwd
        disable         = no
}

server_argsの設定(Xvnc起動パラメータ)はここを参考
http://www.tightvnc.com/Xvnc.1.php

-rfbauth で指定した個所にパスワードファイルを作成します。

sudo vncpasswd /etc/vnc_passwd

作成後、パーミッションを変更してOtherのRead権限を付加します。
(本当はやりたくないんですが、これやらないとログインに失敗します。)

sudo chmod o+r vnc_passwd

LightDMの設定

xinetd経由で起動するようにした場合、LightDM(ディスプレイマネージャ)の設定も必要です。
Raspbianであれば既にインストールはされているので、設定ファイルを変更します。

/etc/lightdm/lightdm.conf (変更箇所のみ)

[LightDM]
(中略)
xserver-allow-tcp=true  ←追加

[SeatDefaults]
(中略)
#autologin-user=pi  ←コメントアウト

[XDMCPServer]
enabled=true ←アンコメント

ちなみにこれ、raspi-configの『3 Enable Boot to Desktop/Scratch』で設定を変更すると、
/etc/lightdm/lightdm.confの一部が書き換わるみたいです。

最後に、LightDMを自動起動するように変更します。

sudo update-rc.d lightdm enable