Raspberry Pi OS セットアップメモ

いつもやってるRaspberry Pi OSのセットアップ、だいたい手順が決まってるので忘れないように記録しておこうと思います。

f:id:hollyhockberry:20210906184703j:plain

2021/9/20追記
Raspberry Pi ImagerのAdvanced optionsを使用するように内容を更新しました。結果内容がスカスカに・・・

目次

Raspberry Pi Imager

Raspberry PiのOSをSDカードに書き込むには、Raspberry Pi Imagerを使うのが楽ちんですね。

www.raspberrypi.org

私はmacOSな人なのでHomebrewでインストールします。

brew install --cask raspberry-pi-imager

f:id:hollyhockberry:20210906170644p:plain

Operation Systemは何でもいいけど、GUIは不要なので大抵いつもRaspberry Pi OS Liteをインストールしてる気がします。

Advanced options

Raspberry Pi Imager はv1.6以降、Advanced optionsの設定ができるようになっているそうです。

www.raspberrypi.org

SSHの有効化やWiFi設定、その他raspi-configで環境に合わせて設定するような項目がSDイメージ書き込みと共に行えるようです。これは便利!

Raspberry Pi Imager起動して、command+shift+x を押すとAdvanced optionsダイアログが表示されます(Windowsは多分control+shift+x)

f:id:hollyhockberry:20210920181435p:plain

なんか ~/.sshのpublic-keyを拾ってくれてるようです。
キーチェーンの使用を許可すると現在macが繋がっているWi-FiSSIDとパスワードも入力済みになるみたいです。
なんか至れり尽くせりですね・・・。

必要な設定を入力して SAVEを押した後、いつも通りWRITEで書き込みます。

ちなみに、 毎回同じ値を入れるよって場合はImage customizeation optionsの選択をto always useにするといいです。

Raspberry Pi上でのセットアップ

ログイン

初期状態ではpiというユーザでログインします。
パスワードとホスト名はAdvanced optionsで設定されたものとなります。
デフォルトのホスト名は raspberrypiなので以降の説明はデフォルト値として記載します。

mDNSが有効なので、 raspberrypi.localで名前解決できます。便利。

$ ssh pi@raspberrypi.local

swapファイルの無効化

SDカードの寿命をちょっとでも長くしたいので、スワップファイルを無効化します。

$ sudo systemctl disable dphys-swapfile

ソフトウェアアップデート

ここまで来たらソフトウェアアップデートしておきます。
パッケージとOSを更新かけるので、そこそこ時間がかかるため休憩タイムですね。

$ sudo apt update && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean

ユーザ名の変更

デフォルトのユーザ名を変えたいよー、って場合。

  1. 仮ユーザ作成
  2. 仮ユーザでログイン
  3. ユーザpiのユーザ名変更
  4. 仮ユーザ削除

の流れで行います。

仮ユーザtmp作成。
sudoのグループに追加して、適当なパスワードを設定します。

$ sudo useradd -M tmp
$ sudo gpasswd -a tmp sudo
Adding user tmp to group sudo
 sudo passwd tmp
New password: 
Retype new password: 
passwd: password updated successfully

tmpでログインし直し、piのユーザ名を変更します。

$ sudo usermod -l 新しいユーザ名 pi
$ sudo usermod -d /home/新しいユーザ名 -m 新しいユーザ名
$ sudo groupmod -n 新しいユーザ名 pi

新しいユーザ名でログインし直して、仮ユーザを削除します

$ sudo userdel tmp

パス無しsudoの禁止

デフォルトだとpiにパス無しsudoが有効になってるので削除しておく。

$ sudo rm /etc/sudoers.d/010_pi-nopasswd 

ファイアウォール

ufwを使ってファイアウォールを設定します。
まずはインストール。

$ sudo apt install ufw

インストールしてstatusを見てみると・・

$ sudo ufw status
ERROR: problem running iptables: iptables v1.8.2 (legacy): can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

なんかエラーが出ちゃいますね。iptablesのバージョンがどうのこうの言われてます。

raspberrypi.stackexchange.com

上記のサイトによると iptablesを変更するそうです。

$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

rebootしたらエラーは無くなってるはずです。

$ sudo ufw status
Status: inactive

晴れてエラーが回避されたので早速設定していきます。
と言っても細かい設定はせず、LAN内のみ許可するだけです。

ufwを有効にして・・

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

まずは全て禁止にして・・

$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

必要なポートを許可します。
我が家のルータはセグメントは 10.0.1.xx で割り振られていたので、その範囲からのアクセスをallowで設定します。

$ sudo ufw allow from 10.0.1.0/24
Rule added

うまく設定できてるのかよくわかりませんが、こんな感じです。
間違ってたら(優しく)教えてください。