新規購入した Raspberry Pi をセットアップする
Raspberry Pi 3 Model B 以来 3~4 年振りのラズパイを新規購入. 録画鯖用に Raspberry Pi 4 Model B 4GB を買った.
もう一台別用途で買うかもしれないのでやったことを書いておく.
用意するもの
Raspberry Pi 本体
メモリが 1GB / 2GB / 4GB から選べる.
困ったらとりあえず 4GB を買っておけば間違いない.
電源 (5V/3A 推奨)
Raspberry Pi 4 なので電源は USB Type-C. 推奨は 5V/3A 出力だけど, USB 周り使わないなら 2.4A とかでも動くらしい.
5V/3A のアダプタなんて中々ないしなーと思ってたけど, 秋月とかスイッチサイエンスに売ってたのでこれを使った.
microSDHC
最低限 16GB は欲しい. 32GB あれば余裕.
microSDXC を買うとフォーマットが面倒なので普通に microSDHC を買ったほうがいい.
ケース (必要なら)
今回は常時起動で使うのでファンとかヒートシンクもついてるこれを買った. 普通に良いデザインなのでサーバーにしておくのが惜しい.
これに付属してるファンに限らず, GPIO で動くファンは shutdown
コマンドで電源落としても USB Type-C の電源抜かないと回り続けるので, 気になる人はスイッチで完全に電源を切れるアダプタ付きのを買ったほうがいい気がする.
LAN ケーブル (必要なら)
有線で作業する場合のみ必要. 自分はルーターから生えてるケーブルをそのまま使った.
後で書くけど wpa_supplicant.conf
を最初に作れば無線 LAN だけでセットアップ完結出来るし別になくてもいい.
Raspbian を microSD に焼く
Raspbian をダウンロードして microSD に焼く.
デスクトップ用途では使わないので Raspbian Lite をダウンロードした.
https://www.raspberrypi.org/downloads/raspbian/www.raspberrypi.org
本家からダウンロードすると時間掛かりすぎて一生終わらないので, JAIST のミラーからダウンロード するといい.
ダウンロードした zip ファイルを展開して img ファイルを microSD に書き込む.
自分は macOS を使ってるので dd
コマンドを使って書き込んだ.
# diskutil list を使って microSD の場所を調べておく $ diskutil list # フォーマットする $ diskutil eraseDisk MS-DOS rpi /dev/disk2 $ diskutil umount /dev/disk2 $ sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2
書き込み終わったら microSD の /boot
に ssh
という名前の空ファイルを作っておく. (/boot/ssh
があると SSH がオンになる.)
無線 LAN を使う場合は /boot
に wpa_supplicant.conf
ファイルを作っておくと, 起動時に Wi-Fi に繋がる.
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ルーターの SSID" psk="ルーターのパスワード" }
ラズパイに SSH で接続する
ルーターの管理画面なり何なりでローカルの IP アドレス調べて SSH で接続する.
初期のユーザー / パスワードは pi
/ raspberry
.
$ ssh pi@192.168.0.xxx
raspi-config を使って初期設定する
raspi-config
コマンドを使って
などをする
$ sudo raspi-config
終わると再起動する必要があるので再起動して再度ログインする.
apt のミラーを設定する
初期設定の raspbian.raspberrypi.org
でもミラーに転送してくれるけど, 最初から日本のサーバーに設定しておく.
/etc/apt/sources.list
を編集する.
# 初期のはコメントアウトしておく #deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi # JAIST あたりを追加する deb http://ftp.jaist.ac.jp/raspbian/ buster main contrib non-free rpi
IP アドレスを固定しておく
/etc/dhcpcd.conf
に IP アドレスを書き込むか, ルーター側で IP アドレスを固定するかのどっちか.
dhcpcd.conf
に書く場合は以下のような感じに
# 有線 interface eth0 static ip_address=192.168.1.xxx/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8 # 無線 interface wlan0 static ip_address=192.168.1.xxx/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 8.8.8.8
ユーザー名を pi から変更する
サーバー用途で pi
/ raspberry
のまま使うのは本当に最悪なので, ユーザー名とパスワードを変更する.
アカウント削除で説明してる記事もあるけど, 既に pi ユーザーで作ったファイルがあったら面倒なので変更がいいと思う.
pi ユーザーでログインしたままユーザー名を変えるのは不可能なので, 一旦作業用ユーザーを作って実行する.
$ sudo useradd -M tmp $ sudo gpasswd -a tmp sudo $ sudo passwd tmp
一旦ログアウトして tmp
でログインする.
$ sudo usermod -l newuser pi $ sudo usermod -d /home/newuser -m newuser $ sudo groupmod -n newuser pi
ログアウトして newuser
でログインし直し, 作業用ユーザーを削除する.
$ sudo userdel tmp
newuser
のパスワードを変える.
$ sudo passwd newuser
鍵を設定する
SSH のログインで毎回パスワードを打つのは大変なので, 公開鍵認証でログイン出来るようにする.
ホスト側で ssh-keygen
を実行して鍵を作る.
$ ssh-keygen -t ed25519
$ mkdir ~/.ssh $ touch ~/.ssh/authorized_keys $ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys
ホストの id_ed25519.pub
をラズパイの ~/.ssh/authorized_keys
に追加する.
ssh-copy-id
を使うと楽にコピーできていい.
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub ${user_name}@192.168.0.xxx
ホスト側の ~/.ssh/config
を設定しておく
Host raspi4 Hostname 192.168.1.xxx Port 22 User ユーザー名 IdentityFile ~/.ssh/raspi/id_ed25519
ここで一旦, 公開鍵認証でログイン出来るか試しておく. 設定出来てないままパスワードログインを無効化すると完全に終わるので一回試す.
sshd の設定
ラズパイ側の /etc/ssh/sshd_config
を編集する
- root でのログインを無効化
PermitRootLogin no
- 空パスワードの無効化
PermitEmptyPasswords no
- パスワード認証の無効化
PasswordAuthentication no
- ポートの変更
Port 任意のポート番号
終わったら sudo systemctl restart sshd
で sshd を再起動.
一旦 SSH を切断して新しい設定でログイン.
スワップの無効化
デフォルトでは 100MB ほどスワップ領域が確保されるけど, あってもまず使うことないし, 使っても遅いしでメリットないので切っておく.
$ sudo swapoff --all $ sudo systemctl stop dphys-swapfile $ sudo systemctl disable dphys-swapfile
/tmp
と /var/tmp
を tmpfs にする
/tmp
とかでデカい容量使わないなら実行しておくといい.
/etc/fstab
を編集して, /tmp
と /var/tmp
を tmpfs にする.
$ sudo vim /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
終わったら再起動しておく.
これで基本的なセットアップは終わり.