ラズパイ(Raspberry Pi 4 Model B)をSSDブートにする(備忘録)

Raspberry Pi 4 Model B をSSDドライブから起動する備忘録 Raspberry Pi (ラズパイ)

    【目次】

  1. なぜ今さらラズパイか、そしてSSDブートにすることにしたのか
  2. 使ったもの
  3. Raspberry Pi 4 Model B 全部入りセットの紹介
  4. ラズパイ公式サイトから Raspberry Pi Imager アプリのダウンロード
  5. なぜかSSDからラズパイの起動ができない。その原因とは…
  6. micro SDカードの設定
  7. パソコンとSSH接続するための秘密鍵、公開鍵を作成する
  8. SSDの設定
  9. まとめ

5.なぜかSSDからラズパイの起動ができない。その原因とは…

先でも少し述べましたが、私の手持ちの Raspberry Pi 4 Model B は2020年頃に購入したもので、ImagerでSSDにOSを焼き込んでも、SSDからブート(起動)ができませんでした。

下図の様にアクセスランプが点かず、うんともすんともいいませんでした。

(図200)

ラズパイ4BでSSD起動試したが、動かねぇ!

ラズパイ4BでSSD起動試したが、動かねぇ!

実は、Twitterでいつもお世話になっているSegmentさんから教えてもらったのですが、最近流通しているラズパイ4Bならば、デフォルトでUSB-SSDブートできるそうなんです。

そして、ググっていろいろ調べているうちに、以下のサイトを拝見してみました。

https://gadgetrip.jp/2021/05/raspberry_pi4_usb_boot/

すると、どうやら2020年12月より前に販売されたラズパイ4Bは、Imagerで焼いても、micro SDブートしかできないということがわかりました。

因みに、ImagerのOS選択で、「Misc utility images」という項目からUSBブートに変えられると思って、一度試してみたのですが、結局SSDから起動できませんでした。

ということで、まずはmicro SDカードからラズパイを起動して、その後でラズパイ本体側の設定でUSBブートに変更していきます。

6.micro SDカードの設定

そんなわけで、USB-SSDから起動しないラズパイの場合は、micro SDカードにOSをインストールしてから、ラズパイ側の設定でUSBブートに変更して、SSD起動することになります。

6-1: micro SDHCカードにRaspberry Pi ImagerでUbuntu Server 22.04.1 LTS をインストールする

では、Raspberry Pi Imagerを使って、micro SDHCカードに Ubuntu Server 22.04.1 LTS をインストールしていきます。

まず、下図の様に「OSを選ぶ」をクリックします。

(図207)

ImagerのOS選択

ImagerのOS選択

次に、下図の様に「Other general-purpose OS」をクリックします。

(図208)

ImagerのOS選択

ImagerのOS選択

次に、下図の様に「Ubuntu」をクリックします。

(図209)

ImagerでUbuntu選択

ImagerでUbuntu選択

次に、下図の様にスクロールして下の方にある「Ubuntu Server 22.04.1 LTS (64-bit)」を選びます。
LTSにすれば、5年保証のある安定版らしいです。
その他はとても似たようなバージョン文字列があって、間違えやすいので気を付けてください。

(図210)

Ubuntuのバージョン選択

Ubuntuのバージョン選択

次に、パソコンのSDカードスロットにmicro SDカードを挿入しておきます。
そうしたら、下図の様に「ストレージを選ぶ」をクリックします。

(図211)

Imagerのストレージ選択

Imagerのストレージ選択

そうしたら、下図の様にSDHCカードが認識されていると思うので、これをクリックします。

(図212)

SDHCカードを選択

SDHCカードを選択

次に、下図の様に歯車アイコンをクリックします。

(図213)

Imagerの歯車アイコンをクリック

Imagerの歯車アイコンをクリック

次に、下図の様に、「ホスト名」にチェックを入れて、自分の好きな名前のホスト名を入力しておきます。
これは、ラズパイ側の操作で入力することもできますが、それはとても面倒なので、ここで入力して置いた方が圧倒的に楽です。

(図214)

ホスト名入力

ホスト名入力

このホスト名は、mDNSのホスト名としてもつかえるようです。
xxxxx.local
みたいな感じです。

次に、下の方にスクロールして、下図のように「ユーザー名とパスワードを設定する」にチェックを入れて、任意のユーザー名とパスワードを入力します。
パスワードはセキュリティ強化のために空白にしない方が良いですし、できるだけ複雑で長いパスワードにしておいた方が良いです。

