GNU/Linux >> Tutoriels Linux >  >> Linux

extraire les initramfs intégrés

Il y a quelques informations à ce sujet dans le wiki gentoo :https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging

Il recommande l'utilisation de binwalk qui fonctionne extrêmement bien.

Je vais donner un aperçu rapide avec un exemple :

extrayez d'abord le fichier bzImage avec binwalk :

> binwalk --extract bzImage
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
18356         0x47B4          xz compressed data
9772088       0x951C38        xz compressed data

Je me suis retrouvé avec trois fichiers :47B4 , 47B4.xz et 951C38.xz

> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped

Maintenant, lançons à nouveau binwalk sur 47B4 :

> 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>

Cela est revenu avec une longue liste de chemins trouvés et plusieurs fichiers potentiellement intéressants. Jetons un coup d'œil.

> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348:     ASCII cpio archive (SVR4 with no CRC)

fichier E9B348 est une archive cpio (déjà décompressée), exactement ce que nous recherchons ! Bingo !

Pour décompresser l'archive cpio non compressée (votre initramfs !) dans votre répertoire actuel, exécutez simplement

> cpio -i < E9B348

C'était presque trop facile. binwalk est absolument l'outil que vous recherchez. Pour référence, j'utilisais la v2.1.1 ici.


Autant que je sache, l'archive initramfs cpio est simplement liée au noyau.

Par conséquent, cela devrait fonctionner :

  1. utiliser dd pour extraire la plage entre c17fd8cc et c19d7b90
  2. décompressez les données résultantes à l'aide d'un décompresseur CPIO.

Linux
  1. 4 outils pour construire des systèmes Linux embarqués

  2. Extraire des graphiques à partir de PDF ?

  3. extraire le temps moyen de ping -c

  4. Script bash Linux pour extraire l'adresse IP

  5. Le moyen le plus rapide d'extraire tar.gz

Comment extraire (décompresser) le fichier Tar Gz

Comment extraire (décompresser) le fichier Tar Bz2

Comment extraire (décompresser) le fichier tar.xz

Le moyen le plus rapide d'extraire un iso ?

Extraire le fichier tar.gz sous Linux

Comment extraire un fichier RAR sur Ubuntu