それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

raspi4 に入れた ubuntu でvcgencmd や rpi-eeprom をインストールしてraspi 管理コマンドを使えるようにする

libraspberrypi-bin をインストールしたらコマンドが入ってくる

sudo apt install libraspberrypi-bin 

インストールしてしまえば、通常通り

takuya@ubuntu:~$ sudo vcgencmd bootloader_version
Dec 11 2020 11:15:17
version c3f26b6070054bca030366de2550d79ddae1207a (release)
timestamp 1607685317
update-time 1615925391
capabilities 0x0000001f

rpi-eepromで状況を把握

rpi-eepromコマンドで、現況をみる

sudo apt install rpi-eeprom 

EEPROMについての情報を見ることができる。

takuya@ubuntu:~$ sudo rpi-eeprom-update
BCM2711 detected
VL805 firmware in bootloader EEPROM
BOOTLOADER: up-to-date
CURRENT: 2020年 12月 11日 金曜日 11:15:17 UTC (1607685317)
 LATEST: 2020年  9月  3日 木曜日 12:11:43 UTC (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: up-to-date
CURRENT: 000138a1
 LATEST: 000138a1

ブートローダーについては、/lib/firmware/raspberrypi/bootloader/beta/ ディレクトリにあった。

takuya@ubuntu:~$ ls /lib/firmware/raspberrypi/bootloader/beta/ -la
total 4820
drwxr-xr-x 2 root root   4096  5月 30 03:04 .
drwxr-xr-x 5 root root   4096  5月 30 03:04 ..
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-07-16.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-07-31.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-09-03.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-10-02.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-10-28.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-11-24.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2020-12-11.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2021-01-05.bin
-rw-r--r-- 1 root root 524288  1月 13 01:44 pieeprom-2021-01-11.bin
-rw-r--r-- 1 root root 106396  1月 13 01:44 recovery.bin
-rw-r--r-- 1 root root  99224  1月 13 01:44 vl805-000138a1.bin

フルアップグレード

ubuntu をいれた raspi4 をフルアップグレードするには、次のようにする

sudo apt update 
sudo apt full-upgrade

eeprom をアップデート

sudo rpi-eeprom-update -a

もっと最新版がほしいときは

初期設定では、default=critical になっておりとても保守的です。epprom 壊れたら再起不能ですからね。仕方ないすよね。

せめてstable くらいにする

sudo sed -i 's/default/stable/' /etc/default/rpi-eeprom-update
sudo rpi-eeprom-update

編集をせずに一時的にbeta でアップデートする

sudo rpi-eeprom-update -a  -f beta
sudo reboot 

USBブートを有効にする。

参考資料によると、0x1 がSDカードを示し、0x41 がSDCard,then,USBらしい。右から順に読まれるそうだ、0xf14 なら、USB,SDCard,Reboot になるのですね。

Take note of the BOOT_ORDER code. The defualt code is 0xf41 and is read right to left to determine the boot order.

  • 1 = Check SD card
  • 4 = Check USB drive
  • f = Start again

This boot order is exactly what we want. If the boot order code is anything other than 0xf41, you can change the boot configuration using this command.

export EDITOR=vim 
sudo -E rpi-eeprom-config --edit

これで、USBメモリ、USBHDDからのブートを使えるようになる。Ubuntuだけで完結するので良い。

BOOT_ORDERの詳細設定は、Raspiの公式ページに記載があり

値と意味は次のようになっている。(2023-02-07確認)

Value Mode Description
0x0 SD CARD DETECT Try SD then wait for card-detect to indicate that the card has changed - deprecated now that 0xf (RESTART) is available.
0x1 SD CARD SD card (or eMMC on Compute Module 4).
0x2 NETWORK Network boot - See Network boot server tutorial
0x3 RPIBOOT RPIBOOT - See usbboot
0x4 USB-MSD USB mass storage boot - See USB mass storage boot
0x5 BCM-USB-MSD USB 2.0 boot from USB Type C socket (CM4: USB type A socket on CM4IO board).
0x6 NVME CM4 only: boot from an NVMe SSD connected to the PCIe interface. See NVMe boot for more details.
0x7 HTTP HTTP boot over ethernet. See HTTP boot for more details.
0xe STOP Stop and display error pattern. A power cycle is required to exit this state.
0xf RESTART Restart from the first boot-mode in the BOOT_ORDER field i.e. loop

よく見ると,HTTPブートやPXEブートも可能になってる。もうSDカードいらんじゃん。

ちなみに、USBブートを無効にすると・・・

USBを挿してもSDカードなしなら起動しなくなる。

ubuntu-server raspi いいね。

raspbian 使ってたけど、64bit 周りや仮想マシン・LXCコンテナ・Dockerやsnap を扱えるのと GUIがないので、ubuntu-serverのほうが、私の好みの動作をしてくれるので気に入ったかもしれない。

参考資料

https://raspberrystreet.com/learn/how-to-boot-raspberrypi-from-usb-ssd