Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@masataka55

USBブートに対応していない Raspberry Pi 4 を USB ストレージから起動する(microSD併用・その2)

USBブートに対応していない Raspberry Pi 4 を USB ストレージから起動する(microSD併用・その2)

【追記】Raspberry Pi OSが標準で対応しました

本家Raspberry Pi OSのアップデートにより、USBストレージから起動できるようになっています。
こちらの方法でアップデートしてください。
また、64bit版Raspberry Pi OSはこちらです。

これはなに

  • せっかく高性能なRasPi4を、読み書きの速いUSB3.0のUSBメモリから起動したい。
  • USBブートに対応していない Raspberry Pi を USB ストレージから起動する(microSD併用)方法は、お手軽な方法だ。 しかしbootcode.bin がハードウエアに依存するため、すべてのバージョンの Raspberry Pi で動作するわけではない。
  • 具体的には、Raspberry Pi 4 は対応しない。また、公式では RaspBerry Pi 4 の USB ブートは未対応。
  • より汎用的に「microSDを併用してUSBストレージから起動する」方法を整理し、Raspberry Pi 4 を USB から起動する。

ポイント

  • boot 領域として microSD カードを FAT32 、セクタサイズ 512byte でフォーマットする。
  • microSD カード内の cmdline.txtに、以下のいずれかを指定して USB 機器から起動する。
    • boot=/dev/sda2
    • boot=LABEL=rootfs
    • boot=partuuid
  • ポイントは、microsdカードの cmdline.txt に、どの領域から起動するか記述することです。
    image.png

  • USB3.0 機器の場合、相性の可能性あり

  • パーティションサイズの調整

    • 小さい容量の microSDカードというのも、だんだん入手できなくなってきた。
    • 大容量のカードでを使う場合、parted、resize2fs でパーティションを小さくする。
    • Win32 Disk Imager で読み込むときに、下記にチェックすれば、小さい img で済む。

image.png

参考

手順

具体的な作業手順です。

Raspberry Piのモデルを確認する

$ cat /proc/device-tree/model
Raspberry Pi 4 Model B Rev 1.1

Raspberry Pi 4 MODEL B Rev 1.1 は 公式ではまだ USB ブートに対応していません。

Raspbian の準備(通常どおり)

  • microSD カード(目的の Raspbain を書き込める範囲で、できるだけ容量の小さいもの)に Raspbian を通常通り書き込む。
  • 書き込んだ microSD で Raspberry Pi を起動する。初回起動時に UUID がランダムに書き換わるため。
  • 起動したらログインし、念のため UUID と PARTUUID を blkid コマンドで確認しておく。 2019-09-26-raspbian-buster-full の場合、一例として以下のようになった。
$ blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="9F2D-0578" TYPE="vfat" PARTUUID="5e3da3da-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="efc2ea8b-042f-47f5-953e-577d8860de55" TYPE="ext4" PARTUUID="5e3da3da-02"

起動用(rootfs) USB 機器にコピーする

Win32DiskImagerを用いて、microSD カードを起動したい USB 機器にコピーする。
動作確認のためだけなら、microSDをUSBリーダーに入れるだけでも良い。

boot 用 microsd カードの準備する

小さい容量のmicroSDカードを準備する。
FAT32、セクタサイズ 512 byte でフォーマットする。ラベルは microsd とする(他でも構いません)。
上記の起動用 USB機器の、FAT32でwindowsから読める領域のファイルを、ファイルコピーする。

Raspberry Pi 4 を起動する

小さい容量のmicroSDと USB 機器をRaspberry Piにセットする。起動すると、以下のようになる。

$ blkid
/dev/mmcblk0p1: LABEL="microsd" UUID="1CD0-AD85" TYPE="vfat" PARTUUID="17869b7d-01"
/dev/sda1: LABEL_FATBOOT="boot" LABEL="boot" UUID="9F2D-0578" TYPE="vfat" PARTUUID="5e3da3da-01"
/dev/sda2: LABEL="rootfs" UUID="efc2ea8b-042f-47f5-953e-577d8860de55" TYPE="ext4" PARTUUID="5e3da3da-02"/dev/mmcblk0p1: 

$ df (関係ない箇所を省略)
ファイルシス   1K-ブロック    使用  使用可 使用% マウント位置
/dev/root          7311288 6385676  547024   93% /
/dev/sda1           258095   53703  204392   21% /boot
/dev/mmcblk0p1     1925120   54124 1870996    3% /media/username/1CD0-AD85

8GBのmicroSDを用いたので、コピーしたUSBメモリーの領域も8GBのままだ。お望みなら sudo raspi-config で拡張できる。parted で拡張できる。
起動に用いた2GBのmicroSDは、自動的に/media/username/にマウントされている。
/etc/fstabを編集して、microSD が /boot にマウントされるように修正しておく。

$ sudo nano /etc/fstab
PARTUUID=17869b7d-01  /boot           vfat    defaults          0       2

まとめ

ポイントは、microsdカードの cmdline.txt に、どの領域から起動するか記述するだけです。

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?