Hängen Sie das Root-Dateisystem von initramfs ein

15

Es ist ein weit verbreitetes Szenario. Aus irgendeinem Grund hat das initramfs (OpenSUSE, falls es wichtig ist) das Root-Dateisystem nicht gefunden, sodass Sie in eine Rettungsshell abgelegt werden. Ich weiß aber genau, welches Gerät montiert werden muss. Meine Frage:

Wie wird das Root-Dateisystem korrekt eingehängt und die Startsequenz fortgesetzt?

Vermutlich ist das der springende Punkt der Rettungskonsole. Und doch scheint niemand dokumentiert zu haben, wie Sie dies tatsächlich tun.

Natürlich kann ich das Root-Dateisystem irgendwo mounten. Aber wie mache ich das zur Wurzel des Dateisystembaums? Und jetzt fahre ich mit dem normalen Bootvorgang fort? (Ich dachte nur das Verlassen der Shell würde es tun ... aber es tut es nicht.) Was genau müssen Sie mounten, bevor Sie fortfahren und wie geht es weiter?

MathematicalOrchid
quelle
2
Ich könnte mich irren, aber ich denke, sobald Sie sich in einer Rettungs-Shell befinden, können Sie den aktuellen Start nicht fortsetzen. Sie beheben die Probleme, damit der nächste Start erfolgreich ist
Eric Renouf,
@EricRenouf Das manuelle Booten des gesamten Systems ist wahrscheinlich der einfachste Weg, um ein solches Problem zu beheben. In der Vergangenheit hatte ich Probleme, bei denen das initramfs meine mit cryptsetup-luks verschlüsselte Root-Partition nicht öffnen konnte. Die einfachste Lösung bestand darin, sie manuell zu starten und dann auszuführen update-initramfs -u. Ich konnte es absolut nicht zum Laufen bringen, als ich mich gerade chrootvon einem Rettungssystem in das Root-Dateisystem eingeschlichen habe. das resultierende initramfs war immer kaputt.
Martin von Wittich
Ist es tatsächlich ein initrd oder ein initramfs? (Nur weil die Datei aufgerufen wird, heißt initrddas noch lange nicht, dass es sich um eine solche handelt. Die meisten Distributionen haben auf initramfsdiese Datei gewechselt , rufen sie jedoch weiterhin auf initrd.) Welche Distribution verwenden Sie (was initrd / initramfs tut, hängt davon ab, welche Distribution dort abgelegt wurde)?
Gilles 'SO- hör auf böse zu sein'
@ Gilles Ich bin mir ziemlich sicher, dass es tatsächlich initramfs ist. Ich bin mir nicht sicher, ob es tatsächlich einen Unterschied macht. In jedem Fall habe ich ein Mini-Dateisystem und muss das echte Dateisystem mounten. (OpenSUSE, falls es darauf ankommt.)
MathematicalOrchid

Antworten:

3

normales Verfahren ist

  1. mount / dev / sdX / mnt
  2. Problem am / mnt beheben
  3. neustarten

Vielleicht möchtest du

  1. mount / dev / sdX / mnt
  2. fix / mnt
  3. umount / mnt
  4. mount / dev / sdX /
  5. Beenden Sie das Booten manuell

Dies wird nicht empfohlen, Sie müssen dies bei jedem Start tun. In einer Produktionsumgebung können Sie nicht sicher sein, dass beim manuellen Booten dieselben Schritte wie beim automatischen durchgeführt werden.

In einem Notfall mit kritischen Daten läuft Schritt 5 jedoch normalerweise auf Folgendes hinaus:

  • 5.1 Netzwerk einrichten
  • 5.2 Wichtige Datei an einen sicheren Ort kopieren
Archemar
quelle
1
Ich glaube, die "eigentliche" Frage auf dem Originalposter war "Wie genau machst du '5. beende das Booten manuell'?".
user2121874
2

Führen Sie einfach den fsckBefehl ohne Optionen aus initramfsund starten Sie den Computer neu

Beispiel: Die Root-Partition ist sda3

fsck /dev/sda3
GAD3R
quelle
Beim Neustart bin ich nur auf die Grub-Shell anstatt auf die Initramfs-Shell gefallen. Jetzt werde ich alles noch einmal machen, um zu initramfs shell zu gelangen
jaam
1

Wenn der root=Parameter korrekt ist und das Problem nur darin besteht, dass das erforderliche Gerät nicht verfügbar ist (z. B. weil die initramfs kein mdRAID zusammengestellt haben), reicht es aus, das Gerät manuell verfügbar zu machen. Beispiel:

mdadm --assemble ...

Vergewissern Sie sich dann, dass das Gerät vorhanden ist, und drücken Sie ctrl+ doder geben Sie etwas ein exit, um die initramfs-Shell zu beenden. Das initramfs stellt dann das Root-Dateisystem bereit und fährt wie gewohnt mit dem Booten fort. Nachdem das System gestartet wurde, sollten Sie das zugrunde liegende Problem beispielsweise durch Ausführen reparieren update-initramfs -u.

Ich habe noch keine Möglichkeit gefunden, die initramfs anzuweisen, ein anderes Gerät zu starten, als es /proc/cmdlinesagt. Vielleicht hat jemand anderes eine Idee?

Martin von Wittich
quelle