SDカードでも動作するRaspberry Pi。テストや用途別に何度もインストールを行うのですが、楽に初期設定が出来ればと思い、自動化を考えてみました。初心者の方もご覧ください。
2022年1月28日に64bit版「bullseye」がリリースされたので更新
2022年4月以降からデフォルトのユーザー「pi」が使用できなくなったので改修
準備するもの
- Raspberry Pi OS
ココからダウンロードします - ライティングソフト
balenaEtcher(即ダウンロードを開始します) - ターミナルソフト
RLoginがおすすめです
RLogin お急ぎダウンロードからダウンロードします(Windows 64bit用) - USB OTGアダプタ(キーボード接続の必要に応じて)
使用するRaspberry Piによって端子の形が異なります(下表参照)
本体の仕様を確認してから購入しましょう
Raspberry Pi Zeroには、micro USB TypeBのOTGアダプタを準備しておくことをお勧めします
- HDMIアダプタ(モニタ接続の必要に応じて)
使用するRaspberry Piによって端子の形が異なります(下表参照)。見た目だけで判断すると間違いやすいので、事前に本体の仕様をよく確認してから購入しましょう - USB-LANアダプタ
本体がPi Zero系の場合、SSH接続設定が楽になります
ラズパイ本体 | USB形状 | HDMI形状 |
---|---|---|
Raspberry Pi 3 B+ | USB2.0 TypeA | 通常 |
Raspberry Pi Zero W | micro USB TypeB | mini HDMI |
Raspberry Pi 4 B | USB3.0 TypeA | micro HDMI |
セットアップ
SDカードへのセットアップを行います
外付けUSBドライブにインストールする場合も1枚は作成してください
balenaEtcherで書込み
- WindowsPCにてbalenaEtcherを起動します
- 「Select image」ボタンより、先に準備したRaspberry Pi OSを指定します(圧縮のままで可)
- WindowsPCにSDカードを差し込み、「Select target」に認識させます
- 「Flash!」ボタンを押下してbalenaEtcherで書き込みます
- SDカードを抜き差しし、PCに再認識させます
- これ以降の作業をSSH接続で行える様にするため、SDカードの「BOOT」領域にファイル名「ssh(拡張子無し)」を作成します
Windowsの標準では拡張子が非表示のため、拡張子が無いか確認しておく事 - Wifi接続する場合、SDカードの「BOOT」領域にファイル名「wpa_supplicant.conf」を作成し、エディタで下記の内容を保存します
(暗号化は後で行います 改行コードはLFで保存してください)
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid=”[SSID]”
psk=”[パスワード]”
}
- 「pi/raspberry」のデフォルトユーザーが使用禁止になったので、SDカードの「BOOT」領域にファイル名「userconf.txt」を作成し、ファイル内に「(ユーザー名):(パスワード(暗号化したもの))」を記載して保存します
暗号化したパスワードは、ココで生成するか、以下のコマンドで生成できます(Windowsの場合アプリのインストールが必要です)
openssl passwd -6 (パスワード文字列)
(あまりお勧めしませんが、「pi/raspberry」ユーザーの文字列も置いておきます)
pi:$6$aL8GiNQRmEwl0KSy$MAFy/aPA7cY8itcYHC4.LOus/FyF9lPxB9jGF0LSN1fYqDCa3.VPEC2FP7W2MGlABNKcpRp1jiJ9QQ.L4k8fd0
Raspberry Piの起動
- Raspberry Piに1.で作成したSDカードを差し込み、電源を入れます
- WindowsPCでターミナルソフトを起動し、下記の接続設定をしてSSH接続します
- ホスト名「raspberrypi.local」又はIPアドレス
(ルーター等で割り当てられたIPアドレスを確認して下さい) - ログインユーザー名(上記「userconf.txt」で指定したユーザー名)
- パスワード(上記「userconf.txt」で指定したパスワード)
→接続成功時は自動設定コマンドの実行へ進む
- ホスト名「raspberrypi.local」又はIPアドレス
- SSH接続できない時はRaspberry PiにUSBキーボードを接続し、以下の順に入力してSSH接続を有効にします
正常に接続出来た場合、- 「(上記「userconf.txt」で指定したユーザー名)↲」
- 「(上記「userconf.txt」で指定したパスワード)↲」
- 「sudo systemctl start ssh↲」
- 上記3.にて接続できなかった場合、USキーボードレイアウト又はSSHが起動していない可能性があります
Raspberry Piにモニタを接続して起動の後、上記3.同様にログインを行い以下のコマンドを実行してSSHを有効にします
これでSSH接続が有効になるので、上記2.の手順に戻り実行します
sudo raspi-config nonint do_ssh 0
USキーボードの場合、アンダーバーの入力は[SHIFT]+ひらがな[ほ]のキーで入力できます
自動設定コマンドの実行
- ターミナルソフトにてログインを行い、以下のコマンドを実行します
※ 設定パラメータの各項目を編集して実行してください
sudo su
###########################
## 設定パラメータ
###########################
# 新しいRaspberry Pi名
newHostname="[名称]"
# Wi-Fi利用 0:未使用 1:使用 ~~~~~~~~~~~
# Wi-Fi SSID/passphrase
useWiFi=1
newSSID="[SSID]"
newPassphrase="[パスワード]"
# IPv6利用 0:未使用 1:使用 ~~~~~~~~~~~
useIPv6=0
# Bluetooth利用 0:未使用 1:使用 ~~~~~~~~
useBT=0
# Triggerhappy(ショートカット) 0:未使用 1:使用 ~
useTH=0
###########################
## コマンド実行
###########################
# 1.Hostname(PC名)の変更
raspi-config nonint do_hostname $newHostname
# 2.ロケーション
raspi-config nonint do_change_locale ja_JP.UTF-8
# 3.タイムゾーンの変更
raspi-config nonint do_change_timezone Asia/Tokyo
# 4.キーボードレイアウト
echo # KEYBOARD CONFIGURATION FILE > /etc/default/keyboard
echo '' >> /etc/default/keyboard
echo # Consult the keyboard(5) manual page. >> /etc/default/keyboard
echo '' >> /etc/default/keyboard
echo XKBMODEL="pc105" >> /etc/default/keyboard
echo XKBLAYOUT="jp" >> /etc/default/keyboard
echo XKBVARIANT="OADG109A" >> /etc/default/keyboard
echo XKBOPTIONS="" >> /etc/default/keyboard
echo BACKSPACE="guess" >> /etc/default/keyboard
# 5.ネットワーク関連設定
# 5.1.IPv6の無効化
if [ $useIPv6 = 0 ]; then echo net.ipv6.conf.all.disable_ipv6=1 >> /boot/sysctl.conf; fi
if [ $useIPv6 = 0 ]; then echo net.ipv6.conf.default.disable_ipv6=1 >> /boot/sysctl.conf; fi
# 5.2.Wi-Fi利用国の設定
raspi-config nonint do_wifi_country JP
# 5.3.WPAの設定
if [ $useWiFi != 0 ]; then wpa_passphrase $newSSID $newPassphrase | grep -v '^\s*#' >> /etc/wpa_supplicant/wpa_supplicant.conf; fi
# 6.不要サービスの無効化
if [ $useWiFi = 0 ]; then echo dtoverlay=pi3-disable-wifi >> /boot/config.txt; fi
if [ $useBT = 0 ]; then echo dtoverlay=pi3-disable-bt >> /boot/config.txt; fi
if [ $useBT = 0 ]; then systemctl stop bluetooth.service && systemctl disable bluetooth.service; fi
if [ $useBT = 0 ]; then systemctl stop hciuart.service && systemctl disable hciuart.service; fi
if [ $useTH = 0 ]; then systemctl stop triggerhappy.service && systemctl disable triggerhappy.service; fi
# 7.システムアップデート
apt update && sudo apt -y upgrade && sudo apt -y autoremove
再起動
以下のコマンドを実行し、再起動します
上記セットアップ時に作成したユーザー、パスワードを入力し、ログインしてください
sudo reboot
外付けUSBドライブへセットアップ
SDカードにRaspberry Pi OSを作成、起動後、以下の手順にてセットアップします
USBブートの有効化
- 以下のコマンドにてUSB起動モードを有効にする(3b+以降は不要と思われます)
sudo apt install -y rpi-update
sudo rpi-update
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
echo program_usb_timeout=1 | sudo tee -a /boot/config.txt
sudo reboot
Windows 共有ドライブのマウント
- WindowsPCにてRaspberry Pi OSを解凍(圧縮展開)します
- Windowsのフォルダ共有にて、解凍先を外部参照可能の状態にします
- Raspberry Piにて、以下のコマンドでマウントフォルダを作成しマウントします
sudo mkdir /mnt/win
sudo mount -t cifs -o username=[Windowsユーザー名],password=[Windowsパスワード] //192.168.0.1/dir /mnt/win
USBドライブのパーティション作成、フォーマット
- Raspberry Piにて、以下のコマンドでパーティション作成、フォーマットします
sudo parted /dev/sda
(parted)mktable msdos
(確認メッセージに対し)Yes
(parted)mkpart primary fat32 0% 100M
(parted)mkpart primary ext4 100M 100%
(parted)print
(parted)quit
sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2
本設定では、BOOT領域に100MByteを割当てています
DDコマンドでの書き込み
- Raspberry Piにて、以下のコマンドで書き込みます
sudo dd bs=4M conv=fsync if=/mnt/win/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/sda status=progress
- sshで接続できるように、以下のコマンドで「ssh」ファイルを追加します
また、初期ユーザー設定ファイルも作成しておきます(ファイルの内容はbalenaEtcherで書込み.8を参照ください)
sudo mkdir -p /mnt/target
sudo mount /dev/sda2 /mnt/target/
sudo su
echo > /mnt/target/boot/ssh
nano /mnt/target/boot/userconf.txt
Raspberry Piの再起動
- 上記処理終了後、Raspberry Piをシャットダウンし、セットアップに使用したSDカードを抜きます
- Raspberry Piの電源を入れます
- コマンドラインにて、RaspberryPiの起動.2.同様にSSHを有効にします
- WindowsPCでターミナルソフトを起動し、上記同様に自動設定コマンドを実行して下さい