本記事について
本記事は公式サイトの USB mass storage device boot の英文記事を非公式に日本語訳したものです。
USB ブートモードが有効な機種について
USB 大容量ストレージブートは、 Raspberry Pi 3B, 3B +, 3A + と 2B v1.2 でのみ使用できます。
このチュートリアルでは、フラッシュドライブや USB ハードディスクなどの USB 大容量ストレージデバイスから Raspberry Pi を起動する方法について説明します。この機能は実験的なものであり、すべての USB 大容量ストレージデバイスで機能するわけではないことに注意してください。一部のUSB 大容量ストレージデバイスが機能しない理由の説明、およびいくつかの背景情報については、 Gordon Hollingworth の このブログ投稿 を参照してください。
USB ブートモードの設定
Raspberry Pi 3A + および 3B + は、変更なしで USB から起動できますが、 Raspberry Pi 3A および 3B では、USBブートビットを OTP メモリに(1 度だけプログラム的に)設定する必要があります。 Raspberry Pi 3A + または 3B + を使用している場合は、次のセクションに進んでください。
USB ブートビットを有効にするには、 USB ブートモードを有効にする設定オプションを使用して、 Raspberry Pi 3 を SD カードから起動する必要があります。
このビットが設定されると、 SD カードは不要になります。 OTP に加えた変更は永続的なものであり、元に戻すことはできません。
Raspbian または Raspbian Lite を実行している任意の SD カードを使用して、 OTP ビットをプログラムできます。このような SD カードがない場合は、通常の方法で Raspbian または Raspbian Lite をインストールできます。 イメージのインストール を参照してください。
まず、最新のブートファイルで /boot
ディレクトリを準備します(Raspbian / Raspbian Lite の 2017-04-10 リリース以降を使用している場合、この手順は不要です)。
$ sudo apt update && sudo apt full-upgrade
次に、下記のコードで USB ブートモードを有効にします。
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
これにより、 program_usb_boot_mode = 1
が /boot/config.txt
の最後に追加されます。 sudo reboot
を実行して Raspberry Pi を再起動し、 OTP が次のようにプログラムされていることを確認します。
$ vcgencmd otp_dump | grep 17:
17:3020000a
出力 0x3020000a
が表示されていることを確認します。そうでない場合、 OTP ビットは正常にプログラムされていません。この場合、プログラミング手順をもう一度実行してください。ビットがまだ設定されていない場合、これは Pi ハードウェア自体の障害を示している可能性があります。
必要に応じて、 config.txt
から program_usb_boot_mode
行を削除して、 SD カードを別の Raspberry Pi に挿入しても USB ブートモードがプログラムされないようにすることができます。 config.txt
の最後に空白行がないことを確認してください。たとえば、コマンド sudo nano /boot/config.txt
を実行して nano エディターを起動し、 config.txt
を編集できます。
USB 大容量ストレージデバイスの準備
Raspbian の 2017-04-10 リリース以降、 SD カードの場合と同様に、オペレーティングシステムイメージを USB デバイスに直接コピーすることにより、動作中の Raspbian システムを USB 大容量ストレージデバイスにインストールできます。この手順を実行するには、USB大容量記憶装置に対応するドライブを選択して、 ここ の指示に従ってください。
USB 大容量ストレージデバイスのイメージングが完了したら、コンピューターから取り外して Raspberry Pi に挿入します。
USB 大容量ストレージデバイスから Raspberry Pi を起動する
USB 大容量ストレージデバイスを Raspberry Pi に接続し、 Pi の電源を入れます。 5 〜 10 秒後、 Raspberry Pi が起動し、接続されたディスプレイにレインボースプラッシュ画面が表示されます。
USB ブートビットが設定されている場合、 USB ブートが機能するために SD カードを Raspberry Pi に挿入する必要はありません。
ブートに失敗する場合
SD カードを Raspberry Pi に挿入して電源を入れます。 USB 大容量ストレージデバイスを Raspberry Pi に接続し、以下の操作を試してください。
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot
/mnt/boot/cmdline.txt
の root パラメータの値を /dev/sda2
に変更します。
console=serial0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
/mnt/etc/fstab
を編集します。 /boot
を /dev/sda1
、 /
を /dev/sda2
に変更します。
proc /proc proc defaults 0 0
/dev/sda1 /boot vfat defaults 0 2
/dev/sda2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
raspbian をシャットダウンし、 USB 大容量ストレージデバイスを接続したまま、 SD カードだけを Raspberry Pi から抜きます。再度 Raspberry Pi の電源を入れて少し待つと raspbian が起動します。