
Eu usei o binwalk para descompactar o initrd do ubuntu 18.04, mas ele não descompactou o pacote
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!!!"
===========
Não deu nada na pasta de destino
# file initrd
initrd: ASCII cpio archive (SVR4 with no CRC)
Tentei extrair usando o 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$
então todos os arquivos ainda estão extraídos com isso.
Responder1
Para o Ubuntu, pelo menos nas versões mais recentes, você pode usar os comandos lsinitramfs <file>
para inspecionar e unmkinitramfs <file> <target directory>
extrair.
Responder2
O formato initrd pode ser uma concatenação de coisas. Ou seja, cpio
arquivos e também pode ser uma imagem do sistema de arquivos. Verdocumentação.
Opção 1
Para dracut
initrds criados, para extrair, você pode usar lsinitrd --unpack
o que vem com o dracut.
opção 2
Outra opção é usar a skipcpio
ferramenta que também acompanha o dracut. Veja issoresponder.
/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names
Opção 3
Outra opção é usar binwalk
novamente cpio ou qualquer outra coisa que seja a parte initrd. Veja issoresponder.
Opção 4(provavelmente o que você estava pedindo)
Mas a melhor resposta para percorrer o initrd, extrair e modificar é esta: https://unix.stackexchange.com/a/607996/14907
Com ele você pode extrair com mais facilidade apenas as peças que deseja modificar e depois reembalá-las da mesma forma que descompactou. Não é um guia completo, mas deve fornecer a maior parte das peças se você estiver motivado.