BananaPi M5 rootdelay
Der BananaPi M5 kann von seiner SD-Kartte (mmc) oder von seiner internen SSD (emmc) gebootet werden, ein Booten von einer angeschlossenen USB-SSD ist nicht vorgesehen. Es geht aber doch, und zwar so:
Das Boot-Image wird auf die emmc geschrieben und exakt das gleiche Image auf die externe USB-SSD. Damit haben diese beiden Datenträger die gleiche UUID. In meinen Fällen habe ich dazei eines der Images von Armbian genommen, wo es mehrere zur Auswahl gibt (Debian, Ubuntu, minimal, Desktop, Server etc.)
Wird nun gebootet, erfolgt dies automatisch und immer von der emmc. Und hier, also auf der emmc, müssen im Verzeichnis /boot zwei Dateien geändert werden:
1. /boot/boot.cmd*
Ausschnitt /boot/boot.cmd auf der emmc:
# DO NOT EDIT THIS FILE
# Please edit /boot/armbianEnv.txt to set supported parameters
setenv scriptaddr "0x32000000"
setenv kernel_addr_r "0x34000000"
setenv fdt_addr_r "0x4080000"
setenv overlay_error "false"
# default values
# setenv rootdev "/dev/mmcblk1p1"
setenv rootdev "/dev/sda1"
setenv verbosity "1"
setenv console "both"
setenv bootlogo "false"
setenv rootfstype "ext4"
setenv docker_optimizations "on"
Trotz obiger Warnung habe ich diese Datei dann editiert: Die Zeile mit der mmcblk1p1 wurde auskommentiert und die fett markierte Zeile mit dem Eintrag /dev/sda1 hinzugefügt.
Ganz wichtig, sonst wirs nix:
Recompile with:
mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
Also wie vorab gezeigt, wird die boot.cmd einmal neu kompiliert. Dauert nur Sekunden-Bruchteile.
2. /boot/armbianEnv.txt auf der emmc:
verbosity=1
console=both
overlay_prefix=meson
fdtfile=amlogic/meson-sm1-bananapi-m5.dtb
rootdev=UUID=759eca8c-35d7-4d78-aab7-67b40f019e95
rootfstype=ext4
extraargs=rootdelay=5
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
In der armbianEnv.txt wurde nur der fett markierte Eintrag hinzugefügt. Ohne diesen kam es ab und zu vor, dass trotzdem von der emmc gebootet wurde. Der Grund war, dass das System die USB-SSD noch nicht initialisiert hatte, weil diese zu langsam war. Also musste noch das rootdelay von 5 Sekunden dazu. Ob das wirklich nötig ist, hängt von der eingesetzten SSD bzw. dem USB-Adapter ab. Bei mir war's jedenfall notwendig.
In meinem Fall waren 10 Sekunden unnötig lang, aber 5 Sekunden zu kurz, so dass wieder von der emmc gebootet wurde. Mit 7 Sekunden lag ich dann richtig.
Und nur ganz nebenbei: Wenn ich OpenBSD auf dem BananPi M5 installiere, ist die Zeit zum Initialisieren von externen USB-SSD auch zu kurz und der Bootvorgang endet in der /bin/sh. Hier reicht es aber, ein simples "sleep 5" in die /etc/rc einzutragen, um die kleine Verzögerung zu realisieren.