|
現: 2023-05-02 (火) 11:30:33 yuji  |
| + | * Raspberry PiでVNCサーバーを利用する [#j6d29f14] |
| + | Raspberry Pi(Raspbian)で,VNCを使って他のマシンから接続できるようにする。~ |
| | | |
| + | ** Rasbianで標準インストールされるVNCサーバー [#tf3f2614] |
| + | Raspbianをインストールすると,デフォルトでVNCサーバーである''realvnc-vnc-server''がインストールされている。~ |
| + | これは主に,標準のデスクトップをミラー化してリモートデスクトップ環境を実現するためにインストールされている。~ |
| + | |
| + | しかしこの機能は有効にはなっていないので,使用する場合は''raspi-config''から有効化する必要がある。~ |
| + | rootユーザーでraspi-configを起動して, |
| + | # raspi-config |
| + | - Interfacing Optionsを選択~ |
| + | - VNCを選択する~ |
| + | - Yesを選択する~ |
| + | The VNC Server is enabledと表示が出る。~ |
| + | |
| + | このようにして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のユーザーモードでのVNC [#t5647e71] |
| + | 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が起動できるが,この方法では副作用があって使いにくい。~ |
| + | |
| + | * TightVNCとx11vncを使用する [#n59f5efb] |
| + | 上記のように,特定の用途では''realvnc-vnc-server''は使いにくい。~ |
| + | そこで,Rasbianで標準でインストールされている''realvnc-vnc-server''をアンインストールして,代わりに''TightVNC(tightvncserver)''と''x11vnc''を導入してみる。~ |
| + | |
| + | - TightVNC(tightvncserver)~ |
| + | ユーザーモードのみで動作するVNC Serverで,通常のデスクトップ環境はもちろん,デスクトップ無しの単なる表示のみといった環境も作成できる。~ |
| + | realvnc-vnc-serverでの''vncserver-virtual''と同じ機能。~ |
| + | TightVNCでは,''X WindowのRANDR拡張機能には対応していない。''~ |
| + | - x11vnc~ |
| + | Rasbianで使われる物理的なディスプレイをミラー化してリモートデスクトップ環境を作成できるVNC Server。~ |
| + | realvnc-vnc-serverでの''vncserver-x11-servicedと''同じ機能。~ |
| + | |
| + | ** TightVNC(tightvncserver)をVNC Serverとして利用する [#c89741dc] |
| + | 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''ファイルを以下の内容で作成する。~ |
| + | - USERとHOMEは自分の環境にする~ |
| + | - ''-geometry 1280x720''の所は希望の解像度に設定する~ |
| + | |
| + | #code(bash,,nonumber){{ |
| + | #! /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=xxxxxx |
| + | HOME=/home/xxxxxx |
| + | |
| + | 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 1280x720 -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 |
| + | }} |
| + | |
| + | 実行権を付けておく。~ |
| + | # chmod 755 /etc/init.d/vncboot |
| + | |
| + | 自動起動するように登録する。 |
| + | # update-rc.d vncboot defaults |
| + | |
| + | ''~/.vnc/xstartup''ファイルを以下のように編集する。~ |
| + | Xsessionを動かさないようにしている。このようにすると,Desktop環境を使わないX Windowが起動できる。Windowは黒一色に設定。~ |
| + | #code(bash,,nonumber){{ |
| + | #!/bin/sh |
| + | |
| + | xrdb $HOME/.Xresources |
| + | xsetroot -solid black |
| + | #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & |
| + | #x-window-manager & |
| + | # Fix to make GNOME work |
| + | export XKL_XMODMAP_DISABLE=1 |
| + | #/etc/X11/Xsession |
| + | }} |
| + | |
| + | これで,TightVNC(tightvncserver)のセットアップが出来た。~ |
| + | Raspberry Piを再起動する。~ |
| + | 別のPCでVNCクライアントからポート番号=5901で接続して動作を確認する。 |
| + | |
| + | ** x11vncを使ってデスクトップ画面をリモートデスクトップ出来るようにする [#k46a3eeb] |
| + | x11vncは,標準で起動するX Windowのデスクトップをvncでリモートデスクトップ化できるVNC Server。~ |
| + | |
| + | *** x11vncのインストール [#zef9e223] |
| + | 上記のように,Rasbianで標準のVNC Serverである''realvnc-vnc-server''をアンインストールして,ユーザーモードVNC Serverとしての''tightvncserver''が既にインストールされている環境にx11vncをインストールする。~ |
| + | |
| + | パッケージ管理ツールでインストールする。~ |
| + | # apt install x11vnc |
| + | |
| + | *** 設定と動作確認 [#e28adad8] |
| + | 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で停止させる。 |
| + | |
| + | *** 自動起動するように設定する [#t5b40266] |
| + | ''/etc/systemd/system/x11vnc.service''ファイルを以下の内容で作成する。 |
| + | #code(bash,,nonumber){{ |
| + | [Unit] |
| + | Description=x11vnc (Remote access) |
| + | After=network-online.target |
| + | |
| + | [Service] |
| + | Type=simple |
| + | ExecStart=/usr/bin/x11vnc -auth guess -display :0 -rfbauth /etc/.x11vncpasswd -rfbport 5900 -forever -loop -noxdamage -repeat -shared |
| + | ExecStop=/bin/kill -TERM $MAINPID |
| + | ExecReload=/bin/kill -HUP $MAINPID |
| + | KillMode=control-group |
| + | Restart=on-failure |
| + | |
| + | [Install] |
| + | WantedBy=graphical.target |
| + | }} |
| + | |
| + | 自動起動するようにsystemdに登録して,起動しておく。~ |
| + | # systemctl daemon-reload |
| + | # systemctl enable x11vnc |
| + | # systemctl start x11vnc |
| + | |
| + | *** x11vncについて [#x3321eca] |
| + | x11vncは,''realvnc-vnc-server''やUbuntu系に標準でインストールされている''vino''なんかに比べると速度が遅い気がする。~ |
| + | しかし,別のX Windowを起動する他のVNC Serverと併用出来るので便利である。 |
| + | |
| + | * TigerVNCとRealVNC Server(vncserver-x11-serviced)を使用する [#f729c162] |
| + | ''標準のデスクトップをミラー化してリモートデスクトップ環境''にデフォルトの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の設定と起動 [#h5ceda1e] |
| + | TigerVNCを上記の方法でインストールすると,ホームディレクトリにあった.vnc以下は削除されている。~ |
| + | |
| + | TigerVNCを,一度起動する。~ |
| + | $ vncserver |
| + | ここで,接続のためのパスワードを設定する。~ |
| + | |
| + | 一旦,vncserverを停止する。~ |
| + | $ vncserver -kill :1 |
| + | |
| + | これで~/.vnc以下のファイルが作成される。~ |
| + | ''~/.vnc/xstartup''ファイルを作成しておく。~ |
| + | #code(bash,,nonumber){{ |
| + | #!/bin/sh |
| + | |
| + | xrdb $HOME/.Xresources |
| + | xsetroot -solid black |
| + | #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & |
| + | #x-window-manager & |
| + | # Fix to make GNOME work |
| + | export XKL_XMODMAP_DISABLE=1 |
| + | #/etc/X11/Xsession |
| + | }} |
| + | この例では,Xsessionを動かさないようにしている。このようにすると,Desktop環境を使わないX Windowが起動できる。Windowは黒一色に設定。~ |
| + | 実行権をつける。~ |
| + | $ chmod 755 .vnc/xstartup |
| + | |
| + | 自動起動させるために,''/etc/init.d/vncboot''ファイルを以下の内容で作成する。~ |
| + | - USERとHOMEは自分の環境にする~ |
| + | - ''-geometry 1280x720''の所は希望の解像度に設定する~ |
| + | - ''-localhost no''つける~ |
| + | - ''-idletimeout 0''を念の為つける~ |
| + | #code(bash,,nonumber){{ |
| + | #! /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=xxxxxx |
| + | HOME=/home/xxxxxx |
| + | |
| + | 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 1280x720 -depth 24 -localhost no -idletimeout 0' |
| + | ;; |
| + | |
| + | 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 |
| + | }} |
| + | |
| + | 実行権を付けておく。~ |
| + | # chmod 755 /etc/init.d/vncboot |
| + | |
| + | 自動起動するように登録する。 |
| + | # update-rc.d vncboot defaults |