Raspberry Pi のセットアップ方法2020めも

みなさん、Raspberry Pi使ってますか。

むかしむかし買ったはいいものの引き出しに眠っている方から、引き出しに無造作に何台も転がっているツワモノまでいらっしゃることでしょう。

私は最近Raspberry Piを使ってなにかを作ることが多いので、そろそろ共通のセットアップ方法をメモしておくことにしました。

こんなパターンに利用できる手順を目指します。

このエントリの方法がいつまで使えるか分かりませんが、Raspbianが機会があるたびに便利になってるのでこれからもマメに調べた方がよさそうです。

起動前の作業

microSDにRaspbianを焼きこむついでに、無線LAN設定とIP設定を済ませてしまいます。

ddでOSを焼きこむ。

$ sudo dd if=2020-02-13-raspbian-buster-lite.img of=/dev/sdb bs=1M status=progress

/boot直下に空ファイルsshを置いてやることでsshdが有効化されます。

$ cd /path/to/microSD/boot
$ touch ssh

無線LAN設定も同じく/boot直下に作成します。

$ vim wpa_supplicant.conf

wpa_supplicant.conf

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="YOUR_SSID_HERE"
    psk="PASSWORD_HERE"
    key_mgmt=WPA-PSK
}

/rootfs/etcをマウントし、IPアドレスも設定します。

$ cd /path/to/microSD/rootfs/etc/
$ vim dhcpcd.conf

dhcpcd.conf

interface wlan0
static ip_address=192.168.x.x/24
static routers=192.168.x.1
static domain_name_servers=192.168.x.1 8.8.8.8

起動後の作業

さて、ここまで準備したmicroSDカードをRaspberry Piに差し込み、起動します。

設定したIPアドレスSSHでログインできるので、適宜sudo raspi-config等で設定したり、sudo apt update sudo apt upgrade等でいい感じにアップデートします。

HDMI出力を無効化し、省電力化をはかります。

HDMIは以下コマンドで無効化できますが、起動するたびにコマンドを叩くのは面倒なので自動化します。

$ /usr/bin/tvservice -o
$ /usr/bin/tvservice --help
Usage: tvservice [OPTION]...
  -p, --preferred                   Power on HDMI with preferred settings
  -e, --explicit="GROUP MODE DRIVE" Power on HDMI with explicit GROUP (CEA, DMT, CEA_3D_SBS, CEA_3D_TB, CEA_3D_FP, CEA_3D_FS)
                                      MODE (see --modes) and DRIVE (HDMI, DVI)
  -t, --ntsc                        Use NTSC frequency for HDMI mode (e.g. 59.94Hz rather than 60Hz)
  -c, --sdtvon="MODE ASPECT [P]"    Power on SDTV with MODE (PAL or NTSC) and ASPECT (4:3 14:9 or 16:9) Add P for progressive
  -o, --off                         Power off the display
  -m, --modes=GROUP                 Get supported modes for GROUP (CEA, DMT)
  -M, --monitor                     Monitor HDMI events
  -s, --status                      Get HDMI status
  -a, --audio                       Get supported audio information
  -d, --dumpedid <filename>         Dump EDID information to file
  -j, --json                        Use JSON format for --modes output
  -n, --name                        Print the device ID from EDID
  -l, --list                        List all attached devices
  -v, --device                      Specify the device to use (see --list)
  -h, --help                        Print this information

起動時にコマンドを実行するために crontabを設定します。

ファイルを作って

$ vim crontab.prm
# m h  dom mon dow   command
@reboot /usr/bin/tvservice -o

登録します。

$ crontab crontab.prm

おまけ

私はRaspberry Piで作ったものがある程度完成した時点で、ファイルシステムをReadOnly化しています。

microSDの寿命的にもメリットがありますが、なによりいきなり電源を切ってもいいのが便利。

昔はカーネルにパッチあててビルドして…なんて修行が必要でしたが、今はraspi-configからさくっと設定できます。

$ sudo raspi-config

Advanced Options > Overlay FS > 有効化 、これだけ!

f:id:polaroidoon:20200419001054p:plain

f:id:polaroidoon:20200419001110p:plain

ということで、楽しいRaspberry Piライフを!