[ラズパイ x 環境構築] Wi-FiとSSHから行うRaspberryPi Zero Wのセットアップ方法
※ 当ページには【広告/PR】を含む場合があります。
2021/02/11
とても今更感はあるのですが、以前手に入れたRaspberry Pi Zeroをしばらく放置していたのを思い出したので、いつでも何かに使えるようにセットアップ方法をメモしておきます。
なお通常サイズのRaspberry Pi 3/4B系のセットアップは以前記した記事の内容の方で詳しく解説していたのでよろしければそちらの内容をご参照ください。
Raspberry Pi Zeroをセットアップする前の注意点
Raspberry Pi Zeroの初回のOSインストールで一番困ってしまうのが、ラズパイシリーズでばらつきのあるHDMI端子の規格ではないかと思います。
著者が手持ちで良く利用しているのがRaspberry Pi 3B+ですが、この製品のディスプレイ接続HDMIポートは最も標準的なタイプ(Type-A)です。 今やパソコンやテレビ、ゲーム機などでお馴染みのものでHDMIといえばこの形状を思い浮かべる方も多いかと思います。
それで今回説明するRaspberry Pi Zero W/WHは、Type-Aよりも一回り小さいタイプのmini-HDMI(Type-C)接続の端子ポートが採用されています。
なので液晶ディスプレイに接続する場合は、ディスプレイ側のHDMI端子(Type-A)と、ラズパイZeroW側のmini-HDMI端子(Type-C)を備えているケーブルか、異形変換アダプターが必要になってきます。
それはそれで最近ではRaspberry Pi 4Bを購入されて使われている方も多いような状況でありますが、こちらはmicro-HDMI端子(Type-D)を採用しています。 このmicro-HDMI端子は主にスマホやタブレットなどで利用されているケーブルであり、Type-Cよりさらに小さい端子サイズになります。
このような事情がありラスパイ一台ごとにHDMIケーブルを用意するにも、適切なHDMIケーブルが用意出来なければ液晶ディスプレイに接続できないし、OS周りの初回設定ができない...という状況を想定して、ディスプレイ接続を利用しないセットアップ方法を行いたいと思います。
ディスプレイレスなRaspberry Pi ZeroのSSHからの設定手順
ではここからは具体的に何かしらのホストOSからラズパイをSSH接続させてセットアップさせる方法を順次やっていきます。
Raspberry Pi OS Liteの導入
Raspberry Pi Zeroの用途だと、最低限のパッケージが使える
Lite

ここから適切なmicroSDカードにダウンロードしてきたイメージを適切なイメージライター焼いておきます。
この手のSDカードへのイメージの書き込みの手順はウェブ検索などでも無数に引っかかりますので、ここでは説明をスキップします。
イメージがSDカードに書き込まれたらこのSDカードの中身のフォルダが編集できるように、別のパソコンに接続します。
このときMacOSやWindowsなどのオートマウントしてくれるOSでSDカードの編集するのが一番手っ取り早いですが、今回は手元のPCがLinux(別のラズパイに入れたRaspberry Pi OSを含む)でマウント後に設定を追加していきます。
SSHとWiFiの設定
まずは先程のSDカードを別の
LinuxOSパソコンに挿す前
$ ls /dev/ | grep -e 'sd'
sda
sda1
sda2
sda5
ここでは
sd
次にSDカードをこのパソコンにUSB接続して、再度同じコマンドで確認すると、
$ ls /dev/ | grep -e 'sd'
sda
sda1
sda2
sda5
sdb
sdb1
sdb2
なにやら手元の環境では
sdb
Raspberry Pi OS Lite
おそらくはメインが
sdb1
sdb2
/media
$ sudo mount -t vfat /dev/sdb1 /media
$ ls /media
COPYING.linux bcm2711-rpi-4-b.dtb issue.txt
LICENCE.broadcom bcm2711-rpi-400.dtb kernel.img
'System Volume Information' bcm2711-rpi-cm4.dtb kernel7.img
bcm2708-rpi-b-plus.dtb bootcode.bin kernel7l.img
bcm2708-rpi-b-rev1.dtb cmdline.txt kernel8.img
bcm2708-rpi-b.dtb config.txt overlays
bcm2708-rpi-cm.dtb fixup.dat start.elf
bcm2708-rpi-zero-w.dtb fixup4.dat start4.elf
bcm2708-rpi-zero.dtb fixup4cd.dat start4cd.elf
bcm2709-rpi-2-b.dtb fixup4db.dat start4db.elf
bcm2710-rpi-2-b.dtb fixup4x.dat start4x.elf
bcm2710-rpi-3-b-plus.dtb fixup_cd.dat start_cd.elf
bcm2710-rpi-3-b.dtb fixup_db.dat start_db.elf
bcm2710-rpi-cm3.dtb fixup_x.dat start_x.elf
どうやら
sdb1
ではこのフォルダのファイルを編集していきます。
まずはSSHを有効にする作業ですが、このsdb1ボリュームのルートに
ssh
$ cd /media/
$ sudo touch ssh
次に、Wi-Fiの設定もここで行います。
Wi-Fiの設定は
wpa_supplicant.conf
$ sudo touch wpa_supplicant.conf
$ sudo nano wpa_supplicant.conf
#👇以下の内容で編集
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="WiFi機器から得られるSSID"
psk="WiFi機器から得られるパスワード"
key_mgmt=WPA-PSK
}
なお、既に同じようにWi-Fiネットワークに繋いでいるラズパイがあれば、
/etc/wpa_supplicant/wpa_supplicant.conf
ではこの設定が済んだら、ボリュームをアンマウントします。
#👇アンマウントするために一旦mediaフォルダからログアウトする
$ cd ~
$ sudo umount /media
$ ls /media
#マウントしていたボリュームの内容が消えていることを確認
アンマウントが完了したら、パソコンからSDカードを引っこ抜いてもOKです。
ちなみに上で設定した
ssh
wpa_supplicant.conf
SSH接続の確認
いよいよ先程のmicroSDをRaspberry Pi Zero側に差し込んで、電源を供給して起動します。
ますがSSHできちんと接続できるかを試します。
まずは動的にWi-Fi接続されて状態ですので、IP値を調べる必要があります。 家庭内のブロードバンドルーターであれば、何かしらの管理ユーティリティツールが使えるので、そこで接続している個体を確認することができます。

