Raspberry PiでVNCサーバーを利用する anchor.png

Raspberry Pi(Raspbian)で,VNCを使って他のマシンから接続できるようにする。

Page Top

Rasbianで標準インストールされるVNCサーバー anchor.png

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により行われる。

Page Top

realvnc-vnc-serverのユーザーモードでのVNC anchor.png

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が起動できるが,この方法では副作用があって使いにくい。

Page Top

TightVNCとx11vncを使用する anchor.png

上記のように,特定の用途では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と同じ機能。
Page Top

TightVNC(tightvncserver)をVNC Serverとして利用する anchor.png

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の所は希望の解像度に設定する
Everything is expanded.Everything is shortened.
-
!
-
|
|
|
|
|
|
|
|
!
-
!
 
 
 
 
 
-
|
|
-
!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#! /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は黒一色に設定。

Everything is expanded.Everything is shortened.
-
!
 
 
-
|
|
!
-
#!/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で接続して動作を確認する。

Page Top

x11vncを使ってデスクトップ画面をリモートデスクトップ出来るようにする anchor.png

x11vncは,標準で起動するX Windowのデスクトップをvncでリモートデスクトップ化できるVNC Server。

Page Top

x11vncのインストール anchor.png

上記のように,Rasbianで標準のVNC Serverであるrealvnc-vnc-serverをアンインストールして,ユーザーモードVNC Serverとしてのtightvncserverが既にインストールされている環境にx11vncをインストールする。

パッケージ管理ツールでインストールする。

# apt install x11vnc
Page Top

設定と動作確認 anchor.png

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で停止させる。

Page Top

自動起動するように設定する anchor.png

/etc/systemd/system/x11vnc.serviceファイルを以下の内容で作成する。

Everything is expanded.Everything is shortened.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[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
Page Top

x11vncについて anchor.png

x11vncは,realvnc-vnc-serverやUbuntu系に標準でインストールされているvinoなんかに比べると速度が遅い気がする。
しかし,別のX Windowを起動する他のVNC Serverと併用出来るので便利である。

Page Top

TigerVNCとRealVNC Server(vncserver-x11-serviced)を使用する anchor.png

標準のデスクトップをミラー化してリモートデスクトップ環境にデフォルトの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)は,そのまま使用できる。

Page Top

TigerVNCの設定と起動 anchor.png

TigerVNCを上記の方法でインストールすると,ホームディレクトリにあった.vnc以下は削除されている。

TigerVNCを,一度起動する。

$ vncserver

ここで,接続のためのパスワードを設定する。

一旦,vncserverを停止する。

$ vncserver -kill :1

これで~/.vnc以下のファイルが作成される。
~/.vnc/xstartupファイルを作成しておく。

Everything is expanded.Everything is shortened.
-
!
 
 
-
|
|
!
-
#!/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を念の為つける
    Everything is expanded.Everything is shortened.
    -
    !
    -
    |
    |
    |
    |
    |
    |
    |
    |
    !
    -
    !
     
     
     
     
     
    -
    |
    |
    -
    !
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    
    #! /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

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1013, today: 1, yesterday: 0
最終更新: 2023-05-02 (火) 12:30:33 (JST) (360d) by yuji