0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi 3B Arch Linux USB起動 (microSD無)

Last updated at Posted at 2020-05-13

 Raspberry Pi 3 では、microSD無しのUSB[メモリ/HDD/SSD]だけでの起動に対応しています。Rasibianで実施したサイトRaspberry pi 公式サイト(英文)でも記されています。ただ、その他のデストリビューションで行ったものが見つけられなかったので、私自身の忘備録もかねてArch Linuxで実施してみた結果を記しておきます。

結果

 ・最初にUSBブートを有効化する必要があるが、有効化以降なら可能。
 ・Arch Linux ARM 32bit版(armv7),64bit版(aarch64)の両方ともできた。

確認環境

 ・Raspberry Pi 3B (初期の+のつかない方)
 ・2.5inch sata HDD を USB2.0 で接続
 ・USB 日本語キーボード
 ・WQHDモニター(HDMI接続)
 ・電源 5V 2.5A、USB-MicroB端子より給電

手順

1.USBブートの有効化

 最初にArch Linux ARM 32bit版か公式OS RasbianをmicroSDカードにインストールする必要があります。USBブートの有効化程度にしか使わないので、アップデートなどの処置はしなくてもいいでしょう。尚、インストール方法はここでは省略しますので、それぞれの公式サイト等の手順を確認して下さい。
 インストール完了、rootでログイン後、/boot/config.txtへ以下の2行をテキストエディタ等で追加します。

config.txt
program_usb_boot_mode=1
program_usb_boot_timeout=10

2行目のtimeoutの値10は、HDDを使用する場合の電源ONからスピンアップ時間をとる為(実質的に使えるようになるまで)の待ち時間で、かなり大きくしています。USBメモリやSSDの場合は値をもっと小さくしても大丈夫だとは思います。起動できる様になったらconfig.txtに追加し小さい値にしてみて調整してください(2020.6.25追記:timeout値を小さくしても、他のwaitがあるのかあまり変わらないようです。適当でいいかもしれません)。

 尚、有効化すると元に戻せなくなり、一部modelでは影響があるようですので、参考サイトRaspberry pi 公式サイト(英文)で確認ください(3B系はほとんど影響ない)。又、上記内容のconfig.txtの追加はこの時だけで、新規インストールしたUSBではtimeoutを調整する以外は追加する必要ないです。

 ※補足

 3B+では初期からUSBブートが有効化されているとのことで、program_usb_boot_modeに関する事は不要です。ただ、USB HDDを使う場合は上記理由からtimeoutを追加し大きな値に変更した方がよいでしょう(デフォルト値は2)。~~又、4Bは起動方法が変わり、まだUSBだけでの起動ができないようです(2020.05.10時点)。この辺は参考サイトRaspberry pi 公式サイト(英文)に詳しく載っています。~~私はいずれも実機を所有しておらずあまり情報を追ってないので、最新情報は各自で確認下さい。

2021.7.09追加:4BでArch linux のUSB boot も2020.8頃から出来るようです。ここが参考になると思います。
2020.6.25修正:4Bでも2020.5.中頃から公式のRasberry Pi OS(64bit)ではrpi-eepromをアップデートすることで可能とのことです。

2.USBブートの有効化の確認

 再起動で有効になるので再起動後、vcgencmdコマンドで有効になったか確認します。尚、Arch Linux ARM 32bit版ではvcgencmdコマンドへのパスが設定されてないので、フルパスで実行します。

# /opt/vc/bin/vcgencmd otp_dump | grep 17:
17:3020000a

17:3020000aとなったらUSBブートが有効化され、準備完了となります。
ちなみに変更前は、17:1020000aでした。