(図215)

ユーザー名とパスワードの入力

ユーザー名とパスワードの入力

次に、下図の様に「ロケール設定をする」にチェックを入れ、

タイムゾーン: Asia/Tokyo
キーボードレイアウト: jp

と選択しておきます。

(図216)

ロケールの設定

ロケールの設定

次にスクロールダウンすると、「永続的な設定」のところで、下図の様にチェックが入っていれば問題無いと思います。
「テレメトリーを有効化」とは、ラズパイ公式がラズパイの利用情報を収集することを許可するかどうかのチェックみたいです。個人を特定する情報は取得しない様です。
諸々OKならば、下図の様に「保存」をクリックします。

(図217)

永続的な設定

永続的な設定

次に、下図の様に「書き込む」をクリックします。

(図218)

Imagerによる書き込み

Imagerによる書き込み

すると、下図の様に、「micro SDHCカードに存在するすべてのデータは完全に削除されます、本当に続けますか?」というメッセージが出るので、「はい」をクリックします。

(図219)

書き込むかどうかのメッセージ

書き込むかどうかのメッセージ

すると、下図の様に書き込み開始します。

(図222)

Imagerによるストレージへの書き込み進行中

Imagerによるストレージへの書き込み進行中

この時、micro SDHCカードがラズパイ用にフォーマットされるため、下図の様なメッセージが出ますが、気にせずに全てキャンセルします。

(図220)

Windowsのメッセージはキャンセル

Windowsのメッセージはキャンセル

(図221)

Windowsのフォーマットメッセージもキャンセル

Windowsのフォーマットメッセージもキャンセル

全て完了すると、下図の様なメッセージが出ますので、「続ける」をクリックします。

(図223)

SDカードの書き込み完了

SDカードの書き込み完了

すると、下図の様になり、書き込み完了です。
後ほどSSDへの書き込みもあるので、このまま閉じないでおきます。

(図224)

Windowsでは毎度お馴染みのSDカード取り出し手順で、下図の様にタスクトレイのアイコンをクリックして、micro SDカードを取り外しておきます。

(図225)

安全なSDカードの抜き取り操作(Windows)

安全なSDカードの抜き取り操作(Windows)

6-2: micro SD カードからラズパイを起動し、Ubuntu Serverログインを試す

では次に、micro SDカードからラズパイのUbuntu Serverが起動できるか確認してみます。

因みに、この段階ではまだインターネットに接続しません。
ログインとLinuxコマンドが実行できるかの確認だけです。
ブートローダのアップデートは後の節で説明します。

まず、下図の様にラズパイにmicro SDHCカードを挿し込みます。先ほど説明したように、カチッと音がしません。
そして、挿し込む向きに注意します。

(図14)

ラズパイ本体にmicro SDカードを差し込んだ様子

ラズパイ本体にmicro SDカードを差し込んだ様子

そして、下図の様にUSBキーボードと、HDMIモニターディスプレイを接続し、モニターディスプレイの電源を入れ、ラズパイのUSB-TypeCにACアダプターを接続して電源を入れます。電源スイッチはありませんでした。
因みに、LANケーブルはまだ接続しません。

(図231)

ラズパイ4Bにキーボード、HDMI、ACアダプターを接続した様子

ラズパイ4Bにキーボード、HDMI、ACアダプターを接続した様子

すると、ちょっと間を置いてからディスプレイに下図の様に表示され、

(図232)

ラズパイ4B起動直後のディスプレイモニターの画面

ラズパイ4B起動直後のディスプレイモニターの画面

そして、すぐに下図の様にコマンドラインが表示されます。

(図233)

ラズパイ4B起動直後のライン流れの様子

ラズパイ4B起動直後のライン流れの様子

すると、下図の様になって、コマンドラインが一旦ストップします。

(図234)

ここでしばらく待っていても良いのですが、キーボードのEnterキーを押すと、以下のようにログイン画面になります。
(※ログイン名のところにモザイクかけています)

(図235)

初回ログイン要求画面

初回ログイン要求画面

ここで、先ほどRaspberri Pi Imagerで設定したログイン名とパスワードを入力します。
すると、下図の様にコマンドラインが流れ始めます。こうなればログイン成功です。

(図236)

上図を見ると、httpという文字があるから、インターネットに接続しようと試みていることがわかります。
でも、まだLANケーブルは接続していませんのでネットにはつながりません。

