自動起動で悩んでいる人へ(Raspberry Pi 4)【tightvncserver】

自動起動で悩んでいる人へ(Raspberry Pi 4)【tightvncserver】

# はじめに

この記事はmacからVNCを使用し、Raspberry Pi4(以下、ラズパイと表記)をリモートで操作したい方、かつ自動起動ができなくて困っている方へ向けとなります。 僕自身、設定でハマったので、この環境での解決方法を記載しておきます。

前提となるtightvncserverのインストールやサーバーの初回起動までの設定は以下の記事が丁寧で、とても参考になります。ただ、自動起動はスコープではないので、そこからは自身でのリサーチが必要になります。
👉macしかない状況でRaspberry Piに接続してみた


# 環境

僕の環境はこちら。 上がmac、下がラズパイです。

  • macOS Catalina version 10.15.6
  • Linux raspberrypi 5.4.51-v7l+ #1327 SMP Thu Jul 23 11:04:39 BST 2020 armv7l GNU/Linux

また、今回使用している、LABISTSが販売しているキットのセットアップ方法は以下の記事で解説していますので、興味がある方は是非読んでみてください。
👉【RaspberryPi4】インストールと初期設定してみた【Raspbian】


# 自動起動がうまくいかない

結論から先に記載すると、tightvncserverが自動起動しない(=5901ポートがLISTENにならない)、エラーも出ない。なぜだという話。

まずはうまくいかなかった手順です。その後に解決策を記載しているので、お急ぎの方は左部分の目次から移動してください。

色々見てみると下記リンクのサイトがとてもわかりやすく、その手順に沿って設定を行っていきました。(基本的に古いタイムスタンプのサイトが多いので、この辺りも原因として影響しているのかもしれません。)
👉Raspberry PiのVNCサーバーの自動起動の設定と自分のローカルIPの自動メール送信設定で捗るVNCライフ

流れとしては

  1. 自動起動用のスクリプトを書く
  2. 所定のディレクトリに配置
  3. 権限変更
  4. update-rc.dコマンドを叩く
  5. rebootして確認

が概要です。

# ハマった箇所

参考にしたスクリプトは以下の通りです。 これをvncbootとしてセーブして、権限を変更後、sudo update-rc.d vncboot defaultsコマンドを実行します。

実行後、再起動をして確認しましたが、5901ポートが一向にLISTENになりませんでした。

#! /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=pi
HOME=/home/pi

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

# 解決方法

この環境での解決方法は、スクリプトで設定するユーザをrootユーザとすることです。 改訂版のスクリプトは以下です。

! /bin/sh
# /etc/init.d/vncboot

### 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

USER=root
HOME=/root

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 1792x1120 -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

再起動後、netstat -nltコマンドを実行して5901ポートがLISTENとなっていることを確認できました。

稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
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     
tcp6       0      0 :::22                   :::*                    LISTEN 

これでラズパイが立ち上がった後にtightvncサーバーを手動で起動する手間から解放されました。 ※rootユーザでログインしているので、操作とセキュリティには注意してください。


以上。 良きラズパイライフを😊


デジタル分野やビジネス関連で学んだことを記事にしています。
Read moreやTagから他記事を検索できますので合わせてどうぞ😊

Philipp
Read more