Raspberry Pi4 : USB BOOT
Raspberry Pi4はUSB3.0が使える。折角なので、USBメモリからブートできるときはmicro sd-cardよりもUSBメモリからブートするように設定しておく。2020/8時点ではファームウェアの更新をしないとUSBメモリからのブートは出来ないようなのでファームウェアの更新作業を始めに行う。
まずは公式(https://www.raspberrypi.org/downloads/raspberry-pi-os/)からRaspberry Pi OSをダウンロードする。今回はFull版(2020-05-27-raspios-buster-full-armhf.zip)を使用したが、Lite版でも問題は無いと思われる。作業前のアップデートで時間を浪費しない様にFull版は使わない方がいい。
Rufusを使ってRaspberry Pi OSをsd-cardにセットアップする。Rufusはzipファイルを処理できるのでダウンロードしたzipファイルをインプットに指定すればよい。
作成したRaspberry Pi OSの設定を行う。初回ログインはユーザー名がpi、パスワードがraspberryになる。デフォルトではsshdが動作していないようなのでsshdを起動させる。
pi@raspberrypi:~ $ passwd
pi@raspberrypi:~ $ sudo su -
root@raspberrypi:~# passwd
root@raspberrypi:~# systemctl enable ssh
root@raspberrypi:~# systemctl start ssh
次にソフトウェアの最新化を行う。
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt full-upgrade
ファームウェアを更新する前に導入したいファームウェアのリリースステータスを指定する。すでにusbブートに対応したstableがリリースされているのでstableを指定する。(初期値はcriticalだった)
pi@raspberrypi:~ $ sudo vi /etc/default/rpi-eeprom-update
pi@raspberrypi:~ $ cat /etc/default/rpi-eeprom-update
FIRMWARE_RELEASE_STATUS="stable"
USBブートに対応したファームウェアをインストールする。このまま書き込むとSDカード→USBメディアの順でブートするので順番を変更したい場合は後述する手順を踏む。
pi@raspberrypi:~ $ sudo rpi-eeprom-update -d -a
BCM2711 detected
Dedicated VL805 EEPROM detected
BOOTFS /boot
*** INSTALLING EEPROM UPDATES ***
BOOTLOADER: update available
CURRENT: Thu 16 Apr 2020 05:11:26 PM UTC (1587057086)
LATEST: Fri 31 Jul 2020 01:43:39 PM UTC (1596203019)
FW DIR: /lib/firmware/raspberrypi/bootloader/stable
VL805: update available
CURRENT: 000137ad
LATEST: 000138a1
BOOTFS /boot
EEPROM updates pending. Please reboot to apply the update.
pi@raspberrypi:~ $
pi@raspberrypi:~ $sudo reboot
~~~~ REBOOT ~~~~
pi@raspberrypi:~ $ sudo vcgencmd bootloader_version
Jul 31 2020 14:43:39
version f8d1dc69144b10b4bd78b4b6d08658ac3005726d (release)
timestamp 1596203019
pi@raspberrypi:~ $
pi@raspberrypi:~ $ vcgencmd bootloader_config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
BOOT_ORDER=0xf41
ブート時はUSBメモリを優先したいのでBOOT_ORDERを書き換える。bootloader configの設定については公式(https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md)を参照。
pi@raspberrypi:~ $ sudo su -
root@raspberrypi:~# ls /lib/firmware/raspberrypi/bootloader/stable/
pieeprom-2020-04-16.bin pieeprom-2020-07-16.bin recovery.bin vl805-000138a1.bin
pieeprom-2020-06-15.bin pieeprom-2020-07-31.bin vl805-000137ad.bin
root@raspberrypi:~# cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-07-31.bin pieeprom.bin
root@raspberrypi:~# rpi-eeprom-config pieeprom.bin > bootconf.txt
root@raspberrypi:~# vi bootconf.txt
root@raspberrypi:~#
root@raspberrypi:~# cat bootconf.txt
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
BOOT_ORDER=0xf14
root@raspberrypi:~# rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin
root@raspberrypi:~# ls
bootconf.txt pieeprom.bin pieeprom-new.bin
作成したpieeprom-new.binをファームウェアとして適用する。
root@raspberrypi:~# rpi-eeprom-update -d -f ./pieeprom-new.bin
BCM2711 detected
Dedicated VL805 EEPROM detected
BOOTFS /boot
*** INSTALLING ./pieeprom-new.bin ***
BOOTFS /boot
EEPROM update pending. Please reboot to apply the update.
root@raspberrypi:~# reboot
再起動後にbootloader_configを確認する。
pi@raspberrypi:~ $ vcgencmd bootloader_version
Jul 31 2020 14:43:39
version f8d1dc69144b10b4bd78b4b6d08658ac3005726d (release)
timestamp 1596203019
pi@raspberrypi:~ $
pi@raspberrypi:~ $ vcgencmd bootloader_config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
BOOT_ORDER=0xf14
USBメモリとsd-cardを同時にセットして、USBメモリからブートされるかを確認する。今回はUSBメモリ側に使用中のRaspberry Pi OS、SD-card側にopenSUSEをセットしているので、Raspberry Pi OSが起動すればO.K.
root@raspberrypi:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 58.2G 0 disk
tqsda1 8:1 1 256M 0 part /boot
mqsda2 8:2 1 58G 0 part /
mmcblk0 179:0 0 28.8G 0 disk
tqmmcblk0p1 179:1 0 64M 0 part /media/pi/EFI
tqmmcblk0p2 179:2 0 500M 0 part
mqmmcblk0p3 179:3 0 28.3G 0 part /media/pi/ROOT
root@raspberrypi:~#
root@raspberrypi:~#
root@raspberrypi:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/root ext4 58G 6.4G 49G 12% /
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 17M 1.9G 1% /run
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 vfat 253M 54M 199M 22% /boot
tmpfs tmpfs 383M 0 383M 0% /run/user/1000
/dev/mmcblk0p3 ext4 28G 4.6G 22G 18% /media/pi/ROOT
/dev/mmcblk0p1 vfat 64M 8.5M 56M 14% /media/pi/EFI