Turing RK1でboot deviceを切り替える

Turing Pi 2.5上のTuring RK1で普段はNVMeから起動しているが、リカバリ用途などで遠隔からeMMCから起動したくなった時の作業メモ。 この手順を忘れていても物理的にNVMeを取り外せばeMMCから起動するが、せっかくBMCがついているので全て遠隔から操作したい。

BMCにsshする

Turing Pi 2.5のBMCにsshする。(デフォルトのユーザ/パスワードはroot / turing)

user@turingpi.local

ノードの電源を投入する

数字はノード番号(1~4)

$ tpi power --node 1 off
$ tpi power --node 1 on

すぐにBMC上からシリアルコンソールにアタッチする

$ microcom -s 115200 /dev/ttyS1

U-bootのメニューに入る

カウントダウンが表示されたらenterキーを押すとブートシーケンスが止まってU-bootのメニューに入れる

U-Boot 2024.01 (Jan 28 2024 - 19:39:18 +0000)

Model: Turing Machines RK1
DRAM:  32 GiB (effective 31.7 GiB)
Core:  318 devices, 27 uclasses, devicetree: separate
MMC:   mmc@fe2e0000: 0
Loading Environment from nowhere... OK
In:    serial@febc0000
Out:   serial@febc0000
Err:   serial@febc0000
Model: Turing Machines RK1
Net:   eth0: ethernet@fe1c0000
Hit any key to stop autoboot:  2
=>

bootする

boot対象一覧を表示する。ちなみにmmc1はSDカードになっていて、内蔵eMMCはmmc0。なのでSDカードを刺さなければNVMeから起動しようとする。

=> printenv boot_targets
boot_targets=mmc1 nvme scsi usb mmc0 pxe dhcp spi

一時的に起動順序を変更する。setenvは一時的な値の変更であって永続的ではない。 永続的な変更は不可能な模様。 https://forum.turingpi.com/t/16718526/rk1-booting-and-running-off-storage-beyond-emmc

内蔵eMMCから優先的に起動する場合は以下のようにする。

=> setenv boot_targets "mmc0 mmc1 nvme scsi usb pxe dhcp spi"
=> boot