GNU/Linux >> Linux Esercitazione >  >> Linux

estrarre initramfs incorporato

Ci sono alcune informazioni su questo nel wiki di gentoo:https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging

Raccomanda l'uso di binwalk che funziona molto bene.

Farò una breve panoramica con un esempio:

prima estrai il file bzImage con binwalk:

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

Ho finito con tre file:47B4 , 47B4.xz e 951C38.xz

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

Ora eseguiamo di nuovo binwalk su 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>

Questo è tornato con un lungo elenco di percorsi trovati e diversi file potenzialmente interessanti. Diamo un'occhiata.

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

file E9B348 è un archivio cpio (già decompresso), proprio quello che stiamo cercando! Tombola!

Per decomprimere l'archivio cpio non compresso (il tuo initramfs!) nella tua directory corrente basta eseguire

> cpio -i < E9B348

Era quasi troppo facile. binwalk è assolutamente lo strumento che stai cercando. Per riferimento, stavo usando la v2.1.1 qui.


Per quanto ne so, l'archivio initramfs cpio è semplicemente collegato al kernel.

Quindi, dovrebbe funzionare:

  1. usa dd per estrarre l'intervallo tra c17fd8cc e c19d7b90
  2. decomprimere i dati risultanti utilizzando un CPIO unpacker.

Linux
  1. 4 strumenti per la creazione di sistemi Linux embedded

  2. Il modo più veloce per estrarre un ISO?

  3. CentOS / RHEL 6:come estrarre l'immagine initramfs e modificarla/visualizzarla

  4. estrarre il tempo medio da ping -c

  5. Script bash di Linux per estrarre l'indirizzo IP

Come estrarre (decomprimere) il file Tar Gz

Come estrarre (decomprimere) il file Tar Bz2

Come estrarre (decomprimere) il file tar.xz

Estrai il file tar.gz in Linux

Come estrarre un file RAR su Ubuntu

Come si estrae la cronologia degli accessi?