公開日:2026年1月21日
著者:川上勝行
microSDカードの耐久性問題を解決し、Raspberry Pi 5を高速・安定稼働させるために、内蔵NVMe SSDへの移行は必須です。
特に災害時のポータブル通信システム(E-Post Mail Server搭載)では、SSDブートでデータ損失リスクを減らし、長時間運用が可能になります。
この記事では、スクリプト付きの手順を詳しく解説。
初心者でも実行可能です。
※本プロジェクト名は比喩的なものであり、有事に最低限の機能を残す設計思想を表しています。
1. 注意事項と前提
この手順はRaspberry Pi 5 + NVMe SSDを想定。SSDの内容はすべて消去されるので、バックアップを取ってください。microSDからUbuntu Serverが起動済みであることが前提です。
- SSD: 内蔵HAT+M.2 NVMe(例: 128GB)
今回使ったSSDは、amazonで販売されている者を使いました。
Freenove 型番 FNK0098KLM 価格 3,213 (2026.01.29時点) M.2 HATアドオンボード、ソリッドステートドライブのセット品。
他社製品だと物によってはRasberry Pi5 では認識しないものがあるので注意が必要です。 - ツール: rsync, parted, blkidなど(Ubuntu標準)
- リスク: 操作ミスでデータ損失の可能性あり。スクリプト推奨
2. スクリプトによる簡単移行
以下のスクリプトを実行すれば完了。/dev/nvme0n1を初期化するので注意。
#!/bin/bash
set -e
echo "⚠ このスクリプトは /dev/nvme0n1 を完全に初期化します。"
read -p "続行してよろしいですか? (yes/no): " confirm
if [ "$confirm" != "yes" ]; then
echo "中止しました。"
exit 1
fi
echo "✓ パーティションを作成中..."
sudo parted /dev/nvme0n1 --script mklabel gpt
sudo parted /dev/nvme0n1 --script mkpart primary fat32 1MiB 256MiB
sudo parted /dev/nvme0n1 --script set 1 boot on
sudo parted /dev/nvme0n1 --script mkpart primary ext4 256MiB 100%
echo "✓ パーティションをフォーマット中..."
sudo mkfs.vfat -F32 /dev/nvme0n1p1
sudo mkfs.ext4 -F /dev/nvme0n1p2
echo "☐ マウントポイントを作成..."
sudo mkdir -p /mnt/ssd
sudo mount /dev/nvme0n1p2 /mnt/ssd
sudo mkdir -p /mnt/ssd/boot/firmware
sudo mount /dev/nvme0n1p1 /mnt/ssd/boot/firmware
echo "☐ ファイルをコピー中 (時間がかかります)..."
sudo rsync -aAXv / /mnt/ssd --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
echo "☑ UUIDを取得中..."
UUID_ROOT=$(sudo blkid -s UUID -o value /dev/nvme0n1p2)
UUID_BOOT=$(sudo blkid -s UUID -o value /dev/nvme0n1p1)
echo "☑ cmdline.txt を編集中..."
sudo sed -i "s|root=[^ ]*|root=UUID=$UUID_ROOT|" /mnt/ssd/boot/firmware/cmdline.txt
echo "☑ fstab を書き換え中..."
sudo bash -c "cat > /mnt/ssd/etc/fstab <<EOF
UUID=$UUID_ROOT / ext4 defaults 0 1
UUID=$UUID_BOOT /boot/firmware vfat defaults 0 1
EOF"
echo "✓ 完了しました!"
echo "次の手順..."
echo "1: sudo shutdown now で電源を切る"
echo "2: microSDカードを抜く"
echo "3: 電源を入れてSSDから起動する"
実行: sudo ./clone_to_ssd.sh
3. 手動での詳細手順
① SSDのパーティション作成
sudo parted /dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart primary fat32 1MiB 256MiB
(parted) set 1 boot on
(parted) mkpart primary ext4 256MiB 100%
(parted) quit
② パーティションのフォーマット
sudo mkfs.vfat -F32 /dev/nvme0n1p1
sudo mkfs.ext4 /dev/nvme0n1p2
③ SSDをマウント
sudo mkdir -p /mnt/ssd
sudo mount /dev/nvme0n1p2 /mnt/ssd
sudo mkdir -p /mnt/ssd/boot/firmware
sudo mount /dev/nvme0n1p1 /mnt/ssd/boot/firmware
④ microSDの内容をSSDにコピー
sudo rsync -aAXv / /mnt/ssd --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
⑤ cmdline.txt の編集
sudo nano /mnt/ssd/boot/firmware/cmdline.txt
内容例:
console=serial0,115200 multipath=off dwc_otg.lpm_enable=0 console=tty1 root=/dev/nvme0n1p2 rootwait fixrtc cfg80211.ieee80211_regdom=JP
⑥ fstab の編集
sudo blkid
UUIDを確認後:
sudo nano /mnt/ssd/etc/fstab
内容例: UUID=ZZZZ-AAAA-BBBB / ext4 defaults 0 1
UUID=XXXX-YYYY /boot/firmware vfat defaults 0 1
⑦ 起動テスト
sudo shutdown now
で電源オフ後、microSD抜き→電源オン、lsblkでnvme0n1確認
6. 実用性と今後の活用
SSDブートでRPi5の性能を最大化。
E-Post Mail Server搭載のポータブルシステムとして、災害時通信に最適。
microSDの短寿命を回避し、耐久性向上。
防災DXに興味ある方やデジタル田園都市構想に興味のある方、自治体関係者の方など、ぜひお試しを。
このシリーズを「箱舟プロジェクト」と名付けました。
- 箱舟プロジェクト【防災通信】地域防災を支える「手のひらサイズ」ローカル通信システムの可能性
- 箱舟プロジェクト【防災通信】災害時メッシュWi‑FiとE‑Postで作るポータブル通信システム
- 箱舟プロジェクト【防災通信】Raspberry Pi 5で作る災害時ポータブル通信システム:セットアップ手順まとめ
- 箱舟プロジェクト【防災通信】Raspberry Pi 5ポータブル通信システムをStarlinkと連携させる手順
- 箱舟プロジェクト【防災通信】TinyBox(仮):Raspberry Pi 5で構築するE‑Post × DeltaChatの災害時通信システム
- 箱舟プロジェクト【防災通信】× IEEE802.11ah(Wi‑Fi HaLow)構成まとめ
※この記事は、災害対策技術の実験研究を目的として執筆しました。
実際の運用にあたっては、各自治体や専門家の指導のもとで導入をご検討ください。

