- なぜ今さらラズパイか、そしてSSDブートにすることにしたのか
- 使ったもの
- Raspberry Pi 4 Model B 全部入りセットの紹介
- ラズパイ公式サイトから Raspberry Pi Imager アプリのダウンロード
- なぜかSSDからラズパイの起動ができない。その原因とは…
- micro SDカードの設定
- パソコンとSSH接続するための秘密鍵、公開鍵を作成する
- SSDの設定
- まとめ
【目次】
5.なぜかSSDからラズパイの起動ができない。その原因とは…
先でも少し述べましたが、私の手持ちの Raspberry Pi 4 Model B は2020年頃に購入したもので、ImagerでSSDにOSを焼き込んでも、SSDからブート(起動)ができませんでした。
下図の様にアクセスランプが点かず、うんともすんともいいませんでした。
(図200)
実は、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)
次に、下図の様に「Other general-purpose OS」をクリックします。
(図208)
次に、下図の様に「Ubuntu」をクリックします。
(図209)
次に、下図の様にスクロールして下の方にある「Ubuntu Server 22.04.1 LTS (64-bit)」を選びます。
LTSにすれば、5年保証のある安定版らしいです。
その他はとても似たようなバージョン文字列があって、間違えやすいので気を付けてください。
(図210)
次に、パソコンのSDカードスロットにmicro SDカードを挿入しておきます。
そうしたら、下図の様に「ストレージを選ぶ」をクリックします。
(図211)
そうしたら、下図の様にSDHCカードが認識されていると思うので、これをクリックします。
(図212)
次に、下図の様に歯車アイコンをクリックします。
(図213)
次に、下図の様に、「ホスト名」にチェックを入れて、自分の好きな名前のホスト名を入力しておきます。
これは、ラズパイ側の操作で入力することもできますが、それはとても面倒なので、ここで入力して置いた方が圧倒的に楽です。
(図214)
このホスト名は、mDNSのホスト名としてもつかえるようです。
xxxxx.local
みたいな感じです。
次に、下の方にスクロールして、下図のように「ユーザー名とパスワードを設定する」にチェックを入れて、任意のユーザー名とパスワードを入力します。
パスワードはセキュリティ強化のために空白にしない方が良いですし、できるだけ複雑で長いパスワードにしておいた方が良いです。
(図215)
次に、下図の様に「ロケール設定をする」にチェックを入れ、
タイムゾーン: Asia/Tokyo
キーボードレイアウト: jp
と選択しておきます。
(図216)
次にスクロールダウンすると、「永続的な設定」のところで、下図の様にチェックが入っていれば問題無いと思います。
「テレメトリーを有効化」とは、ラズパイ公式がラズパイの利用情報を収集することを許可するかどうかのチェックみたいです。個人を特定する情報は取得しない様です。
諸々OKならば、下図の様に「保存」をクリックします。
(図217)
次に、下図の様に「書き込む」をクリックします。
(図218)
すると、下図の様に、「micro SDHCカードに存在するすべてのデータは完全に削除されます、本当に続けますか?」というメッセージが出るので、「はい」をクリックします。
(図219)
すると、下図の様に書き込み開始します。
(図222)
この時、micro SDHCカードがラズパイ用にフォーマットされるため、下図の様なメッセージが出ますが、気にせずに全てキャンセルします。
(図220)
(図221)
全て完了すると、下図の様なメッセージが出ますので、「続ける」をクリックします。
(図223)
すると、下図の様になり、書き込み完了です。
後ほどSSDへの書き込みもあるので、このまま閉じないでおきます。
Windowsでは毎度お馴染みのSDカード取り出し手順で、下図の様にタスクトレイのアイコンをクリックして、micro SDカードを取り外しておきます。
(図225)
6-2: micro SD カードからラズパイを起動し、Ubuntu Serverログインを試す
では次に、micro SDカードからラズパイのUbuntu Serverが起動できるか確認してみます。
因みに、この段階ではまだインターネットに接続しません。
ログインとLinuxコマンドが実行できるかの確認だけです。
ブートローダのアップデートは後の節で説明します。
まず、下図の様にラズパイにmicro SDHCカードを挿し込みます。先ほど説明したように、カチッと音がしません。
そして、挿し込む向きに注意します。
(図14)
そして、下図の様にUSBキーボードと、HDMIモニターディスプレイを接続し、モニターディスプレイの電源を入れ、ラズパイのUSB-TypeCにACアダプターを接続して電源を入れます。電源スイッチはありませんでした。
因みに、LANケーブルはまだ接続しません。
(図231)
すると、ちょっと間を置いてからディスプレイに下図の様に表示され、
(図232)
そして、すぐに下図の様にコマンドラインが表示されます。
(図233)
すると、下図の様になって、コマンドラインが一旦ストップします。
ここでしばらく待っていても良いのですが、キーボードのEnterキーを押すと、以下のようにログイン画面になります。
(※ログイン名のところにモザイクかけています)
(図235)
ここで、先ほどRaspberri Pi Imagerで設定したログイン名とパスワードを入力します。
すると、下図の様にコマンドラインが流れ始めます。こうなればログイン成功です。
上図を見ると、httpという文字があるから、インターネットに接続しようと試みていることがわかります。
でも、まだLANケーブルは接続していませんのでネットにはつながりません。
しばらく経つと、下図の様に「~$」表示のLinuxコマンドプロンプト状態になります。
これで、Linuxコマンドが入力できるようになります。
(図237)
ここで、とりあえず、ラズパイを安全に電源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)
すると、上図のように2: eth0:
のところの、link/ether
のところが有線LANのMACアドレスです。
これをメモっておき、ルータに設定すれば良いです。
ちなみに、wlan0 がワイヤレス(無線)LANです。
ルータの設定が済んだら、下図の様に有線LANポートに接続します。
(図261)
すると、直ぐに通信を始め、ラズパイの時刻がアップデートされるようです。
一応、下図の様にdateコマンドで時刻が更新されたかどうか確認します。
(図262)
このように時刻が更新されていればOKです。
6-4: ブートローダ(ファームウェア)のアップデート
では次に、ブートローダ(ファームウェア)を最新版にアップデートします。
次に、ラズパイのブートローダのバージョンを確認するため、以下のコマンドを打ちます。
vcgencmd bootloader_version
すると、下図の様に表示されました。
(図263)
この写真を撮って置くなり、メモっておくなりしておきます。
次に以下のコマンドを実行します。
sudo apt update
ちなみに、sudoコマンドは管理者権限と同じく何でもできてしまうため、パスワード入力を求められます。
(図264)
すると、下図の様にラインが停止して、コマンドプロンプト状態になるまで待ちます。
(図265)
次に以下のコマンドを入力します。
sudo apt full-upgrade
ラインが流れた後、下図のように[Y/n]と求められるので、Yキーを押します。因みに
sudo apt full-upgrade -y
としてすると、Yキー入力を省けます。
(図266)
すると、5~10分くらいダウンロードとアップグレードが進行していきます。
(図267)
終了すると、下図の画面になるので、Enterを押します。
(図268)
すると、下図の画面になりますが、意味不明の所が多々あるので、とりあえずこのままEnterを押すか、右矢印キーで<OK>を選択します。
(図269)
すると、下図の様にコマンドプロンプトに戻ります。
(図270)
これでアップグレード完了ですが、ラズパイを再起動しなければなりません。
よって、以下のコマンドを打ちます。
sudo reboot
sudoコマンドなのでパスワード求められます。
(図271)
すると、ラズパイが再起動し、下図の様にログイン待機画面になります。
ところで、私は何度も失敗したのですが、パスワードをゆっくり入力してしまうと、下図の様に画面が勝手に進行してしまうんです。
下図の様になるまで少し待ってからログイン入力した方が良いです。
(図272)
ログインしたら、再度ブートローダのバージョンを確認します。
vcgencmd bootloader_version
すると下図のようになりました。
(図273)
結局前と同じバージョンだったので、これが最新版のようです。(2023/1/20時点)
また、アップデートできる最新版があるかどうか確認するには以下のコマンドを打ちます。
sudo rpi-eeprom-update
すると下図の様に確認できます。
(図274)
この場合は、アップデータ可能なものは無く、最新版でした。
もし、最初の行に
*** 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)
raspi-config: command not found
ということは、raspi-configコマンドが無いということです。
ならば、raspi-configをインストールしなければいけません。
まず、以下のコマンドで、apt-getを最新版にアップデートしておきます。
sudo apt-get update
(図302)
次に、以下のコマンドでraspi-configをインストールしておきます。
sudo apt-get install raspi-config
下図の様に途中で[Y/n]を求められるので「Y」と入力してEnterを押します。
(図303)
ダウンロードおよびインストールが終了すると下図の様になってコマンドプロンプト状態になります。
(図304)
No services need to be restarted.
No containers need to be restarted.
ということなので、再起動不要なようです。
では、再度以下のコマンドを打ちます。
sudo raspi-config
すると下図の様な画面が起動するので、
6.Advanced Options
を選択してEnterを押します。
(図305)
すると、下図の様な画面になるので、
A6. Boot Order
を選択し、Enter。
(図306)
すると、下図の画面になるので、
B2. USB Boot
を選択し、Enter。
(図307)
そうしたら、矢印キーの「→」で<OK>にカーソルを持っていき、Enterを押します。
(図308)
すると、下図の画面になるので、Enterを押します。
(図309)
そうしたら、下図の様に元の画面に戻るので、矢印キー「→」で<Finish>のところにカーソルを持っていき、Enterを押します。
(図310)
すると、下図の画面になり、再起動するか聞いてきますが、ここではまだ再起動しません。
なぜならば、このまま再起動してしまうと、またmicro SDカードからブートしてしまうので、ここは下図の様に必ず<No>を選択してEnterを押します。
(図311)
すると、下図の様にコマンドプロンプト状態になります。
(図312)
ここまで来たら、シャットダウンコマンドを打ちます。
sudo shutdown -h now
そうしたら、ラズパイの電源を切り、micro SDHCカードを抜き取ります。
以上、micro SDカードのブートからUSBブートに変更する方法でした。
次に、SSDからブートする前に、SSH設定の前処理をしていきます。
コメント
2023年投稿としては、始まりしか読んでいませんが、Ubuntuを選んだ理由や、インストール方法は、古い情報だと思います。
匿名さん
記事をご覧いただきありがとうございます。
記事中でもタイトルでも言っておりますが、この記事は自分用の備忘録です。
Ubuntuを選んだ理由は私個人の理由なのです。他の方々には別のOSの方が良いかも知れません。
インストール方法は記事中でも述べていますが、確かに古い情報です。
今はimagerで簡単にSSDドライブブートできるということは知っております。
記事を読んでいただけると分かると思いますが、私の使ったラズパイは2020年頃に購入したもので、それをSSDに換装するのが面倒だったというわけです。
>> 私の使ったラズパイは2020年頃に購入したもので、それをSSDに換装するのが面倒だったというわけです。
SSDに換装ってなんのことです?
よく読んで下さいました。
記事に書いてある通りですが、まぁ、私の文章は日本語になっていないとよく言われます。
(日本人じゃないかも…)
ドライブドライブ笑
匿名さん
うれしいですね。記事をまた読んで下さって感謝です。

確かに誤った表現でしたので、記事を修正しました。
ありがとうございました。
因みに、間違いかどうかChat GPTに聞いてみました。
一般的には間違いではないけど、厳密には冗長ということみたいっすね。
いずれにしても、わざわざ教えて頂き、ありがとうございました。
m(_ _)m