Extrahieren des Init-Skripts aus bult-in intrfs in Linux bzImage

4

Ich habe folgendes Problem: Ich habe mein System ( Gentoo - durch Neuaufbau mit gcc 4.5 ) irreparabel beschädigt. Ich habe / home abgehängt, / etc + andere wichtige Dateien kopiert und mit der Neuinstallation des Systems begonnen.

Allerdings habe ich vergessen, Init-Skript zu kopieren. Es ist immer noch im Kernel-Image vorhanden, das ich habe. Wie kann man es extrahieren? Bitte beachten Sie, dass initrd keine separate Datei ist, sondern im Kernel-Image enthalten ist.

Maciej Piechotka
quelle
Ich wäre dankbar, wenn ich den Inhalt ebenfalls auflisten würde. Allerdings denke ich, dass es ein Nebeneffekt sein wird, wenn man ein CPIO-Archiv erhält.
Maciej Piechotka
Ich habe cs.caltech.edu/~weixl/research/fast-mon/scripts/… gefunden, bekomme aber immer noch keinen cpio daraus.
Maciej Piechotka

Antworten:

1

Nach dem Auspacken von:

HDR=`binoffset bzImage 0x1f 0x8b 0x08 0x0`
dd if=bzImage bs=1 skip=$HDR | zcat - > kernel.unpack

(binoffset.c ist in Linux-Quellen enthalten).

strings kernel.unpack | grep 070701

Gibt die Auflistung des Archivs. Direkt nach dem Eintrag für / init in

strings kernel.unpack | less

Ist der Inhalt des Skripts.

Es ist keine perfekte Lösung, aber zumindest scheint es zu funktionieren. Bitte antworten Sie, wenn Sie die 'richtige' Art und Weise (für Binärdateien) einfach kennen (kein langes Programm schreiben) - ich markiere es nicht als Lösung.

Maciej Piechotka
quelle