¿Cómo descomprimo initrd de ubuntu 18.04 y luego lo vuelvo a empaquetar?

¿Cómo descomprimo initrd de ubuntu 18.04 y luego lo vuelvo a empaquetar?

Utilicé binwalk para descomprimir initrd de ubuntu 18.04 pero no descomprimió el paquete.

command used #  sudo binwalk initrd
===========
result:
==========
DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------
0               0x0             ASCII cpio archive (SVR4 with no CRC), file name: "."
112             0x70            ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
232             0xE8            ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
356             0x164           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
488             0x1E8           ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/AuthenticAMD.bin"
28072           0x6DA8          ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
28672           0x7000          ASCII cpio archive (SVR4 with no CRC), file name: "kernel"
28792           0x7078          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86"
28916           0x70F4          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode"
29048           0x7178          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/.enuineIntel.align.0123456789abc"
29212           0x721C          ASCII cpio archive (SVR4 with no CRC), file name: "kernel/x86/microcode/GenuineIntel.bin"
2440880         0x253EB0        ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!"
===========

No dio nada en la carpeta de destino.

# file initrd 
initrd: ASCII cpio archive (SVR4 with no CRC)

Intenté extraer usando el comando cpio,

build@###
:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ sudo cpio -i -F /source/build/1.0.5.00206/nm-gii/software/CD/build/extract-cd/casper/initrd
56 blocks
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$ ll
total 12
drwxr-xr-x 3 root root 4096 Jan 15 05:36 ./
drwxr-xr-x 5 root root 4096 Jan 15 05:01 ../
drwxr-xr-x 3 root root 4096 Jan 15 05:36 kernel/
build@###:/source/build/1.0.5.00206/nm-gii/software/CD/build/initrd$

entonces todos los archivos todavía están extraídos con esto.

Respuesta1

Para Ubuntu, al menos para las versiones más nuevas, puede usar los comandos lsinitramfs <file>para inspeccionar y unmkinitramfs <file> <target directory>extraer.

Respuesta2

El formato initrd puede ser una concatenación de cosas. Es decir, cpioarchivos y también podría ser una imagen del sistema de archivos. Verdocumentación.

Opción 1

Para dracutlos initrds creados, para extraerlos, puede usar lsinitrd --unpackel que viene con dracut.

opcion 2

Otra opción es utilizar la skipcpioherramienta que también viene con dracut. Mira estorespuesta.

/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names

Opción 3

Otra opción es usar binwalky nuevamente cpio o cualquier otra cosa que sea la parte initrd. Mira estorespuesta.

Opción 4(probablemente lo que estabas pidiendo)

Pero la mejor respuesta para atravesar initrd, extraer y modificar es esta: https://unix.stackexchange.com/a/607996/14907

Con él, puedes extraer más fácilmente solo las piezas que deseas modificar y luego volver a empaquetarlas de la misma manera que las desempaquetaste. No es una guía completa, pero debería brindarle la mayor parte de la información si está motivado.

información relacionada