Raspberry Pi 初期設定メモ
公開日:
カテゴリ: Raspberry Pi
Raspberry Pi を買ってみたので、初期設定のメモを残しておきます。
現在のRaspberry Piは5が最新版ですが、今回買ったのは4Bのため、最新モデルでは一部異なるかもしれません。
本記事では、Raspberry Pi OS(Lite)でWiFi接続の完全ヘッドレス環境の構築が目標となります。
microSDにイメージを展開
まずはRaspberry PiのストレージとしてmicroSDを用意し、そこにOSイメージを展開します。
公式がRaspberry Pi Imagerというツールを配布しているので、それを使用するのが便利で最も手軽です。
Raspberry Pi OSを使用する場合、Desktop版がデスクトップありのGUI環境、Lite版がデスクトップなしのCUI環境です。
ImagerではOSイメージを選択すると自動でダウンロードが行われますが、別途用意したOSイメージを使用することもできます。Raspberry Pi OSでOSのみのダウンロードも可能です。
ImagerではSSHとWiFi等の基本的な設定が行えます。以下のものを適宜設定します。
- ユーザ名(piは非推奨)
- ホスト名
- タイムゾーン
- WiFi接続情報
- WiFi国設定
- SSH接続情報
最近のRaspberry Pi OSではwpa_supplicantからNetworkManagerに変わっているので、/wpa_supplicant.conf
は使えません。また、WPA3は使えないようです。
SSHは-sk鍵(セキュリティキー)も使えます。
ちなみに/boot
以外のファイルシステムはext4のため、Windowsでは見えません。やろうと思えばWSL経由でマウントできるようです。
電源投入
Raspberry Pi 4には電源ボタンはなく、接続したUSBを通電させると即電源が入ります。Raspberry Pi 5では電源ボタンが設置されたようです。
初期設定
起動したらSSHで接続します。-sk鍵を使う場合、接続元のOpenSSHのバージョンを確認しておきましょう。Windowsの場合、まだ標準組み込みのOpenSSHでは-sk鍵は使えないため、Win32-OpenSSHのv8.9以降が必要です。
root無効化
お馴染みのやつです。
# ログイン試行時にエラーメッセージ(/etc/nologin.txt)を出す
sudo usermod -s /sbin/nologin root
# ログイン試行時にエラーメッセージを出さない
sudo usermod -s /bin/false root
IPv6の無効化(任意)
今のところ、使う予定がないので無効化しておきます。
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf > /dev/null
sudo sysctl -p
# 確認(inet6の行がなければOK)
ip a
ネットワーク設定
サーバ用途で使用する場合、IPが固定化されていないと不便なので固定化します。ついでに、デフォルトゲートウェイやDNSも設定しておきます。
sudo nmcli con mod "AP名" ipv4.addresses "IPアドレス/24"
sudo nmcli con mod "AP名" ipv4.gateway "デフォルトゲートウェイIP"
sudo nmcli con mod "AP名" ipv4.dns "DNSサーバIP"
Raspberry Piの設定
Raspberry Pi Imagerで設定できない項目を設定します。
# raspi-configのアップデート
sudo raspi-config nonint do_update
# rootfsの拡張
sudo raspi-config nonint do_expand_rootfs 0
# 冷却ファン稼働の閾値(公式冷却ファンを使用している場合のみ)
# 以下の例では60度以上で稼働
sudo raspi-config nonint do_fan 0 14 60
ここまで設定したら、一旦再起動します。
sudo reboot
パッケージの更新
いつもの。
sudo apt update
sudo apt upgrade -y
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt autoclean -y
Swapの無効化
ストレージがSDカードのため、寿命対策で仮想メモリは無効にします。
sudo apt autoremove -y dphys-swapfile
一時ファイルをtmpfsに設定
こちらもSDカードの寿命対策で一時ファイルをtmpfs(RAMDISK)に設定します。どこまでtmpfsにするかは用途やお好みで(筆者は/tmp
と/var/tmp
のみにしました)。
echo "tmpfs /tmp tmpfs defaults,size=64m,noatime,mode=1777 0 0" | sudo tee -a /etc/fstab > /dev/null
echo "tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0" | sudo tee -a /etc/fstab > /dev/null
# ログディレクトリのtmpfs化はお好みで
echo "tmpfs /var/log tmpfs defaults,size=16m,noatime,mode=0755 0 0" | sudo tee -a /etc/fstab > /dev/null
上記コマンドではfstabの設定を行っただけで、即時にtmpfsとしてマウントされるわけではないので、再起動するかmountコマンドでマウントが必要です。
sudo reboot
/var/tmp
の容量が小さいと、パッケージの更新時に容量不足でエラーとなる場合があります。その場合、一時的にtmpfsを解除するか、サイズを上げて再マウントするかしてください。
# 再マウント
sudo mount -o remount,size=1G,noatime,mode=1777 /tmp
sudo mount -o remount,size=1G,noatime,mode=1777 /var/tmp
その他設定
以降は用途次第で。
ufwの導入
ファイアウォールのインストール・設定です。
# ufwのインストール
sudo apt install -y ufw
# デフォルトルールを拒否に設定(おそらく初期値は拒否と思われるが念の為)
sudo ufw default deny
# 拒否に設定すると自分のSSH接続ができなくなるため許可設定
sudo ufw allow proto tcp from "接続元IP" to 0.0.0.0/0 port 22
# ファイアウォールの有効化
sudo ufw enable
# サービスとして設定(PC起動時に自動開始)
sudo systemctl enable ufw
Dockerの導入
Dockerは公式の簡易導入スクリプトがあるので、それをDLして実行するのが最も簡単です。
cd ~
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
rm -f get-docker.sh
sudo systemctl enable docker
公式のスクリプトでは、aptにdockerのリポジトリが追加されるため、以後はaptの更新コマンドでdockerも更新できます。
docker-composeは、現在はdocker
コマンドのサブコマンド(docker compose
)で同じことができるため、基本的に追加導入は不要です。
昇格(sudo
)無しでdocker
コマンドを使いたい場合は、dockerグループに自分のログインユーザを追加します(実質的にsudo無しで特権を持つことになるので注意)。
sudo usermod -aG docker 自分のユーザ名
初期設定は一旦ここまでです。
カテゴリ: Raspberry Pi