3.USB[メモリ/HDD/SSD]への Arch Linux ARM 新規インストール

 microSDカードへのインストール方法と変わりません。別Linuxマシンに新規インストール用のUSB[メモリ/HDD/SSD]を接続しlsblkコマンドでデバイス名を確認します。後は確認したデバイス名を使い32bit版か64bit版を公式サイト手順の通りにumount前までの作業を行います(mv root/boot/* boot まで実施)。

3.1 32bit版(armv7),64bit版(aarch64)共通設定

 lsコマンドで、USB[メモリ/HDD/SSD]のパーテイションID(PARTUUID)を確認し、起動ディスクとなるUSB[メモリ/HDD/SSD]内の、etc/fstabに「/」、「/boot」のパーテイションID(PARTUUID)をテキストエディタ等で追加します。以下は概要で、実際には確認したPARTUUIDとデバイス名等、各自の環境で設定してください。

# ls -l /dev/disk/by-partuuid/
・・・・・ (USBのPARTUUID-01) -> ../../sda1
・・・・・ (USBのPARTUUID-02) -> ../../sda2

# vi (USBの/マウントポイント)/etc/fstab
PARTUUID=(USBのPARTUUID-01) /boot vfat defaults 0 2
PARTUUID=(USBのPARTUUID-02) /     ext4 defaults,noatime 0 1

64bit版(aarch64)では以上で設定は終わりです。

 ※64bit版(aarch64) Arch Linux補足

 64bit版(aarch64)では起動方法がu-boot方式に変更されており、32bit版のcmdline.txtに相当するものはboot.txtになっています。64bit版ではこの段階で修正する必要はないと思われます。ちなみに、このファイルはスクリプトになっていますが、この段階でテキストエディタでboot.txtを修正しても反映されません。反映するようにするためには、64bit環境で起動後、uboot-toolsをインストールしboot.txtを編集した後、mksrを実行する必要があります。
 私の場合は、32bit版をインストール後、64bit版にトライした為か、fstabの設定だけで起動できました。いきなり64bit版を入れた場合や、他のディストリビューションは確認してませんので、自身で確認して下さい。

3.2 32bit版(armv7)のcmdline.txtの修正

 起動ディスクとなるUSB[メモリ/HDD/SSD]内の、boot/cmdline.txt内の root=/dev/mmcbloc02pとなっている部分を、USB[メモリ/HDD/SSD]のパーテイションID(PARTUUID)に変更します。

cmdline.txtの編集例
# vi (USBの/マウントポイント)/boot/cmdline.txt
root=PARTUUID=(USBのPARTUUID-02) rw rootwait ・・・・・

3.3 USB[メモリ/HDD/SSD]のアンマウント

 上記設定が終わったら、母艦のLinuxマシンから USB[メモリ/HDD/SSD]をunmount、取り外し、 Raspberry Pi 3に接続します。そして Raspberry Pi 3からmicroSDカードを抜き、電源を入れます。これで起動すると思われます。
 上手く起動できない場合は、電源容量が不足していないか、タイムアウトの時間が短すぎないか、PARTUUIDが間違ってないか等確認してください。

3.4 起動後

 公式サイトの手順のとおり、pacman-key の初期化を実施し、その後通常どおり自分に必要なパッケージをインストールし環境構築していってください。
 ちなみに私の環境のスクリーンショットは以下のようになります。
screenshot_32.png
screenshot_64.png

所感

 今までアクセス速度が普通のmicroSDカード使っていたので、ディスクまわりが絡む処理はあまり速くありませんでした。USB HDDにする事でこの辺が改善され以前より速くなりました。又、microSDカードの読み書きの扱いを心配しなく済むので精神的にも気楽にパッケージのインストール・アンインストールやswap領域の設定もできます。ノートPCのストレージ交換で容量の小さなHDD/SSDが余っているようならトライしてみてはいかがでしょうか。

参考サイト

純規の暇人趣味ブログ:https://jyn.jp/raspberrypi-usb-only-boot/

公式サイト(関連部分)

Arch Linux ARM (英文):https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3
Raspberry Pi (英文):https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md

修正履歴

2021.07.09:Arch linux での raspberry pi 4b のusb bootの関連情報を追加。
2020.06.25:timeout部分追記。raspberry pi 4情報修正。リンク追加。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?