はじめに
この記事では、Pi 5のNVMeを設定し、Raspberry Pi OS Liteをインストールし、SSHでPiに接続できるようにする方法と、固定IPの設定方法について説明します。
購入品
使用機材:
- Raspberry Pi 5(8Go)
- NVMe Micron 2200 (1To)
- Raspberry Pi用電源
- パソコン
- Raspberry Pi 5用ジュアールNVMeラフト、PCIe Gen 2.0 to M.2 HAT
インストール
まず、NVMeにインストールしたいOSをフラッシュする必要です。パソコンの中に別のNVMeがあります。
グラフィックインターフェースなしのため、デスクトップと推奨ソフトUbuntu Server 24.04 LTSを決めました。
公式サイトからのRaspberry Pi Imagerをダウンロードできます:
- Raspberry Pi Imager : https://www.raspberrypi.com/software/
⚠️⚠️⚠️ 書き込みを行う前に、NVMeのすべてのデータを転送を大切です。書き込み時にすべてのデータが消去されます!
NVMeにパーティションを作成できるように、まずSDカードにもOSを書き込みます。SDカードから起動して、NVMeのパーティション設定を行うためです。
NVMeを全データを除去する
旧NVMeから新NVMeへパーソナルデータを移行する上で、旧NVMeを残りシステムデータを除去します。
Powershellターミナルにアドミニストレーターで:
diskpart
list disk
select disk X # クリーンさせたいディスクの番号に「X」を変える
detail disk
ディスクリストを表示、クリーンさせたいディスクを選択します。
Read-only: Yesを見つけると、パーティションを除去不可能です。
それで、次のコマンドを記入します:
attributes disk clear readonly
clean
convert gpt
exit
attributes disk clear readonly → 読み取り専用属性を解除する
clean → NVMeに全データとパーティションを削除する(⚠️完全に)
convert gpt → ラズベリーパイOS用のGPTパーティションのラベルを作成する
Win + Rを押して、diskmgmt.mscに書き込みます。
ラズベリーパイOSLite用のNVMeを準備する
これから、NVMeの未割り当て領域にOSを書き込みます。
Raspberry Pi Imagerを起動します。
Choose Device → Raspberry Pi 5
Choose OS → Raspberry Pi OS Lite (64-bit)
Choose Storage → NVMe Micron 2200 (1To)
フラッシュをする前に、OS設定を編集します。
設定の以下のように変更します:
ディフォルトで、ユーザー名はpiなので、変更することにしました。
SSHキー
コンピューターのターミナル通じて、Raspberry Piに接続するように、SSH (Secure SHellの略称)で、公開鍵認証を使用します。パスワードを記入せずに、Raspberry Piに接続することができます。RSAやED25519キーはブルートフォース攻撃に強く、高いセキュリティを提供します。
それため、コンソールコマンドでSSHキーを生成します:
ssh-keygen -t ed25519
もう存在しない場合は、新しいフォルダーとファイルを作成します。パスフレーズを2回入力すると、秘密鍵と公開鍵の2つのファイルが生成されます:
- 秘密鍵 (ie.
~/.ssh/id_ed25519) -> コンピューターに残らなければ - 公開鍵 (ie.
~/.ssh/id_ed25519.pub) -> Notepadで入って、authorized-keyに内容を写す (または、~/.ssh/authorized_keysのフォルダの中)
例え :
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICv5d7Q8gjI9wO4yTfXzK7EjvH+1jD0... <username>@<computername>
終わると、SAVEして、Raspberry Pi ImagerがNVMeに書き込んで初めて、bootfs(D:)としてFAT32部分が現れます。
この部分が次の部分の3.26GbのOSのブートに対応しています。
しかし、SSHとWifi設定がフラッシュの上で再現されないかもしれません。
SSHを有効する
bootfsの元に, ssh 「拡張子いらず」という空のファイルを作成する。
右クリック → 新規作成 → テキスト ドキュメント → ssh という名前を変更する「.txtを除去」。
それとも、Wifi設定のためwpa_supplicant.confを作成する :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="<SSID>"
psk="<password>"
key_mgmt=WPA-PSK
}
Wifiルーターに見ると、<SSID> et <password> を変更する。
フラッシュされたNVMeにその二つファイルを保存する。
{Pi + NVMe}の組み込み
ジュアールNVMeラフトを通じて、NVMeをPiに接続します。このジュアールラフトでIAプロジェクトやリアルタイムでカメラでの画像処理やライトMLが実装されように他のNVMeかHailo-8Lの部品が加えることができるのです。
ネットワークに接続したのを確認するように、ターミナルにこのコマンドを書き込んでRaspberryPiをピングすることをええきます:
ping <hostname>.local
ピング統計情報と一連のデータ応答を受け取るはずです。
固定IPを設定
固定IPをセットするように、"Set a static IP address with nmtui on Raspberry Pi OS 12"のJeff Guerlingからの指示に従います:
https://www.jeffgeerling.com/blog/2024/set-static-ip-address-nmtui-on-raspberry-pi-os-12-bookworm
全てのインターフェースの情報をもらえます:
nmcli device status
wlan0(Wifi)に固定IPをセットするように、Wifiの現在のIPをチェックしなければ:
ip addr show wlan0
イーサネットでPiが接続されたら、eth0にセットする。
このような結果を得る:
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 2c:cf:67:43:a0:2f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.37/24 brd 192.168.1.255 scope global dynamic wlan0
...
必要な情報は以下です:
inet 192.168.1.37/24
→ 現在 IP アドレス : 192.168.1.37
→ マスク : /24
ネットワークの範囲を示す → 192.168.1.x
では、ルーツをチェックする :
ip route
このような結果を得る:
default via 192.168.1.1 dev wlan0
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.37
必要な情報は以下です:
default via 192.168.1.1
ルーターのゲートウェイです。
最後に、DNSサーバーをチェックします:
cat /etc/resolv.conf
このような結果を得る:
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
必要なのは行のnameserverです。DNSサーバーです。
ルーター(192.168.1.1)とたまにGoogle DNS(8.8.8.8, 8.8.4.4)かCloudflare (1.1.1.1)を結構対応することです。
つまりに:
-
Address:ip addr showの同じ範囲に空IPを決められます。例えば,192.168.1.37/24で、192.168.1.50/24を決められる -
Gateway:192.168.1.1(default via ...) -
DNS:192.168.1.1(nameserver)
今から、PiのIPv4を設定するようにできます:
sudo nmtui edit "preconfigured"
ManualにIPv4 Configuration部分を設定し、AddressとGatewayとDNSに以上の情報を入り込んでいます。次、OKを押す。
最後に、ネットワークマネージャーを起動します:
sudo systemctl restart NetworkManager
すべてが適用されていることを確認するために、次のコマンドを入力する:
nmcli device show wlan0
ここで確認できます:
IP4.ADDRESS[1]: 192.168.0.50/24
IP4.GATEWAY: 192.168.1.1
次、Piを起動する:
sudo reboot
Piの新しい固定IPをチェックする:
ifconfig
いま、システムをアップデートする:
sudo apt update && sudo apt upgrade -y
コンピューターにSSHで接続する:
ssh -i C:\Users\<username>\.ssh\id_ed25519 <hostname>@<IP>
<username>、<hostname>と<IP>を変更します。
まず、SDカードにブートします。目標は、SDカードに依存せず、NVMeで直接起動することです。
パーティションを識別する:
sudo blkid
NVMeのUUID(nvme0n1p1とnvme0n1p2)をメモします。
Piの起動するように、Piのポートからの読み取り順を設定します。
EEPROMの設定をチェックする:
sudo rpi-eeprom-config
EEPROMの設定を編集します:
sudo -E rpi-eeprom-config --edit
BOOT_ORDER行を変更する :
BOOT_ORDER=0xf614
0xf = ループ
0x6 = NVMe
0x1 = SD
0x4 = USB
➡️ 0xf614 = とりあえぜUSB、次SD、最後NVMe
ポートの読み取り順は右から左に行います。
このサイトから、Raspberry Pi用ブート順番の設定を確認することができます:
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER
Ctrl + O, Enter puis Ctrl + X
再起動する :
sudo reboot
Piに再接続し、ブートローダーを更新して、設定が反映されていることを確認します。
sudo rpi-eeprom-update
sudo rpi-eeprom-config
Piをシャットダウンする :
sudo poweroff
SDカードを取り外し、NVMeはそのままにしておく。
今から、Piを起動すると、ブートはNVMeから行います。
SSHで接続の問題
Piに接続するとき、このようなメッセージが表示される場合あります:
known_hostsに内の古いキーをクリーンアップする :
ssh-keygen -R <IP>
PiにSSHで説明することができます:
ssh -i C:\Users\<username>\.ssh\id_ed25519 <hostname>@<IP>
対応する値によって、username, hostname et IPを変更します。
パーティションリストをチェックするため、lsblkコマンドを実行しています。
Piが正常にNVMeにブートされたということです。
OSとデータを分離
OSがクラッシュした場合に備えて、データを守るために、OSとデータを分けます。
それのため、定期的にバックアップを取られるデータ専用のパーティションを作成します。
とりあえず、そのままNVMeをしておき、SDカードからPiをブートします。
アップデート :
sudo apt update && sudo apt upgrade -y
SDカードにPiが起動しましたので、nvme0n1p2の部分は未割り当て領域になりました。では、nvme0n1p2のパーティションがOSとDATA部分に分けることができます。
Raspberry Pi OS Liteを使用しています。つまり、GUI(グラフィックユーザーインターフェース)はありません。では、パーティションを分けて行うように、gpartedじゃなくてpartedを使用します:
sudo parted /dev/nvme0n1
現在調子をチェックする:
print
ブート領域がある1番のパーティションと、未割り当て領域がある2番のパーティションを表示します。
32GBに2番のパーティションをリサイズします:
resizepart 2 32 GB
空き領域を使って新しいパーティションを作成する:
mkpart primary ext4 32GB 100%
partedを終了します:
quit
いま、新しいパーティションをext4にフォーマットする:
sudo mkfs.ext4 /dev/nvme0n1p3 -L data
マウントします:
sudo mkdir /mnt/data
sudo mount /dev/nvme0n1p3 /mnt/data
毎回の起動時にマウントするため、パーティションのUUIDを確認します:
lsblk -f
/etc/fstabの中に追加します:
sudo nano /etc/fstab
/と/boot/firmwareの行が表示されます。/mnt/dataのパーティションも起動する時にマウントされなければなりません。次の行に/etc/fstabを追加します:
/dev/nvme0n1p3 /mnt/data ext4 defaults,noatime 0 2
/dev/nvme0n1p3 → パーティションのパス
/mnt/data → パーティションがマウントされてほしいフォルダー
(必要であればsudo mkdir -p /mnt/dataでフォルダーを作成できる)
ext4 → (Fourth Extended Filesystem):OSがNVMe上にファイルを保存・整理・アクセスできるようにするファイルシステムです。
defaults → ディフォルトオプション(NVMe への書き込みを少しでも減らすために、noatimeオプションを指定することができます)
0 2 → dumpとfsckの設定(データパーティションのため)
/etc/fstabの中に追加する:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data ext4 defaults 0 2
ディバイスの名前が変えられるので、UUIDを使用する。
起動せずにテストする:
sudo umount /mnt/data
sudo mount -a
df -h
全てのパーティションがマウントされました。
次回予告
➡️ Ubuntu Server 24.04.3 LTSを{Pi 5+NVMe}に起動と開発環境構築
参考文献
-
Raspberry Pi Imager : https://www.raspberrypi.com/software/
-
Jeff Guerling、”Set a static IP address with nmtui on Raspberry Pi OS 12" :
https://www.jeffgeerling.com/blog/2024/set-static-ip-address-nmtui-on-raspberry-pi-os-12-bookworm -
Raspberry Pi Boot Order Documentation :
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER












