Raspberry Pi 4 で Ubuntu を SSD ブートしたい

Raspberry Pi をある用途で使おうかと考えているのですが、流石にSDカードだと速度も信頼性も低すぎるので、とりあえず手持ちの Raspberry Pi 4 8GB で試してみました。

ブートローダーをアプデートする

Raspberry Pi 4 は公式でUSBブートに対応しています。最近製造されたものなら問題ないと思いますが、ブートローダーのバージョンが古いとアップデートが必要なようなので手動で更新します。

とりあえず更新用にいつも通りOSをSDカードに書き込むめ公式サイトからRaspberry Pi Imagerをダウンロードをしてインストール。OSイメージのダウンロードからストレージへの書き込みまでやってくれる便利なやつです。

https://www.raspberrypi.com/software/

インストールしたらSDカードにRaspberry Pi OSを書き込みます。古いバージョンでなければ何でも良いと思いますが、ブートローダーの更新以外の用途で使うことはないのでサイズの小さいこのあたりで良さそうです↓

書き込みが終わったらRaspberry Piにセットしていつも通りに起動します。とりあえず最初は念のためOSを更新…

sudo apt update

sudo apt upgrade

次にブートローダの更新を確認します。

sudo rpi-eeprom-update 

今回の環境では更新はありませんでしたが、更新が必要な場合は上記のコマンドに引数 -a をつけて実行 & 再起動をするようです。

ブート順位の設定を変更する

raspi-configを使って起動の優先順位を設定します。

sudo raspi-config

"Advanced Options" を選択

"Boot Order" を選択

USB Bootの B2 を選択

最後にOKを選択して設定は完了です。

UbuntuをSSDに書き込む

OSをインストールしたいUSB3.0対応のSSDを用意します。今回は余っていたSATAのSSDに変換ケーブルを使って接続しました。

SSDを作業をするPCに接続して再びRaspberry Pi Imagerを起動します。 OS選択でUbuntuを選択します。今回はLTS最新のUbuntu Server 22.04を選択しました。

接続したSSDを選択して書き込みをします。

Ubuntuの起動とログイン

SSDをRaspberry Piに接続し(SDカードが刺さっていたら抜いて)、起動します。

問題がなければログイン画面になるのでログインします。

初期のログイン情報は

  • user: ubuntu
  • password: ubuntu

です。 初回ログイン時にパスワードの再設定を求められます。

IP 固定とSSH接続

このままでは不便なのでドキュメントに従ってIPを固定します。

ubuntu.com

99_config.yaml というファイルを新規に作成して設定を記述していきます。

sudo vim /etc/netplan/99_config.yaml

今回はこんな感じに。IPv6は不要だったので無効にしています。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
      dhcp6: false
      accept-ra: false
      link-local: []
      addresses:
        - 192.168.xxx.xx/xx
      routes:
        - to: default
          via: 192.168.xxx.x
      nameservers:
        addresses: [192.168.xx.xx]

設定が完了したら保存してエディタを終了します。下記のコマンドで適用されます。

sudo netplan apply

SSHはパスワードログインで既に有効になっていました。