Raspberry Pi(Raspbian)で,VNCを使って他のマシンから接続できるようにする。
Raspbianをインストールすると,デフォルトでVNCサーバーであるrealvnc-vnc-serverがインストールされている。
これは主に,標準のデスクトップをミラー化してリモートデスクトップ環境を実現するためにインストールされている。
しかしこの機能は有効にはなっていないので,使用する場合はraspi-configから有効化する必要がある。
rootユーザーでraspi-configを起動して,
# raspi-config
このようにしてVNCサーバーを有効化する。
これは,
# systemctl enable vncserver-x11-serviced.service # systemctl start vncserver-x11-serviced.service
と同じ。
動作を確認する場合には,
$ netstat -nlt
として,ポート番号=5900があればVNCサーバーが動作している。
DISPLAY番号:0 でミラー化されたリモートデスクトップとして使用できる環境になっている。実際には,rootユーザーでvncserver-x11-servicedを実行している。
このVNCサーバーに他のPCから接続するには,VNCクライアントでポート5900で接続する。
そうするとRasbianのデスクトップが,リモートデスクトップとして操作できる。
この時のVNCのセットアップは,/etc/vnc/xstartupにより行われる。
realvnc-vnc-serverでは,ユーザーモードで起動させるvncserver(vncserver-virtualのシンボリックリンク)もインストールされている。
任意のユーザー権でVNCサーバーをDISPLAY番号=:1で起動する場合は,
$ vncserver :1 -geometry 1280x720
のようにする。
この時,~/.vnc/xstartupがあればそれを使ってXを起動する。(作成しなければファイルが存在しない)
ただ,realvnc-vnc-serverでは,Desktop環境を使わないX Windowは~/.vnc/xstartupでうまく設定できない。
/etc/vnc/xstartupファイルを削除すればDesktop環境を使わないX Windowが起動できるが,この方法では副作用があって使いにくい。
上記のように,特定の用途ではrealvnc-vnc-serverは使いにくい。
そこで,Rasbianで標準でインストールされているrealvnc-vnc-serverをアンインストールして,代わりにTightVNC(tightvncserver)とx11vncを導入してみる。
Rasbian標準でインストールされているVNCサーバーではなく,TightVNC(tightvncserver)をVNCサーバーとして利用してみる。
TightVNC(tightvncserver)であれば,~/.vnc/xstartupの設定によりDesktop環境を使わないX Windowも問題なく起動できる。
TightVNC(tightvncsever)をRaspbianにインストールする。
# apt install tightvncserver
このようにaptでtightvncserverをインストールすると,標準でインストールされているrealvnc-vnc-serverは自動的にアンインストールされる。
その後,vncserver(実体はtightvncserver)を一度起動する。
$ cd $ rm -rf .vnc $ vncserver
ここで,接続のためのパスワードを設定する。
この時,~/.vnc/xstartupファイルが作成される。
VNCサーバーが起動してるかは,netstatで確認できる。
$ netstat -nlt 稼働中のインターネット接続 (サーバのみ) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 tcp 0 0 0.0.0.0:5901 0.0.0.0: LISTEN tcp 0 0 0.0.0.0:6001 0.0.0.0: LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0: LISTEN tcp6 0 0 :::22 ::: LISTEN
ポート番号=5901でVNCサーバーが動作している。
一旦,vncserverを停止する。
$ vncserver -kill :1
自動起動させるために,/etc/init.d/vncbootファイルを以下の内容で作成する。
- ! - | | | | | | | | ! - ! - | | - ! | | | | | | | | | | | | | | |
|
実行権を付けておく。
# chmod 755 /etc/init.d/vncboot
自動起動するように登録する。
# update-rc.d vncboot defaults
~/.vnc/xstartupファイルを以下のように編集する。
Xsessionを動かさないようにしている。このようにすると,Desktop環境を使わないX Windowが起動できる。Windowは黒一色に設定。
これで,TightVNC(tightvncserver)のセットアップが出来た。
Raspberry Piを再起動する。
別のPCでVNCクライアントからポート番号=5901で接続して動作を確認する。
x11vncは,標準で起動するX Windowのデスクトップをvncでリモートデスクトップ化できるVNC Server。
上記のように,Rasbianで標準のVNC Serverであるrealvnc-vnc-serverをアンインストールして,ユーザーモードVNC Serverとしてのtightvncserverが既にインストールされている環境にx11vncをインストールする。
パッケージ管理ツールでインストールする。
# apt install x11vnc
vncで接続する時のパスワードを設定する。
# x11vnc -storepasswd /etc/.x11vncpasswd Enter VNC password: ← パスワード入力 Verify password: ← パスワード確認入力 Write password to /etc/.x11vncpasswd? [y]/n Password written to: /etc/.x11vncpasswd
これで,/etc/.x11vncpasswdファイルが作成される。
x11vncを起動してみる。
# x11vnc -auth guess -display :0 -rfbauth /etc/.vncpasswd -rfbport 5900 -forever -loop -noxdamage -repeat -shared
別のPCでVNCクライアントからポート番号=5900で接続して動作を確認する。
問題なければ,Ctrl + Cで停止させる。
/etc/systemd/system/x11vnc.serviceファイルを以下の内容で作成する。
|
自動起動するようにsystemdに登録して,起動しておく。
# systemctl daemon-reload # systemctl enable x11vnc # systemctl start x11vnc
標準のデスクトップをミラー化してリモートデスクトップ環境にデフォルトのVNCサーバーであるrealvnc-vnc-serverを使い,ユーザーモードのVNC ServerとしてTigerVNCを使う方法。
TigerVNCはTightVNCからフォークされたVNC Serverで,TightVNCではRANDR拡張には対応していないがTigerVNCでは対応している。
インストールは,パッケージ管理ツールからインストールできる。
# apt install tigervnc-standalone-server tigervnc-common tigervnc-viewer
realvnc-vnc-serverのミラー化のリモートデスクトップ機能(vncserver-x11-serviced)は,そのまま使用できる。
TigerVNCを上記の方法でインストールすると,ホームディレクトリにあった.vnc以下は削除されている。
TigerVNCを,一度起動する。
$ vncserver
ここで,接続のためのパスワードを設定する。
一旦,vncserverを停止する。
$ vncserver -kill :1
これで~/.vnc以下のファイルが作成される。
~/.vnc/xstartupファイルを作成しておく。
この例では,Xsessionを動かさないようにしている。このようにすると,Desktop環境を使わないX Windowが起動できる。Windowは黒一色に設定。
実行権をつける。
$ chmod 755 .vnc/xstartup
自動起動させるために,/etc/init.d/vncbootファイルを以下の内容で作成する。
- ! - | | | | | | | | ! - ! - | | - ! | | | | | | | | | | | | | | |
|
実行権を付けておく。
# chmod 755 /etc/init.d/vncboot
自動起動するように登録する。
# update-rc.d vncboot defaults
新しくコメントをつける