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
Moin, Steve van de Grens schrieb: > Was möchtest du konkret machen? In Kernelimages gucken und sehen koennen, was drinnen ist. Gruss WK
Dergute W. schrieb: > In einem Linuxkernel kann ja allerhand an "Zusatzdaten" stecken, z.b. > die eigene .config, Kernelheaderfiles, Firmwareblobs, initramfs, etc. > bla. 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.
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
Du kannst mit
1 | file $dateiname |
schauen, was das für eine Datei ist. Dann ist auch relativ klar, wie weiter zu verfahren ist. Bei "bzImage" würde ich bunzip bzw. bunzip2 als Entpacker vermuten.
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.
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
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.
:
Bearbeitet durch User
Wenn es für ein ARM Embedded Gerät ist halte Ausschau nach dem DTB, der kann sehr aufschlussreich sein. Ja nach System ist der zusammen mit dem Kernel Image zusammen gepackt, allerdings gerne in einem proprietären Format (z.B. bei Rockchip).
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 ...
:
Bearbeitet durch User
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!
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 ...
:
Bearbeitet durch User
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
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?
Dergute W. schrieb: > wenn ich was aus Kernelimages extrahieren will. Was willst du aus welchem Kernel extrahieren?
@Steve van de Grens (roehrmond) Interessante Lektüre: https://docs.kernel.org/filesystems/ramfs-rootfs-initramfs.html (Nur um die Wogen etwas zu glätten...)
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.