Ich habe ein Atmel SAM9X-System, auf dem Angstrom ausgeführt wird. Ich versuche, eine Wiederherstellungspartition zu erstellen, wenn also ein Benutzer während des Hochfahrens eine Taste gedrückt hält, wird die Wiederherstellungspartition gestartet.
Ich habe den Bootstrap so modifiziert, dass ein alternativer Linux-Kernel geladen wird, wenn beim Booten eine Taste gedrückt gehalten wird. Was ich möchte, ist, dass der alternative Kernel Linux von der Recovery-Boot-Partition lädt, nicht von der normalen Hauptpartition.
Ist das überhaupt möglich? Oder kann ich die Wiederherstellungspartition laden, ohne zwei Kernel zu verwenden?
Der Grund, warum ich das möchte, ist, dass, wenn die bootfähige Hauptpartition beschädigt wird, die Wiederherstellungspartition sich selbst auf die Hauptpartition kopiert (ähnlich wie bei Dell- oder HP-Windows-Computern mit der Wiederherstellungspartition) und die bootfähige Hauptpartition wiederhergestellt wird.
Bearbeiten :
Giles Vorschlag hat es geschafft. Der Bootstrap hat das Kernel-Befehlszeilenargument gesetzt, ich habe gerade root=/dev/mmcblk0p3
hinzugefügt (boot from 3rd sd partition) dazu und es wird von der gewünschten Partition gebootet!
Akzeptierte Antwort:
Der Kernel enthält eine Standard-Root-Partitionseinstellung, die zur Kompilierzeit bestimmt wird (Sie können sie im Binär-Image mit dem Befehl rdev
ändern Befehl). Sie können ein Argument in der Kernel-Befehlszeile übergeben, um diese Standardeinstellung beim Booten zu überschreiben, z. root=/dev/mmcblk9p42
um von MMC-Gerät 9, Partition 42 statt der Standardeinstellung zu booten. Die Befehlszeile wird vom Bootloader an den Kernel übergeben, daher müssen Sie Ihre Bootloader-Konfiguration ändern.
Wenn es ein initrd oder initramfs gibt, kann es die Root-Partition überschreiben, die einkompiliert oder vom Bootloader übergeben wurde.