Dualboot: Unterschied zwischen den Versionen
(Seite angelegt) |
(Seitentitel wird schon automatisch als Überschrift angezeigt) |
||
Zeile 1: | Zeile 1: | ||
Prinzipiell kann man den Raspi dualbooten. | Prinzipiell kann man den Raspi dualbooten. | ||
Aktuelle Version vom 1. April 2023, 14:54 Uhr
Prinzipiell kann man den Raspi dualbooten.
Dafür gibt es mehrere Methoden. Schwierigkeit bei uns ist, dass man geskriptet statt interaktiv umschalten können muss.
Die "HardCore"-Methode verwendet zwei USB-Medien und entfernt start*.elf aus dem /boot, welches nicht verwendet werden soll.
Mit der "BruteForce"-Methode hat man nur genau 2 Umgebungen, weil man 4 primäre Partitionen braucht. Umschalten zwischen den beiden Umgebungen geht dann, indem man die Partitionstabellen neu schreibt:
/dev/sda1 532480 1056767 524288 256M c W95 FAT32 (LBA) #boot2 /dev/sda2 8192 532479 524288 256M c W95 FAT32 (LBA) #boot1 /dev/sda3 1056768 15544319 14487552 6.9G 83 Linux #rootfs1 /dev/sda4 15544320 30031871 14487552 6.9G 83 Linux #rootfs2 vs: /dev/sda1 8192 532479 524288 256M c W95 FAT32 (LBA) #boot1 /dev/sda2 532480 1056767 524288 256M c W95 FAT32 (LBA) #boot2 /dev/sda3 1056768 15544319 14487552 6.9G 83 Linux #rootfs1 /dev/sda4 15544320 30031871 14487552 6.9G 83 Linux #rootfs2 # Dabei muss man aufpassen, dass in [rootfs2] die /boot-Partition # als PARTUUID=xxxxxxxx-01 eingetragen wird, denn wenn rootfs2 # gebootet wird, hält sich /boot natürlich aufgrund der fstab für # -01, obwohl es strenggenommen -02 wäre. # In [boot2] muss dagegen unbedingt in der cmdline.txt die PARTUUID # für / auf -04 gesetzt werden (und in [boot1] auf -03).
Mit -05, -06, etc. darf rootfs auch auf logischer Partition liegen! 3 primäre /boot, 1 extended, 3 logische / (und ggf. noch separate Datenpartition) sind also möglich!
Um außer PARTUUID auch LABEL etc. verwenden zu können, braucht man eine initrd. Die wird automatisch erstellt, wenn man das Overlay File System benutzt; manuell geht es so wie hier beschrieben. Damit sollte auch LVM unterstützt werden, was die Sache noch bequemer machen würde.
Laut diesem Text sei es möglich, in der config.txt einen Parameter os_prefix zu setzen, der ein Unterverzeichnis in /boot/ darstellen kann. Dann werden cmdline.txt, kernel, overlays etc. aus diesem Unterverzeichnis gezogen. Das wäre eine sehr schicke Methode. Man braucht nur genug Platz in der 1. Partition für mehrere Umgebungen. Dieses Script geht so ähnlich vor, movet aber jedes Mal die Inhalte hin und her, statt die config.txt zu ändern. Mit bindmounts sollten sich die Unterverzeichnisse auf /boot "hochmappen" lassen, falls das notwendig ist, um Updates zu fahren. Aber vielleicht ist der Updater ja auch schlau genug, ein Prefix zu beachten?
Nota bene: Laut diesem Text kann man die config.txt-Optionen davon abhängig machen, welcher GPIO in welchem Zustand ist. Das würde einen Hardware-Taster für einen Recovery-Mode erlauben - oder automatisches Recovery, wenn der Hörer nicht aufgelegt ist und das Telefon neu bootet. Also so was wie:
[gpio4=1] # Receiver was off-hook during boot os_prefix=/bsys [gpio4=0] # Receiver was on-hook during boot os_prefix=/prd1 #os_prefix=/prd2 [all]
Pi-Boot-Switch ist einen Blick wert.
Macht es Sinn, einen Ein-/Ausschalt-Taster auf die Unterseite zu verbauen, so dass Hochheben ausschaltet?