hiro99ma blog

Raspberry Piセットアップでよくやること

最終更新日: 2025/07/12

本体

うちにあってよく使いそうなものだけリンクを載せておく。

Pi Imager

Raspbian OSはPi Imagerを使ってSDカードを作るのが楽だろう。
これを使うと、OSイメージをダウンロードしてSDカードに展開するだけでなく、デフォルトのままにしたくないhostnameやログインアカウント、WiFi設定やSSH設定などのカスタマイズができる。

私はWindows版のv1.9.4を使ったのだが、いくつかうまくいかなかった。 詳しいことは調べていないのでやり方が悪かっただけかもしれない。

ストレージの追加

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番目はコンマで区切るときにスペースをうっかり挟まないこと。

  1. fs_spec: デバイス名 or PARTUUID
  2. fs_file: マウントポイント
  3. fs_vfstype: フォーマット
  4. fs_mntops: オプション。特になければdefaults。USBだと外すことがあるからdefaults,nofailが無難か?
  5. fs_freq: dumpしない(0)かする(1)か。特になければ0
  6. 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でファイルを作っていたのだろうか。 単に私が目にした記事がそうだっただけで、設定ファイルを書き換える方式も説明されていたのだろうか。。。

writer: hiro99ma
tags: Linux    

 < Top page

コメント(Google Formへ飛びます)

GitHub

X/Twitter

Homepage

About me