ラズパイの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から繋いでみます。
ポート番号は5900 + vncserver起動時に表示されたディスプレイ番号
無事接続できているようです。
ここで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