GNU/Linux >> Tutoriales Linux >  >> Linux

extraer initramfs incrustado

Hay información sobre esto en el wiki de gentoo:https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging

Se recomienda el uso de binwalk que funciona muy bien.

Daré un recorrido rápido con un ejemplo:

primero extraiga el archivo 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

Terminé con tres archivos:47B4 , 47B4.xz y 951C38.xz

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

Ahora vamos a ejecutar binwalk de nuevo en 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>

Esto volvió con una larga lista de rutas encontradas y varios archivos potencialmente interesantes. Echemos un vistazo.

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

archivo E9B348 es un archivo cpio (ya descomprimido), ¡justo lo que estamos buscando! ¡Bingo!

Para descomprimir el archivo cpio sin comprimir (¡su initramfs!) en su directorio actual, simplemente ejecute

> cpio -i < E9B348

Eso fue casi demasiado fácil. binwalk es absolutamente la herramienta que estás buscando. Como referencia, estaba usando v2.1.1 aquí.


Hasta donde yo sé, el archivo initramfs cpio está vinculado al kernel.

Por lo tanto, esto debería funcionar:

  1. usa dd para extraer el rango entre c17fd8cc y c19d7b90
  2. descomprima los datos resultantes usando un desempaquetador CPIO.

Linux
  1. 4 herramientas para construir sistemas Linux embebidos

  2. ¿La forma más rápida de extraer un Iso?

  3. ¿Extraer gráficos de PDF?

  4. CentOS / RHEL 6:Cómo extraer la imagen de initramfs y editarla/verla

  5. extraer tiempo promedio de ping -c

Cómo extraer (descomprimir) el archivo Tar Gz

Cómo extraer (descomprimir) el archivo Tar Bz2

Cómo extraer (descomprimir) el archivo tar.xz

¿Hacer una partición de recuperación en Embedded Linux?

Extraiga el archivo tar.gz en Linux

Cómo extraer un archivo RAR en Ubuntu