FlatIsleロゴ

Flat Isle 日誌

Raspberry Pi のセットアップ

2022-11-01

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 Wmicro USB TypeBmini HDMI
Raspberry Pi 4 BUSB3.0 TypeAmicro HDMI
本体別コネクタ形状一覧

セットアップ

SDカードへのセットアップを行います
外付けUSBドライブにインストールする場合も1枚は作成してください

balenaEtcherで書込み

  1. WindowsPCにてbalenaEtcherを起動します
  2. 「Select image」ボタンより、先に準備したRaspberry Pi OSを指定します(圧縮のままで可)
  3. WindowsPCにSDカードを差し込み、「Select target」に認識させます
  4. 「Flash!」ボタンを押下してbalenaEtcherで書き込みます
  5. SDカードを抜き差しし、PCに再認識させます
  6. これ以降の作業をSSH接続で行える様にするため、SDカードの「BOOT」領域にファイル名「ssh(拡張子無し)」を作成します
    Windowsの標準では拡張子が非表示のため、拡張子が無いか確認しておく事
  7. 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=”[パスワード]”
}
  1. 「pi/raspberry」のデフォルトユーザーが使用禁止になったので、SDカードの「BOOT」領域にファイル名「userconf.txt」を作成し、ファイル内に「(ユーザー名):(パスワード(暗号化したもの))」を記載して保存します
    暗号化したパスワードは、ココで生成するか、以下のコマンドで生成できます(Windowsの場合アプリのインストールが必要です)
openssl passwd -6 (パスワード文字列)

(あまりお勧めしませんが、「pi/raspberry」ユーザーの文字列も置いておきます)

pi:$6$aL8GiNQRmEwl0KSy$MAFy/aPA7cY8itcYHC4.LOus/FyF9lPxB9jGF0LSN1fYqDCa3.VPEC2FP7W2MGlABNKcpRp1jiJ9QQ.L4k8fd0

Raspberry Piの起動

  1. Raspberry Piに1.で作成したSDカードを差し込み、電源を入れます
  2. WindowsPCでターミナルソフトを起動し、下記の接続設定をしてSSH接続します
    • ホスト名「raspberrypi.local」又はIPアドレス
      (ルーター等で割り当てられたIPアドレスを確認して下さい)
    • ログインユーザー名(上記「userconf.txt」で指定したユーザー名)
    • パスワード(上記「userconf.txt」で指定したパスワード)
      →接続成功時は自動設定コマンドの実行へ進む
  3. SSH接続できない時はRaspberry PiにUSBキーボードを接続し、以下の順に入力してSSH接続を有効にします
    正常に接続出来た場合、
    • 「(上記「userconf.txt」で指定したユーザー名)↲」
    • 「(上記「userconf.txt」で指定したパスワード)↲」
    • 「sudo systemctl start ssh↲」
  4. 上記3.にて接続できなかった場合、USキーボードレイアウト又はSSHが起動していない可能性があります
    Raspberry Piにモニタを接続して起動の後、上記3.同様にログインを行い以下のコマンドを実行してSSHを有効にします
    これでSSH接続が有効になるので、上記2.の手順に戻り実行します
sudo raspi-config nonint do_ssh 0

USキーボードの場合、アンダーバーの入力は[SHIFT]+ひらがな[ほ]のキーで入力できます

自動設定コマンドの実行

  1. ターミナルソフトにてログインを行い、以下のコマンドを実行します
    ※ 設定パラメータの各項目を編集して実行してください
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ブートの有効化

  1. 以下のコマンドにて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 共有ドライブのマウント

  1. WindowsPCにてRaspberry Pi OSを解凍(圧縮展開)します
  2. Windowsのフォルダ共有にて、解凍先を外部参照可能の状態にします
  3. Raspberry Piにて、以下のコマンドでマウントフォルダを作成しマウントします
sudo mkdir /mnt/win
sudo mount -t cifs -o username=[Windowsユーザー名],password=[Windowsパスワード] //192.168.0.1/dir /mnt/win

USBドライブのパーティション作成、フォーマット

  1. 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コマンドでの書き込み

  1. Raspberry Piにて、以下のコマンドで書き込みます
sudo dd bs=4M conv=fsync if=/mnt/win/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/sda status=progress
  1. 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の再起動

  1. 上記処理終了後、Raspberry Piをシャットダウンし、セットアップに使用したSDカードを抜きます
  2. Raspberry Piの電源を入れます
  3. コマンドラインにて、RaspberryPiの起動.2.同様にSSHを有効にします
  4. WindowsPCでターミナルソフトを起動し、上記同様に自動設定コマンドを実行して下さい