Kernelimage untersuchen/extrahieren

OP #7633588
Lesenswert?

Moin,

In einem Linuxkernel kann ja allerhand an "Zusatzdaten" stecken, z.b. die eigene .config, Kernelheaderfiles, Firmwareblobs, initramfs, etc. bla. Was fuer tools gibt's denn, um aus so einem Kernelimage (also dem bzImage) diese Zusatzdaten zu extrahieren, ohne z.b. den Kernel zu booten?

Gruss WK

OP #7633618
Lesenswert?

Norbert schrieb:

Hier hat das Eine nichts mit dem Anderen zu tun. Ein Kernel ist ein Kernel. Headerfiles sind Headerfiles. Ein initramfs ist noch einmal etwas völlig Anderes.

Klar sind das alles unterschiedliche Dinge. Sind aber letztendlich alles irgendwelche (komprimierten) Haufen/Archive mit Daten. Und das hat insofern miteinander zu tun, als das ich das alles in ein Kernelimage reinmanschen kann. Und wenn ich's schon reinmanschen kann, waer's schick, es auch aus fertigen Kernelimages wieder rausmanschen zu koennen. Der Kernel selbst kanns ja auch.

Gruss WK

Gast #7633729
Lesenswert?

Dergute W. schrieb:

In Kernelimages gucken und sehen koennen, was drinnen ist.

Dort wirst du nur ausführbaren Maschinencode finden, nichts was man ohne den Quelltext irgendwie lesen könnte.

Dergute W. schrieb:

Sind aber letztendlich alles irgendwelche (komprimierten) Haufen/Archive mit Daten.

Nein. Der Kernel ist ein komprimiertes Binary. In dem "Archiv" befindet sich nur eine einzige Datei. Nackter Maschinencode, der am Stück in den Speicher geladen und ausgeführt wird.

Die initial Ramdisk ist was anderes, das ist ein komplettes Filesystem, in das man rein gucken kann.

https://www.kernel.org/doc/html/v5.0/admin-guide/initrd.html

Auf der Seite findest du sicher auch Antworten auf viele weitere Fragen zum Kernel.

OP #7633745
Lesenswert?

Moin,

Merci fuer den Link von/an Hmmm. Die machen das zwar hemdsaermelig mit binwalk, dd usw., aber handeln ungefaehr das ab, was ich suche. Scheint also kein tool ootb fuer alles zu geben.

An den Universalexperten: Es ist ja keine Schande, wenn man von was keine Ahnung hat. Wie z.b. ich, wenn ich was aus Kernelimages extrahieren will. Aber wenn ich schon im Eingangspost ziemlich genau schreibe, was ja alles in einem Kernel so an "Extragimmicks" drinnensein kann, und dann kommt so was:

Steve van de Grens schrieb:

Nein. Der Kernel ist ein komprimiertes Binary. In dem "Archiv" befindet sich nur eine einzige Datei. Nackter Maschinencode, der am Stück in den Speicher geladen und ausgeführt wird.

oder ich schreibe was von initramfs und dann kommt sowas:

Die initial Ramdisk ist was anderes, das ist ein komplettes Filesystem, in das man rein gucken kann.

Da kann ich nur sagen: Seit mal alle ganz leise und horcht - das kirschende Geraeusch kommt von mir, ich rolle mit den Augen ;-)

scnr, WK

#7633772
Lesenswert?

An die Konfiguration des Kernels kommt man mit extract-ikconfig, sofern der Kernel mit der entsprechenden Option gebaut worden ist. Bei Arch-Kerneln ist das der Fall (hab grad zur Sicherheit nachgeschaut).

Und ja, das initramfs ist nur ein Archiv, kein Image. Kann man reingucken, wenn man mag.

#7633943
Lesenswert?

Dergute W. schrieb:

In einem Linuxkernel kann ja allerhand an "Zusatzdaten" stecken, z.b. die eigene .config, Kernelheaderfiles, Firmwareblobs, initramfs, etc. bla. Was fuer tools gibt's denn, um aus so einem Kernelimage (also dem bzImage) diese Zusatzdaten zu extrahieren, ohne z.b. den Kernel zu booten?

Naja, DER Kernel ist eigentlich nur ein Binary, bzw. Set of Binaries. Aber warum fragst Du nicht Google? Z.B.:

https://github.com/dnezamaev/bzImage-unpacker https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux

binwalk gibt schon bei Kernel 5 und 6 unterschiedliche Strukturen aus, da kann das Inspizieren der Kernel-Files schon etwas herausfordernder werden. Ich habs nicht getestet - kannst ja mal berichten ...

#7633959
Lesenswert?

Steve van de Grens schrieb:

Dergute W. schrieb:

Aber wenn ich schon im Eingangspost ziemlich genau schreibe, was ja alles in einem Kernel so an "Extragimmicks" drinnensein kann

Was du dort geschrieben hast stimmt aber nicht!

Zumal ich auch bezweifeln würde, daß der Kernel Headerfiles oder sowas beinhaltet, also reiner Text-Kram ... aber "das gute W" vermischt das vermutlich mit dem initrd-Kram ...

OP #7634131
Lesenswert?

Moin,

Jens G. schrieb:

Zumal ich auch bezweifeln würde, daß der Kernel Headerfiles oder sowas beinhaltet, also reiner Text-Kram ... aber "das gute W" vermischt das vermutlich mit dem initrd-Kram ...

Nee, derguteweka scheint nur im Gegensatz zu dir und Anderen diese Kernelkonfigurationsoptionen zu kennen:

CONFIG_FW_LOADER CONFIG_IKCONFIG CONFIG_IKHEADERS CONFIG_INITRAMFS_SOURCE

Und er hat auch niemals was von initrd gefaselt oder vermischt. Das tun nur die Eggsberrdn von hier.

scnr, WK

Gast #7634149
Lesenswert?

Dergute W. schrieb:

Und er hat auch niemals was von initrd gefaselt oder vermischt.

Im Eröffnungsbeitrag steht

Dergute W. schrieb:

In einem Linuxkernel kann ja allerhand an "Zusatzdaten" stecken, z.b. die eigene .config, Kernelheaderfiles, Firmwareblobs, initramfs, etc. bla.

Anm.: Initramfs ist der Nachfolger von Initrd

Die Einbettung der Sourcen in den Kernel ist ein ganz spezieller Sonderfall. Deine Frage war hingegen allgemein formuliert. Erinnerst du dich?: Ich habe in der ersten Antwort nachgehakt, was du vor hast. Wenn es um ein ganz speziellen Fall geht, dann schreibe das!

PS: Warum schreibst du über dich selbst, als gehe es um eine andere Person? Du erhärtest so den Eindruck, absichtlich Verwirrung zu stiften. Du weißt das das zu Stunk führt. Willst du Stunk?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren