この記事をシェアしよう!

【STEP-24】でも触れたように、microSDカードには書き込み回数の上限や劣化による寿命があり、エラーが出て起動しなくなる可能性もあります。

そこで、USB接続した外部ストレージからRaspbianを起動することができればと調べていたら、公式サイトに”Program USB Boot Mode”の記事が見つけました。

但し、この機能は未だ実験的なもので、設定を一度、OTP (One Time Programmable) メモリーに書き込んでしまうと、二度とRaspberry Piを元の設定には戻せなくなるそうです。

とは言っても、この機能はRaspberry PiのカードスロットにmicroSDカードが挿入されていない場合のみ、USB接続したストレージからの起動を可能するもので、今まで通りカードスロットにmicroSDカードを挿入すれば無効になるものなので、それほど心配しなくてもよさそうです。

Program USB Boot Modeの有効化

「Program USB Boot Mode」を有効にするには、設定ファイル”/boot/config.txt”を編集します。

「LXTerminal」を起動し、コマンド”sudo nano“で”/boot/config.txt”を開きます。

sudo nano /boot/config.txt

「GNU nano」画面が開くので、「↓」キーでカーソルを最終行まで移動します。

カーソルが最終行にきたら「Enter」キーで 1行空けて、次のように入力します。

# Enable usb boot
program_usb_boot_mode=1

入力してから「Ctrl」+「O」キーを押すと、画面下に「書き込むファイル: /boot/config.txt」が表示されるので、「Enter」キーを押します。

「59行を書き込みました」との表示が出たら、「Ctrl」+「X」キーを押して「GNU nano」画面を閉じます。

設定ファイル”config.txt”に設定を書き込んでも、未だ設定は有効になっていません。

コマンド”vcgencmd“で、OTP (One Time Programmable) メモリーの現在の設定を確認します。

vcgencmd otp_dump | grep 17:

返された”17:1020000a”は、「Program USB Boot Mode」が無効であることを表します。

コマンド”poweroff”で、シャットダウンします。

poweroff

Raspbianがシャットダウンして、Raspberry PiのLED「ACT ( 緑 ) 」の点滅が終わり、「PWR ( 赤 ) 」のみが点灯した状態になったことを確認してから、電源を落とします。

Raspberry Piの電源が一度、完全に落ちてから、再び電源を入れてRaspbianを起動します。

「LXTerminal」を起動して、コマンド”vcgencmd“で、OTPメモリーの設定を確認します。

vcgencmd otp_dump | grep 17:

返された”17:3020000a”は、「Program USB Boot Mode」が有効であることを表します。

設定を一度、OTP (One Time Programmable) メモリーに書き込んでしまえば、「Program USB Boot Mode」の設定は無用なので、再び、コマンド”sudo nano“で”/boot/config.txt”を開きます。

sudo nano /boot/config.txt

開いた「GNU nano」画面でカーソルを最終行に送り、行頭に”#”を入力してコメントアウトします。

#

入力したら「Ctrl」+「O」キーで上書きし、「Enter」→「Ctrl」+「X」キーで画面を閉じます。

“exit”で、「LXTerminal」を閉じます。

exit

外部ストレージへのRaspbianのインストール

今回は、外部ストレージとしてUSB2.0で接続可能な外付タイプのSSDを使用します。

SSDへのインストールには【STEP-24】で用いた「SD Card Copier 」を使うので、Raspberry Piがブロックデバイスとして認識できれば、事前のパーティション操作やフォーマットは不要です。

SSDのUSBコネクタをRaspberry PiのUSB端子に挿入すると、「リムーバブルメディアの挿入」画面が開くので、「キャンセル」ボタンをクリックします。

タスクバー左端のメニューアイコンから「アクセサリ」→「SD Card Copier」をクリックして開きます。

「SD Card Copier」画面の項目「Copy From Device:」右のプルダウンメニューから、コピー元のmicroSDカードのデバイスファイル名”(/dev/mmcblk0)″を選択します。

項目「Copy To Device:」右のプルダウンメニューから、コピー先のSSDカードのデバイスファイル名”(/dev/sda)”を選択します。

今回はコピー先がmicroSDカードではないので、項目「New Partition UUIDs」のチェックボックスにはチェックを入れないで「Start」ボタンをクリックします。

警告画面「これはデバイス上のすべてのコンテンツを消去します。よろしいですか?」が現れるので、よければ「Yes」ボタンをクリックします。

準備ができると2つのパーティションがコピーされます。「Copy complete」画面が出たら、「OK」→「Close」ボタンをクリックして「SD Card Copier」を閉じます。

SSDからのRaspbian起動

ここでRaspbianを一旦、シャットダウンして、Raspberry PiのカードスロットからmicroSDカードを取り外し ( SSDはUSB端子に接続したまま ) 、電源を再投入したところ、SSDの電源LEDは点灯するものの、画面には何も映りませんでした。

そこで、公式サイトの情報を検索したところ、こんな情報がありました。

本来は、HDDのように電源投入からスピンアップまでに時間の掛かるストレージの為にある設定なのですが、USBからの起動を待つタイムアウトを既定の2秒から5秒に延長するオプションがあったので、IDE接続の旧式SSDにも効果があるのではと思い実行してみることにしました。

Raspberry PiをmicroSDカードで起動して「LXTerminal」を開き、コマンド”sudo nano“で”/boot/config.txt”を開きます。

sudo nano /boot/config.txt

カーソルを最終行に送り、次のように入力します。

program_usb_boot_timeout=1

入力したら「Ctrl」+「O」キーで上書きし、「Enter」→「Ctrl」+「X」キーで画面を閉じます。

コマンド”poweroff”で、シャットダウンします。

poweroff

Raspbianがシャットダウンして、Raspberry PiのLED「ACT ( 緑 ) 」の点滅が終わり、「PWR ( 赤 ) 」のみが点灯した状態になったことを確認してから、電源を落とします。

Raspberry Piの電源が一度、完全に落ちてから、再び電源を入れてRaspbianを起動することで設定を有効化します。

再び、Raspbianをシャットダウンして、Raspberry PiのカードスロットからmicroSDカードを取り外し ( SSDはUSB端子に接続したまま ) 、電源を再投入したところ、画面が出るまでにちょっと時間はかかりましたが、SSDからRaspbianを起動させることができました。

コマンド”lsblk“で、SSDのパーティション構成とマウント状況を確認します。

lsblk

これを見ると、”sda ( SSD ) “以外にマウントされたストレージがない状態で起動していることが分かります。

SSDの全容量59.6GBが”/boot”パーティション以外は全て”/ ( ルート ) “パーティションに割り当てられていて、未割り当て領域はありませんでした。

次回の【STEP-27】では、USB接続のデバイス ( USBメモリー等 ) にswap領域を移動して、ディスクアクセスを低減することで、SSD起動の最適化を図る方法を紹介します。

この記事をシェアしよう!