いつもやってるRaspberry Pi OSのセットアップ、だいたい手順が決まってるので忘れないように記録しておこうと思います。
2021/9/20追記
Raspberry Pi ImagerのAdvanced optionsを使用するように内容を更新しました。結果内容がスカスカに・・・
目次
Raspberry Pi Imager
Raspberry PiのOSをSDカードに書き込むには、Raspberry Pi Imagerを使うのが楽ちんですね。
私はmacOSな人なのでHomebrewでインストールします。
brew install --cask raspberry-pi-imager
Operation Systemは何でもいいけど、GUIは不要なので大抵いつもRaspberry Pi OS Liteをインストールしてる気がします。
Advanced options
Raspberry Pi Imager はv1.6以降、Advanced optionsの設定ができるようになっているそうです。
SSHの有効化やWiFi設定、その他raspi-config
で環境に合わせて設定するような項目がSDイメージ書き込みと共に行えるようです。これは便利!
Raspberry Pi Imager起動して、command+shift+x
を押すとAdvanced optionsダイアログが表示されます(Windowsは多分control+shift+x
)
なんか ~/.ssh
のpublic-keyを拾ってくれてるようです。
キーチェーンの使用を許可すると現在macが繋がっているWi-FiのSSIDとパスワードも入力済みになるみたいです。
なんか至れり尽くせりですね・・・。
必要な設定を入力して 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
ユーザ名の変更
デフォルトのユーザ名を変えたいよー、って場合。
- 仮ユーザ作成
- 仮ユーザでログイン
- ユーザpiのユーザ名変更
- 仮ユーザ削除
の流れで行います。
仮ユーザ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のバージョンがどうのこうの言われてます。
上記のサイトによると 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
うまく設定できてるのかよくわかりませんが、こんな感じです。
間違ってたら(優しく)教えてください。