Ich weiß, dass ich initrd/initramfs für alles Notwendige verwenden könnte, aber ich möchte diese Option nach Möglichkeit vermeiden.
Ich brauche ein „normales“ funktionierendes Root-Dateisystem (auf einer SD-Karte eines eingebetteten Systems, falls das wichtig ist). Wenn das Booten aus irgendeinem Grund nicht erfolgreich ist (z. B.: Der Kernel kann dieses System nicht sauber mounten), sollte versucht werden, von einem „Wiederherstellungs“-Root-Dateisystem (SquashFS auf Flash) zu booten, das für die Wiederherstellung des „normalen“ Dateisystems und den Neustart verantwortlich ist.
Ist so etwas verfügbar, ohne auf initramfs zurückzugreifen?
Der Grund, warum ich initrd/initramfs nicht möchte, sind Einschränkungen bei der Flash-Größe.
Antwort1
Sie können das „Wiederherstellungssystem“ für denselben Zweck wie das initramfs verwenden. Es ist fast dasselbe.
Natürlich wird es nicht auf die gleiche Weise in den RAM geladen wie ein Initramfs, aber das ist der einzige Unterschied, und es kann trotzdem den gleichen Zweck erfüllen – das echte Rootfs mounten, prüfen, ob es in Ordnung zu sein scheint, pivot_root hinein und /sbin/init ausführen. Wenn das Mounten fehlschlägt, wird eine Wiederherstellung durchgeführt.
(Und umgekehrt könnten Sie das Squashfs-Dateisystem entfernen und stattdessen alle Wiederherstellungstools in das Initramfs einfügen – sofern das Gerät über ausreichend RAM verfügt, um sie zu speichern.)