Raspberry Piセットアップでよくやること
最終更新日: 2025/07/12
本体
うちにあってよく使いそうなものだけリンクを載せておく。
Pi Imager
Raspbian OSはPi Imagerを使ってSDカードを作るのが楽だろう。
これを使うと、OSイメージをダウンロードしてSDカードに展開するだけでなく、デフォルトのままにしたくないhostnameやログインアカウント、WiFi設定やSSH設定などのカスタマイズができる。
私はWindows版のv1.9.4を使ったのだが、いくつかうまくいかなかった。 詳しいことは調べていないのでやり方が悪かっただけかもしれない。
- SSHは有効になったが
authorized_keys
が設定されなかった- パスワード認証は設定できた
- ログインしてから自分で
authorized_keys
やsshd_config
を書き直した
- WiFiの設定ができていなかった
- 有線LANで接続した
- ログインして
wlan0
が無効になっていたので、rfkill unblock
してifconfig up
したあとraspi-config
で設定した
ストレージの追加
SDカードではいろいろ足りないので外部ストレージを付けたくなる。
その場合はUSBを使うことになるだろう。
Raspberry Pi3までは USB2.0のポートだけで、それ以降になるとUSB3.0のポートが加わる。
なお、USB2.0は480Mbps、USB3.0は5Gbps、USB3.1 Gen2は10Gbpsとなっている。
今では USB3.0という名称はなく、USB3.1 Gen1ということになっているのだとか。
正式な情報を見たわけではないので、自分で調べた方がよいだろう。
デバイス探し
SATA-USBケーブルに接続したSSDをRaspberry Pi3に挿すとdmesg
にこのようなログが出る。
Windowsで使っていたNTFSフォーマットのディスクで、ボリューム名は”Free”である。
usb-storage 1-1.2:1.0: USB Mass Storage device detected
usb-storage 1-1.2:1.0: Quirks match for vid 152d pid 0578: 1000000
scsi host0: usb-storage 1-1.2:1.0
scsi 0:0:0:0: Direct-Access TIMELY 0801 PQ: 0 ANSI: 6
sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/112 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 47 00 00 08
sd 0:0:0:0: [sda] Disabling FUA
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sd 0:0:0:0: Attached scsi generic sg0 type 0
sda: sda1
sd 0:0:0:0: [sda] Attached SCSI disk
dmesg
はいろいろなログがあるのでlsblk
の方がわかりやすいか。
$ lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111.8G 0 disk
sda1 8:1 0 111.8G 0 part
mmcblk0 179:0 0 14.8G 0 disk
mmcblk0p1 179:1 0 512M 0 part /boot/firmware
mmcblk0p2 179:2 0 14.3G 0 part /
フォーマット
sda
であることがわかるのでfdisk
でパーティションの確認をし、今回はパーティションを削除してLinuxパーティションだけ作る。
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 111.79 GiB, 120034123776 bytes, 234441648 sectors
Disk model:
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x59ac01ea
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 234438655 234436608 111.8G 7 HPFS/NTFS/exFAT
...(中略)...
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 234441647 234439600 111.8G 83 Linux
作ったパーティションsda1
をext4でフォーマットする。
$ sudo mkfs -t ext4 /dev/sda1
(略)
UUID
sda
だと物理過ぎてUSB接続の仕方などで名称が変わってしまうかもしれない。
IDE接続の時はHDDのジャンパ接続で何かやっていたような気がするが、もう記憶にない。
ともかく、今はUUIDでディスクを識別することができるので、そちらにした方がよい。
blkid
では2つUUIDが出力されるが、/etc/fstab
ではPARTUUID
を使っていた。
OSによって違うらしい。
$ sudo blkid | grep sda
/dev/sda1: LABEL="Free" BLOCK_SIZE="512" UUID="CE04E7D004E7BA1B" TYPE="ntfs" PARTUUID="59ac01ea-01"
mount先ディレクトリを作っておけばmount
できる。
$ sudo mount -t ext4 PARTUUID="59ac01ea-01" /mnt/usb
ディレクトリのownerは使用するユーザやグループを設定すると良いだろう。
hogeさんだけが使うならこんな感じでよいと思う。
$ sudo chown hoge:hoge /mnt/usb
fstab
再起動のたびにmount
するのは面倒ならば/etc/fstab
に書いておくとよい。
項目のどれがなんだったかは忘れやすい(fstab)。
項目間はタブ文字かスペースなので、特に4番目はコンマで区切るときにスペースをうっかり挟まないこと。
- fs_spec: デバイス名 or
PARTUUID
- fs_file: マウントポイント
- fs_vfstype: フォーマット
- fs_mntops: オプション。特になければ
defaults
。USBだと外すことがあるからdefaults,nofail
が無難か? - fs_freq: dumpしない(
0
)かする(1
)か。特になければ0
。 - fs_passno: fsckの順番? rootファイルシステムは
1
、それ以外は2
。
/etc/fstab
に書いてあるデバイスに起動時接続できなかったらpanicになるんじゃなかったっけ・・・?
心配になったがfindmnt
でチェックできるそうだ。
$ sudo findmnt --verify
Success, no errors or warnings detected
Docker
Raspbian OS 64bit の場合は Debianでのインストールを参照する。
インストールは手順通りで良い。
保存場所
うちのRaspberry Pi3はMicroSDにOSを焼いて立ち上げている。
USBストレージからも立ち上げることはできるそうだ。
何を気にしているかというと、MicroSD は容量も大きくないし高頻度なアクセスは心配なので極力SSDに逃がしたいのだ。
dockerは自分が使う気がなくてもツールが要求するのでインストールするのだが、
お試しで動かしたプロジェクトの残骸が残りっぱなしになったりしやすい。
面倒ごとを回避するなら、保存場所を容量が大きいストレージにするとよいだろう。速度は落ちるかもしれんが。
ここまできれいにしなくても、/var/lib/docker/
に保存されることが分かるなら、ディレクトリごと移動してシンボリックリンクしておけばよいだろう。
Swap file
Rustのプロジェクトのせいかどうかは分からないが、cargo build
はかなりメモリを消費すると思っている。
Raspbian OSをインストールするとSwap file無しになっているのだが、メモリが足りずにビルドに失敗することがある。
そうでなくても、メモリが不足すると全体的に不安定になるので、それくらいだったらSwap fileを設定した法が精神的によろしい。
よくわからないのが”dphys-swapfile”だ。
swapon -s
で見ると/var/swap
だけがある。
これをsystemctl stop
で止めると、何も出てこない。
つまり、これでswapファイルの制御ができているはずだ。
ならばこちらのサイトのように/etc/dphys-swapfile
を書き換えるのが自然な気がする。
ただ、今までのRaspberry Piはdd
コマンドでswapfileを作る方式の説明が多かったように思う。
$ sudo systemctl stop dphys-swapfile
$ swapon -s
$ sudo vi /etc/dphys-swapfile
編集内容
CONF_SWAPFILE=/mnt/usb/swapfile
CONF_SWAPSIZE=2048
続き
$ sudo dphys-swapfile setup
$ sudo dphys-swapfile swapon
$ sudo systemctl start dphys-swapfile
$ swapon -s
Filename Type Size Used Priority
/mnt/usb/swapfile file 2097148 1059288 -2
$ sudo rm /var/swap
これで見た目上は成り立っている。
dphys-swapfile
は以前からあったと思うのだが、なぜこの方式ではなくわざわざdd
でファイルを作っていたのだろうか。
単に私が目にした記事がそうだっただけで、設定ファイルを書き換える方式も説明されていたのだろうか。。。