Es gibt einige Informationen dazu im Gentoo-Wiki:https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging
Es empfiehlt sich die Verwendung von binwalk
was sehr gut funktioniert.
Ich gebe einen kurzen Überblick mit einem Beispiel:
extrahiere zuerst die bzImage-Datei mit binwalk:
> binwalk --extract bzImage
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 Microsoft executable, portable (PE)
18356 0x47B4 xz compressed data
9772088 0x951C38 xz compressed data
Am Ende hatte ich drei Dateien:47B4
, 47B4.xz
und 951C38.xz
> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped
Lassen Sie nun binwalk erneut auf 47B4
laufen :
> binwalk --extract 47B4
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV)
9818304 0x95D0C0 Linux kernel version "4.4.6-gentoo ([email protected]) (gcc version 4.9.3 (Gentoo Hardened 4.9.3 p1.5, pie-0.6.4) ) #1 SMP Tue Apr 12 14:55:10 CEST 2016"
9977288 0x983DC8 gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
<snip>
Dies kam mit einer langen Liste gefundener Pfade und mehreren potenziell interessanten Dateien zurück. Schauen wir mal.
> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348: ASCII cpio archive (SVR4 with no CRC)
Datei E9B348
ist ein (bereits dekomprimiertes) cpio-Archiv, genau das, wonach wir suchen! Bingo!
Um das unkomprimierte cpio-Archiv (Ihr initramfs!) in Ihr aktuelles Verzeichnis zu entpacken, führen Sie einfach
aus> cpio -i < E9B348
Das war fast zu einfach. binwalk
ist absolut das Werkzeug, das Sie suchen. Als Referenz habe ich hier v2.1.1 verwendet.
Soweit ich weiß, ist das initramfs cpio-Archiv nur in den Kernel eingebunden.
Daher sollte dies funktionieren:
- benutze
dd
um den Bereich zwischenc17fd8cc
zu extrahieren undc19d7b90
- Entpacken Sie die resultierenden Daten mit einem CPIO-Entpacker.