しばらく経つと、下図の様に「~$」表示のLinuxコマンドプロンプト状態になります。
これで、Linuxコマンドが入力できるようになります。

(図237)

ログイン成功し、Linuxコマンドプロンプト状態

ログイン成功し、Linuxコマンドプロンプト状態

ここで、とりあえず、ラズパイを安全に電源OFFできるかどうか確認するために、シャットダウンコマンドを試してみます。

sudo shutdown -h now

これでEnterを押すと、パスワードを求められるので、パスワードを入力してEnterを押すと、下図の様にコマンドラインが流れ始めました。

(図238)

シャットダウンコマンドを打った後…

シャットダウンコマンドを打った後…

ただ、今回、なぜか延々とコマンドラインが流れ続け、10分ほど経ってもシャットダウンしてくれませんでした。
下図の様なところで停止して、シャットダウンが失敗した模様です。

(図239)

シャットダウン失敗!

シャットダウン失敗!

原因不明だったので仕方なく電源を強制的に切りました。
もしかしたらSDカードが壊れたのかと不安に駆られながら、再度電源を入れて再起動しました。

そして、下図の様になってEnterを押し、

(図240)

シャットダウン失敗して再起動し…

シャットダウン失敗して再起動し…

ログイン待機状態になります。

(図241)

再ログイン待機状態

再ログイン待機状態

そして、ログイン名とパスワードを入力し、Enterを押すと下図の様になってログイン成功しました。

(図242)

再度のログイン成功

再度のログイン成功

とりあえず、ホッとして、再度シャットダウンコマンドを入力したら、シャットダウンできました。
ディスプレイがブルーバックになったので、電源アダプターをコンセントから抜いて安全にシャットダウンできました。
さっきのシャットダウンエラーはなんだったんだろうか?

6-3: ラズパイのLANポートのMACアドレスを確認する

次に、ラズパイのブートローダ(ファームウェア)やソフトウェアをアップデートするにはインターネットに接続しなければなりません。

まず、自分のルータの設定をラズパイがインターネットにアクセスできるようにアクセス権限を設定しておきます。
予めファイアウォール等の設定を済ませておきます。

そして、MACアドレスフィルタリングを掛けている場合、ラズパイの有線LANポートのMACアドレスを調べます。

ラズパイにログインしたら、下図の様に

ip address show

と入力し、Enterを押します。

(図260)

ip address show コマンドを入力した様子

ip address show コマンドを入力した様子

すると、上図のように2: eth0:のところの、link/etherのところが有線LANのMACアドレスです。
これをメモっておき、ルータに設定すれば良いです。
ちなみに、wlan0 がワイヤレス(無線)LANです。

ルータの設定が済んだら、下図の様に有線LANポートに接続します。

(図261)

ラズパイのLANポートにLANケーブルを接続した様子

ラズパイのLANポートにLANケーブルを接続した様子

すると、直ぐに通信を始め、ラズパイの時刻がアップデートされるようです。

一応、下図の様にdateコマンドで時刻が更新されたかどうか確認します。

(図262)

dateコマンドの様子

dateコマンドの様子

このように時刻が更新されていればOKです。

6-4: ブートローダ(ファームウェア)のアップデート

では次に、ブートローダ(ファームウェア)を最新版にアップデートします。

次に、ラズパイのブートローダのバージョンを確認するため、以下のコマンドを打ちます。

vcgencmd bootloader_version

すると、下図の様に表示されました。

(図263)

vcgencmd bootloader_versionコマンドの様子

vcgencmd bootloader_versionコマンドの様子

この写真を撮って置くなり、メモっておくなりしておきます。

次に以下のコマンドを実行します。

sudo apt update

ちなみに、sudoコマンドは管理者権限と同じく何でもできてしまうため、パスワード入力を求められます。

(図264)

sudo apt updateコマンド、パスワード入力した後の様子

sudo apt updateコマンド、パスワード入力した後の様子

すると、下図の様にラインが停止して、コマンドプロンプト状態になるまで待ちます。

(図265)

sudo apt update完了して、コマンドプロンプト状態

sudo apt update完了して、コマンドプロンプト状態

次に以下のコマンドを入力します。

sudo apt full-upgrade

ラインが流れた後、下図のように[Y/n]と求められるので、Yキーを押します。因みに

sudo apt full-upgrade -y

としてすると、Yキー入力を省けます。