手元の環境では
192.168.0.103
肝心のSSH接続のほうはというと、Raspberry Pi OSのデフォルト設定ではユーザー名は
pi
raspberry
$ ssh pi@192.168.0.103
#パスワードを入力...
pi@raspberrypi:~ $
となりようやくモニターなしの操作でラズパイに接続できました。
この時点で先にアップデートを行いましょう。
$ sudo apt update
$ sudo apt upgrade
再起動後は、あとはもうSSH接続を確立できればしめたもので、デフォルトユーザー名を変えたり、IPアドレス値を固定したりと、細かい設定が別の端末から操作できます。
Dockerのインストール
この項目はオプションとして、Raspberry Pi Zeroのスペックを考えるとDockerは少し重いのですが軽めのコンテナであれば問題なく動作します。 何かと入れておくと便利ですので導入をオススメしておきます。
インストール手順は
Wi-Fiを常時接続しておく設定
Raspberry Pi Zeroの用途としては、その省電力性を活かした常時稼働する使い方が期待されるので、実はこのパートが今回一番説明したかったポイントになります。
Raspberry Pi OSのデフォルトだとパワーマネジャーが一定時間接続がアイドル状態になってしまった時に、そのままWi-Fi機能を休止させてしまうため、リモートで簡易サーバーのような使い方をしていた場合に突然通信が途絶えてしまいます。 もうこうなってしまうと一度電源を落として強制再起動をかけないといけなくなりますが、これが遠隔地においたファイルサーバーで使っていたラズパイで起こってしまうと目も当てられない事態になってしまいます...。 そうならないためには、power management機能を使って、きちんとWi-Fi電源が常時起動している状態にしていないといけません。
まずデフォルトでは以下のようにwi-fiのpower management機能がONになっていることが確認できます。
$ iwconfig wlan0
wlan0 IEEE 802.11 ESSID:"TP-Link_***"
Mode:Managed Frequency:2.427 GHz Access Point: 74:DA:88:3B:80:77
Bit Rate=72.2 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on #👈電源管理機能はON
Link Quality=64/70 Signal level=-46 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:20 Invalid misc:0 Missed beacon:0
そこで、このpower managementを以下のコマンドで切ります。
$ sudo iwconfig wlan0 power off
$ wconfig wlan0
wlan0 IEEE 802.11 ESSID:"TP-Link_***"
Mode:Managed Frequency:2.427 GHz Access Point: 74:DA:88:3B:80:77
Bit Rate=72.2 Mb/s Tx-Power=31 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:off #👈電源管理機能はOFF
Link Quality=65/70 Signal level=-45 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:20 Invalid misc:0 Missed beacon:0
しかしこれだけでは次回のラズパイ起動時に再びPower ManagementがONに戻ってしまうため、再起動後に自動でOFFになるように
/etc/rc.local
$ sudo nano /etc/rc.local
#!/bin/sh -e
#...中略
#👇exit 0の手前に以下の一行を追加
iwconfig wlan0 power off
exit 0
また再起動の度に
/etc/rc.local
sudo raspi-config
[1. System Options] > [S6. Network at Boot]

ラズパイ再起動後に
wconfig wlan0
まとめ
以上の内容でRaspberry Pi OSを新しくmicroSDを書き込んでから、Raspberry Pi Zeroで利用する際までに、直接モニターを介さずにワイヤレスな環境からSSHのみでセットアップする方法の概要になります。
もちろん、SSH接続してラズパイ側を操作できるためのセットアップ用のパソコンが最低1台は必要にはなりますが、WindowsやMacOSでのSDカードへの書き込み操作は、今回例に挙げたLinuxでの作業よりマウント/アンマウントの手順が省けるため、もっと簡単にはなると思います。
今回はセットアップ作業にフォーカスを当てましたが、今後は時間の許す限りで、Raspberry Pi Zeroの具体的な使いこなしの例も話題として取り上げていければなぁと考えています。