テレビ(モニタ)も無い、マウスも無い、キーボードも無い。
そんな WiFi と MacBookPro と SD カードアダプタしかない「ど田舎」で、RaspberryPi3(Raspbian OS Lite)を新規セットアップ & SSH 接続を可能にするサバイバル設定方法。LAN ケーブルなんか、もちろんないよ。
TL;DR
ブートディスク(SD カード)にあらかじめ、「WiFi の接続設定ファイル」と「SSH 接続許可ファイル」を設置しておき、WiFi 経由でラズパイに SSH 接続して設定する。
Jessie Lite だけでなく Stretch Lite/Buster Lite でも同じ手順で動作しました。
TS;DR(サバイバル環境下でラズパイ3をセットアップする)
ヘッドレス1な RaspberryPi3 に Raspbian(Jessie Lite)を新規にインストールして WiFi 経由で SSH 接続する必要がありました。タイトルにあるような極めて限定された条件下で試行錯誤した結果をまとめました。(Buster Lite のより詳しい手順はこちら)
-
Mac で Raspbian OS のイメージをダウンロードする。ヘッドレス用途がメインなら軽量版の
Lite
を選ぶ。
(ダウンロードしたファイルのチェックサム(SHA-256 の値)を確認したい場合はshasum -a 256 ファイル
で確認する) -
Etcher でイメージを SD にコピーする。
(boot
という名前で初期化される。書き込み後 Finder や/Volumes
に表示されない場合は、SD カードリーダーを抜き差しする) -
SD カードの
/boot
直下に ssh ファイルを置く。(空でよい)bash$ touch /Volumes/boot/ssh
-
SD カードの
/boot
直下にwpa_supplicant.conf
ファイルを置き WiFi 設定を記載する。
国コードがポイント。psk は""
で囲うこと。bash$ sudo vi /Volumes/boot/wpa_supplicant.conf
wpa_supplicant.confの内容country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="<YOUR SSID>" psk="<YOUR PASSWROD>" }
- 既存のラズパイが別途ある場合は設定ファイルをコピーしても可能、その場合は
/etc/wpa_supplicant/wpa_supplicant.conf
にあるファイルをコピーすること。 - ラズパイ3 の WiFi は 2.4GHz です。アクセスポイントが 5GHz だとつながらないので注意。
- 既存のラズパイが別途ある場合は設定ファイルをコピーしても可能、その場合は
-
SD カードをラズパイ3に挿して、電源投入。
(ラズパイの LED が定期的に点滅している場合はエラーが発生しています。文末の参考文献参照) -
raspberrypi.local
に PING を飛ばし、現れたらデフォルトのアカウント(ユーザーを "pi
"、パスワードを "raspberry
")でssh
接続して設定を続ける。
(ping
が戻ってこない場合、bonjour
による名前解決が出来ていない可能性もあります。IP アドレスでping
を飛ばしてみたいと思うも「DHCP で IP わからん」系の場合、ラズパイの起動前・起動後でネットワーク上にラズパイがいるか arp コマンドを使って調べてみるのも手だと思います。)$ ssh -l pi raspberrypi.local The authenticity of host 'raspberrypi.local (fe80::0000:0000:0000:0000%en0)' can't be established. ECDSA key fingerprint is SHA256:og46cbmOXd36c3N4ntXXXXXXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'raspberrypi.local,fe80::0000:0000:0000:0000%en0' (ECDSA) to the list of known hosts. pi@raspberrypi.local's password: <パスワード> Linux raspberrypi 4.19.57+ #1244 Thu Jul 4 18:42:50 BST 2019 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. -bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi:~ $ pi@raspberrypi:~ $ sudo raspi-config
以上
設定のポイント
国コードを指定すること。国コードが指定されていないと、国ごとに許可された( WiFi の)周波数帯を特定できないため、接続先を解決できません。吸った揉んだしたのですが、ネットのどの情報も SSH の設定だけだったり、有線 LAN での初期セットアップ後が前提で、どこも「WiFi と SSH Ready な状態でブートディスクを作る」方法と「国コード」に言及していなかったので記事にしました。
検証環境(実績のある機器の型番など)
- MacBookPro と WiFi 環境
- MacBookPro(Retina, 13in, Early2015, 8GB)
- macOS Sierra(OSX 10.12.6)
- 2.4GHz(g), WPA2-PSK+AES, BUFFALO
- RaspberryPi3
- BCM2835, Rev.A22082
- ブランクの microSD カードと USB SD カードリーダー
- Digio2 CRW-38M56BK(ナカバヤシ株)
- Transcend 16GB microSD HC I
- ラズパイ用電源アダプタと電源用USBケーブル×1本
- GCF315S-0630(株ケイエスワイ)×付属ケーブル
セットアップに普通は必要だけどないもの「HDMI モニタ、HDMI ケーブル、USB マウス、USB キーボード、HUB やルーター、LAN ケーブル、LAN アダプタ、OTG 対応の USB ケーブル」
参考文献
Wi-Fi
If a
wpa_supplicant.conf
file is placed into the/boot/
directory, this will be moved to the/etc/wpa_supplicant/
directory the next time the system is booted, overwriting the network settings; this allows a Wifi configuration to be preloaded onto a card from a Windows or other machine that can only see the boot partition.
(Tweaks | The latest update to Raspbian @ ラズパイ公式ブログ より)
SSH
3. Enable
SSH
on a headless Raspberry Pi (add file to SD card on another machine)For headless setup, SSH can be enabled by placing a file named
ssh
, without any extension, onto the boot partition of the SD card from another computer. When the Pi boots, it looks for thessh
file. If it is found, SSH is enabled and the file is deleted. The content of the file does not matter; it could contain text, or nothing at all.If you have loaded Raspbian onto a blank SD card, you will have two partitions. The first one, which is the smaller one, is the boot partition. Place the file into this one.
(Enable SSH on a headless Raspberry Pi | SSH (Secure Shell) @ ラズパイ公式ドキュメント より)
LED の点滅によるエラー
- 3 flashes: start.elf not found
- 4 flashes: start.elf not launch-able (corrupt) See below:
- 7 flashes: kernel.img not found
- 8 flashes: SDRAM not recognized. You need newer bootcode.bin/start.elf firmware, or your SDRAM is damaged
Potential reason for 4 flashes.
Note that 4 flashes could be an indication of a more or less broken SD-card connector. If Databit 1 is connected, but one of the other three Databits doesn't make contact, so the SD-card only works in 1-bit (SPI) mode, then this will lead to the four flashes error! Check if all pins of your card holder make good contact with the card!(Error ACT LED patterns | Is your Pi not booting? (The Boot Problems Sticky) @ ラズパイ公式フォーラム より)