(図266)

sudo apt full-upgradeコマンド入力後、Yキー入力を求められる

sudo apt full-upgradeコマンド入力後、Yキー入力を求められる

すると、5~10分くらいダウンロードとアップグレードが進行していきます。

(図267)

sudo apt full-upgradeコマンド入力後の進行様子

sudo apt full-upgradeコマンド入力後の進行様子

終了すると、下図の画面になるので、Enterを押します。

(図268)

sudo apt full-upgrade完了後の画面

sudo apt full-upgrade完了後の画面

すると、下図の画面になりますが、意味不明の所が多々あるので、とりあえずこのままEnterを押すか、右矢印キーで<OK>を選択します。

(図269)

sudo apt full-upgrade完了後の画面2

sudo apt full-upgrade完了後の画面2

すると、下図の様にコマンドプロンプトに戻ります。

(図270)

sudo apt full-upgrade完了後、コマンドプロンプト状態

sudo apt full-upgrade完了後、コマンドプロンプト状態

これでアップグレード完了ですが、ラズパイを再起動しなければなりません。
よって、以下のコマンドを打ちます。

sudo reboot

sudoコマンドなのでパスワード求められます。

(図271)

sudo rebootコマンド後のパスワード入力待機状態

sudo rebootコマンド後のパスワード入力待機状態

すると、ラズパイが再起動し、下図の様にログイン待機画面になります。
ところで、私は何度も失敗したのですが、パスワードをゆっくり入力してしまうと、下図の様に画面が勝手に進行してしまうんです。
下図の様になるまで少し待ってからログイン入力した方が良いです。

(図272)

起動後のログインは、この画面になるまで待った方が良い

起動後のログインは、この画面になるまで待った方が良い

ログインしたら、再度ブートローダのバージョンを確認します。

vcgencmd bootloader_version

すると下図のようになりました。

(図273)

再度、vcgencmd bootloader_versionコマンド

再度、vcgencmd bootloader_versionコマンド

結局前と同じバージョンだったので、これが最新版のようです。(2023/1/20時点)

また、アップデートできる最新版があるかどうか確認するには以下のコマンドを打ちます。

sudo rpi-eeprom-update

すると下図の様に確認できます。

(図274)

sudo rpi-eeprom-updateコマンドの方が分かり易い

sudo rpi-eeprom-updateコマンドの方が分かり易い

この場合は、アップデータ可能なものは無く、最新版でした。

もし、最初の行に
*** UPDATE AVAILABLE ***
とあった場合には、アップデート可能なブートローダがあるということだそうです。

データはGitHubの以下のところから取得しているようです。

https://github.com/raspberrypi/rpi-eeprom/

これによると、dafaultというバージョンで、2022年1月25日のバージョンです。
これはちょっと古すぎないか? と思われますね。
先のGitHubのページを見ると、ファームウェア内にlatestとstableとdefaultというバージョンがあるのがわかり、2023年版が既にリリースされているようです。
今までESP32を扱ってきた経験から考えると、安定版のstableを使った方が良いのではないかと思いますが、以下のサイト
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-eeprom-configuration
によれば、ブートローダーのdefaultバージョンは、重要な修正とメジャーリリースに対してのみ更新されるそうです。
latestやstableローダーはより頻繁に更新され、最新の修正と改善が含まれます。
上級者はlatestやstableを使い、初心者はdefaultバージョンを使うと良いと書いてありました。

因みに、手動でアップデートするならば、

sudo rpi-eeprom-update -a

とすればアップデートできるそうです。
でも、本来、

sudo apt update
sudo apt full-upgrade

でブートローダはアップデートできるそうです。
いろいろ情報があって混乱しますね。

以上、ブートローダのアップデート方法でした。

6-5: micro SDブートからUSBドライブブートにラズパイの設定を変更する(raspi-config使用)

次に、micro SDブート(起動)状態から、USB-SSDブートにラズパイの設定を変更していきます。

まず、以下のコマンドを打ちます。

sudo raspi-config

すると、パスワードを入力してEnterを押すと下図の様になりました。

(図301)

sudo raspi-config コマンドが無いというメッセージ

sudo raspi-config コマンドが無いというメッセージ

raspi-config: command not found
ということは、raspi-configコマンドが無いということです。
ならば、raspi-configをインストールしなければいけません。

まず、以下のコマンドで、apt-getを最新版にアップデートしておきます。

sudo apt-get update

