はじめに
Raspberry Pi 4から、モニター出力がmicroHDMI端子になりました。
しかし、私のようにIoT機器としてRaspberry Piを利用する人にとってはかなり無縁な代物なので、リモート操作のみでモニター同様のセットアップする手順を、備忘録として残します。
準備物
RaspberryPiを動かすには以下を揃えれば、起動できます。
- Raspberry Pi 4 ModelB 2GB
- ケース
- USB-Type C 電源アダプター
- microSDカード 64GB
- PC
OSイメージの書き込み
Raspberrypi公式サイトから_Raspberry Pi Imager_をダウンロードします。
WindowsはRaspberry Pi Imager for Windows
、MacはRaspberry Pi Imager for macOS
を選択します。
ダウンロードしたらインストール作業は短調なので省略。
起動すると以下のような画面が表示されるのでSDカードへOSをインストールするための設定をします。
-
Operating System
からRaspbery Pi OS
を選択 -
SD Card
から書き込むSDカードを選択 - 書き込む準備ができたら
WRITE
から書き込みを開始
書き込みが完了したらCONTINUE
からSDカードが取り出されます。
初回設定
再度、SDカードをマウントし、boot
というデバイスが表示されることを確認します。
Raspberry Pi 初回起動時から以下のことを解決するためにファイルを作成します。
作成するファイル | 内容 |
---|---|
boot/ssh | ssh起動するためのファイル |
boot/wpa_supplicant.conf | 無線LAN接続を設定するためのファイル |
まず、空ファイルのboot/ssh
を作成します。
Windows
- 右クリックから
新規作成 > テキストドキュメント
を選択 - ファイル名
ssh(拡張子の .txtは不要)
を作成
Mac
1.コマンドでtouch /Volumes/boot/ssh
を実行します。
同じ要領で無線LAN接続用にboot/wpa_supplicant.conf
を作成したら、中身を各環境に合わせて記述し保存します。
以下の例では、WiーFiのSSIDをssid_name
、パスワードをpassword
として設定しています。
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="ssid_name"
psk="password"
}
SSH接続
SDカードをRaspberry Piに装着し起動後に、SSH接続します。
raspberrypi.local
というホスト名に対してユーザーpi
で接続します。
Windows
WindowsはTeraterm等のSSH接続用ソフトウェアを使って接続します。
Tera Termを起動し、ホストにraspberrypi.local
と入力し、OK
をクリックします。
ユーザ名にpi
、パスフレーズにraspberry
を入力し、OK
をクリックします。
Raspberry PiにSSH接続した画面が表示されます。
pi@raspberrypi:~ $
Mac
ssh ユーザー名@ホスト名
でSSH接続できます。
ssh pi@raspberrypi.local
初回接続時に証明書関係の応答メッセージが返ってくるのでyes
を入力します。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
初期パスワードraspberry
を入力します。
pi@raspberrypi.local's password:
Raspberry PiにSSH接続した画面が表示されます。
pi@raspberrypi:~ $
初期パスワード変更
SSH接続できたらパスワードを変更します。
$ sudo raspi-config
セキュリティ観点からWi-Fiに接続する前にpiユーザーの初期パスワードを変更するため、1 Change User Password
を選択します。
OK
を選択します。
新しいパスワードを2回入力します。
New password:
Retype new password:
以下の画面が表示されれば、パスワード変更が完了します。Ok
を選択します。
Finish
を選択してraspi-configを終了します。
ソフトウェアアップデート
初期アップデート、アップグレードします。
$ sudo apt-get update
$ sudo apt-get upgrade -y
vimインストール
Raspbianに標準で入っているvimはvim-tinyという最小構成版なので、矢印キーやバックスペースキーが使えません。
そのため、標準のvimを再インストールし、キーボード操作を受付けるためのvimrcファイルを作成します。
$ sudo apt-get install vim -y
$ cat <<EOF > ~/.vimrc
set nocompatible
set backspace=indent,eol,start
set autoindent
set nowrap
set ruler
syntax on
EOF
IPアドレス固定化
VNCでリモートデスクトップ接続する際にIPアドレスを固定化が必要となるため、その設定を行います。
IPアドレス固定化に必要となる情報は以下の通り。
- プライベートアドレスのCIDR
- ゲートウェイIP
- インターフェース名
これらの情報を取得するために、route -n
から情報を取得します。
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 303 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
取得した情報から次のような結果であることがわかりました。
項目 | 値 | 備考 |
---|---|---|
プライベートアドレスCIDR | 192.168.0.0/24 | サブネットマスク:255.255.255.0=CIDR:24 |
ゲートウェイIP | 192.168.0.1 | ルーターのIPアドレス |
インターフェース名 | wlan0 | Raspberry Piの無線LAN接続口 |
CIDRは24なので固定IPアドレスとしては192.168.0.2~192.168.0.254の中から選べるわけですね。
もちろん、その他デバイスが接続しているIPアドレスと被らない範囲で設定する必要があります。
※現在のRaspberry Piに割り当てられているプライベートIPアドレスはWi-FiからDHCPで割り当てられたIPアドレスのため、DHCPで振られない範囲のIPアドレスを割り当てるのが一番の得策ですが、各ご家庭のルーター設定によるので、ここでは割愛。
IPアドレスを固定化するための設定ファイルをvimで修正します。
$ sudo vi /etc/dhcpcd.conf
取得した情報を基に固定IPアドレスを最下部に設定します。
今回は既に割り当てられているプライベートアドレスを固定します。
vimの使い方についてはviエディタの使い方を参考にしてください。
interface wlan0
static ip_address=192.168.0.100
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
Raspberry Piを再起動します。
$ sudo shutdown -r 0
再度、IPアドレス経由でSSH接続できれば設定完了です。
VNCサーバーインストール
モニター無しでもGUI操作するためのリモートデスクトップ可能な環境を作ります。
その建前として必要になるVNCサーバーをインストールします。
$ sudo apt-get install tightvncserver -y
VNCサーバーを起動すると、初回は_リモートデスクトップするためのパスワード_設定を求められますので、これを設定します。
$ tightvncserver
Password:
Warning: password truncated to the length of 8.
Verify:
閲覧用のパスワードも設定するか求められますが、好みで設定してください。
筆者は設定しないためn
を選択しました。
Would you like to enter a view-only password (y/n)? n
VNCサーバー自動起動設定
VNCサーバーはRaspberry Piが再起動したりすると、VNCサーバーが終了してしまうので、自動起動するための設定をする必要があります。
VNCサーバーを自動起動するための起動スクリプトを作成します。
$ cd /etc/init.d/
$ sudo vi vncboot
vncbootの中身は以下の通りです。
ちなみに-geometry 1280x720
の部分でデスクトップの解像度を指定していますので、好みで調整します。
#! /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
vncbootを作成したら実行権限を割り当て、自動起動させるためのシンボリックリンクを付与します。
$ sudo chmod 755 /etc/init.d/vncboot
$ sudo update-rc.d vncboot defaults
再起動し、VNCで接続ができるか確認します。
$ sudo shutdown -r 0
VNC接続
VNCクライアントソフトを用いて、PCからリモートデスクトップする準備をします。
ここではVNC Viewerをインストールした接続方法を記述しています。
VNC Viewer起動後、以下のような画面が表示されるのでRaspberry Piの固定IPアドレス:5901
と入力しアクセスします。
Unencrypted connection
が表示されますが、(フリーのVNCクライアントを使うと暗号化したコネクションは出来ないので)そのままContinue
で進みます。
パスワードを要求されるのでVNCサーバーインストール時に設定したパスワードを入力しOK
をクリックします。
初回時は以下のような画面が表示されるのでGive access
をクリックします。
すると、Raspberry Piへリモートデスクトップで接続することができます。
以上で、モニターやmicroHDMIがなくてもRaspberry Piのセットアップができた。
RaspberryPiを新たに触る人たちの助けになれば幸いです。