元号も令和に改まったのでRaspberryPiを再セットアップした

Raspbianの再セットアップをした

元号も令和に改まったので、ゴールデンウィークの間にRaspbianを再セットアップしておいた
今回の作業もmacOSで行いました

設定メモ

まずは最新版のOSイメージをダウンロードする

Raspbian

GUIは必要ない派のため「Raspbian Stretch Lite」をダウンロードしました

Raspbian Stretch Lite

ダウンロードしたzipアーカイブはThe Unarchiverを利用して解凍してimgファイルを取り出しておきます

Raspbianを書き込む先になるmicroSDを特定する

今回はmicroSDを再利用しました
消去してしまうので、必要な設定ファイルなどは適宜バックアップを取っておきます

$ diskutil list
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk4
   1:             Windows_FAT_32 boot                    43.8 MB    disk4s1
   2:                      Linux                         15.5 GB    disk4s2

※ 今回は/dev/disk4でmicroSDが認識されているようです

RaspbianのOSイメージを書き込むためmicroSDをアンマウントする

$ sudo diskutil unmountDisk /dev/disk4
Password:
Unmount of all volumes on disk4 was successful

RaspbianのOSイメージをmicroSDに書き込む

$ sudo dd bs=1m if=~/Downloads/2019-04-08-raspbian-stretch-lite.img of=/dev/disk4
1720+0 records in
1720+0 records out
1803550720 bytes transferred in 797.970784 secs (2260171 bytes/sec)

ssh接続を有効にしておく

bootとしてマウントされているWindows_FAT_32パーティションにsshという空ファイルを作成しておく

$ diskutil list
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.6 GB    disk4
   1:             Windows_FAT_32 boot                    43.8 MB    disk4s1
   2:                      Linux                         1.8 GB     disk4s2

$ touch /Volumes/boot/ssh

取り外したmicroSDをRaspberryPiに取り付けて起動する

$ sudo diskutil unmountDisk /dev/disk4
Password:
Unmount of all volumes on disk4 was successful

RaspberryPiに接続する

$ ssh pi@raspberrypi.local

※ 初期パスワード:raspberry

RaspberryPiに接続できたらやっておくべきこと

パスワードの変更

$ passwd
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

ホスト名の変更

$ sudo raspi-config nonint do_hostname pi01

※ 同一ネットワーク上に複数のRaspberryPiが接続されてしまうことも考慮してホスト名は変更しておく

最新にアップデート

$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt dist-upgrade
$ sudo apt -y autoremove
$ sudo rpi-update

TimeZoneの設定

$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo dpkg-reconfigure -f noninteractive tzdata

swapを使わない

$ sudo systemctl disable dphys-swapfile
$ sudo dphys-swapfile swapoff
$ sudo apt -y remove dphys-swapfile

IPv6を無効化する

$ sudo bash -c "echo net.ipv6.conf.all.disable_ipv6 = 1 >> /etc/sysctl.conf"

IPアドレスを割り当てる

※ ルータのポート開放をして外部からのアクセスをRaspberryPiに向ける場合

$ sudo nano /etc/dhcpcd.conf
interface eth0
static ip_address=192.168.1.254/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8 8.8.4.4

テンポラリ領域のRAMディスク化

※ 少しでもSDカードを長持ちさせるために

$ sudo nano /etc/fstab
tmpfs           /tmp            tmpfs   defaults,size=32m,noatime,mode=1777  0       0
tmpfs           /var/tmp        tmpfs   defaults,size=16m,noatime,mode=1777  0       0

$ sudo rm -rf /tmp
$ sudo rm -rf /var/tmp
$ sudo reboot

sshの設定

端末側の共有鍵を送る
$ scp .ssh/id_rsa.pub pi@raspberrypi.local:
pi@raspberrypi.local's password:
id_rsa.pub
.sshディレクトリを作成して共有鍵を保存する
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ mv ~/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

※ .sshディレクトリのアクセス権はきちんと設定しておく

公開鍵認証を有効にする
$ sudo nano /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin no
AuthorizedKeysFile     %h/.ssh/authorized_keys

$ sudo service ssh restart

※ パスワード認証を無効化するかどうかはケースバイケースで

$ sudo nano /etc/ssh/sshd_config
PasswordAuthentication no

$ sudo service ssh restart

無線LANの設定

アクセスポイントに接続する
$ sudo raspi-config nonint do_wifi_country JP
$ wpa_passphrase "ap_ssid" "ap_passphrase" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
network={
    ssid="ap_ssid"
    #psk="plaintext_ap_passphrase"
    psk=encryptedtext_ap_passphrase
    scan_ssid=1  # SSIDをステルスにしている場合に追加する
}
無効にする
$ sudo iwconfig wlan0 txpower off

GPUメモリ割り当て変更

$ sudo raspi-config nonint do_memory_split 16

Broadcom BCM2835のWatchdog Timerを有効化しておく

$ sudo nano /boot/config.txt
dtparam=watchdog=on

$ sudo nano /etc/modprobe.d/bcm2835-wdt.conf
options bcm2835_wdt heartbeat=30 nowayout=0

$ sudo nano /etc/systemd/system.conf
RuntimeWatchdogSec=15

$ sudo reboot

$ dmesg | grep bcm2835-wdt
[    0.711984] bcm2835-wdt 3f100000.watchdog: Broadcom BCM2835 watchdog timer