(図302)

sudo apt-get update コマンドを入力した様子

sudo apt-get update コマンドを入力した様子

次に、以下のコマンドでraspi-configをインストールしておきます。

sudo apt-get install raspi-config

下図の様に途中で[Y/n]を求められるので「Y」と入力してEnterを押します。

(図303)

sudo apt-get install raspi-configコマンドでYキーを求められている様子

sudo apt-get install raspi-configコマンドでYキーを求められている様子

ダウンロードおよびインストールが終了すると下図の様になってコマンドプロンプト状態になります。

(図304)

sudo apt-get install raspi-configコマンド完了した様子

sudo apt-get install raspi-configコマンド完了した様子

No services need to be restarted.
No containers need to be restarted.

ということなので、再起動不要なようです。

では、再度以下のコマンドを打ちます。

sudo raspi-config

すると下図の様な画面が起動するので、
6.Advanced Options
を選択してEnterを押します。

(図305)

raspi-config 6.Advanced Options

raspi-config 6.Advanced Options

すると、下図の様な画面になるので、
A6. Boot Order
を選択し、Enter。

(図306)

raspi-config A6. Boot Order

raspi-config A6. Boot Order

すると、下図の画面になるので、
B2. USB Boot
を選択し、Enter。

(図307)

raspi-config B2. USB Boot

raspi-config B2. USB Boot

そうしたら、矢印キーの「→」で<OK>にカーソルを持っていき、Enterを押します。

(図308)

raspi-config <OK>→Enter

raspi-config <OK>→Enter

すると、下図の画面になるので、Enterを押します。

(図309)

raspi-config <OK>→Enter

raspi-config <OK>→Enter

そうしたら、下図の様に元の画面に戻るので、矢印キー「→」で<Finish>のところにカーソルを持っていき、Enterを押します。

(図310)

raspi-config <Finish>→Enter

raspi-config <Finish>→Enter

すると、下図の画面になり、再起動するか聞いてきますが、ここではまだ再起動しません。
なぜならば、このまま再起動してしまうと、またmicro SDカードからブートしてしまうので、ここは下図の様に必ず<No>を選択してEnterを押します。

(図311)

raspi-config <No>→Enter

raspi-config <No>→Enter

すると、下図の様にコマンドプロンプト状態になります。

(図312)

raspi-config終了後のコマンドプロンプト

raspi-config終了後のコマンドプロンプト

ここまで来たら、シャットダウンコマンドを打ちます。

sudo shutdown -h now

そうしたら、ラズパイの電源を切り、micro SDHCカードを抜き取ります。

以上、micro SDカードのブートからUSBブートに変更する方法でした。

次に、SSDからブートする前に、SSH設定の前処理をしていきます。

コメント

  1. 匿名 より:

    2023年投稿としては、始まりしか読んでいませんが、Ubuntuを選んだ理由や、インストール方法は、古い情報だと思います。

    • mgo-tec mgo-tec より:

      匿名さん

      記事をご覧いただきありがとうございます。
      記事中でもタイトルでも言っておりますが、この記事は自分用の備忘録です。
      Ubuntuを選んだ理由は私個人の理由なのです。他の方々には別のOSの方が良いかも知れません。
      インストール方法は記事中でも述べていますが、確かに古い情報です。
      今はimagerで簡単にSSDドライブブートできるということは知っております。
      記事を読んでいただけると分かると思いますが、私の使ったラズパイは2020年頃に購入したもので、それをSSDに換装するのが面倒だったというわけです。

      • 匿名 より:

        >> 私の使ったラズパイは2020年頃に購入したもので、それをSSDに換装するのが面倒だったというわけです。
        SSDに換装ってなんのことです?

        • mgo-tec mgo-tec より:

          よく読んで下さいました。
          記事に書いてある通りですが、まぁ、私の文章は日本語になっていないとよく言われます。
          (日本人じゃないかも…)

  2. 匿名 より:

    ドライブドライブ笑

    • mgo-tec mgo-tec より:

      匿名さん

      うれしいですね。記事をまた読んで下さって感謝です。
      確かに誤った表現でしたので、記事を修正しました。
      ありがとうございました。
      因みに、間違いかどうかChat GPTに聞いてみました。

      一般的には間違いではないけど、厳密には冗長ということみたいっすね。
      いずれにしても、わざわざ教えて頂き、ありがとうございました。
      m(_ _)m

タイトルとURLをコピーしました