En /boot/initrd.img- kernel_ver original binwalk
muestra esta estructura:
De 0 a 22528 bytes, el archivo CPIO contiene solo firmware GenuineIntel.bin en una jerarquía de carpetas específica.
Desde 22528 bytes hay un archivo gzip que contiene el sistema de archivos apropiado y este archivo gzip también se archiva con CPIO
Después de desempacar y modificar, ¿cómo puedo comprimir initrd.img de la misma manera (con la misma jerarquía de carpetas)? como esta estructura original:
Después de la sugerencia del comentario:
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz
binwalk
:
Esta es una estructura completamente diferente.
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz
Si ese procedimiento no funciona, aclare qué comandos ejecutó y qué no funciona.Respuestas:
Descubrí cómo hacer exactamente el mismo
initrd.img
archivo.La respuesta de Bodhi.zazen probablemente funcionará porque esta es una solución comúnmente conocida:
Pero la pregunta era diferente. Esta respuesta sería buena si en el archivo cpio hay un sistema de archivos comprimido pero en esta situación también hay firmware Intel en la estructura de carpetas específica que quiero mantener.
Para mantener la misma jerarquía de carpetas, se necesitan tres pasos:
fuente
find . | cpio -o | gzip -9 >> new_initrd.img
cpio -id < initrd.img-kernel_ver
;dd if=initrd.img-4.4.0-22-generic of=image.gz bs=22528 skip=1
-coincide con su nombre de archivo initrd.img y el tamaño del bloque;gunzip image.gz
;cpio -i < image
Reenvasas con
El segundo comando cambia el nombre del initrd, usted especifica el initrd para usar al arrancar en grub.
Le sugiero que pruebe (arranque) el initrd personalizado antes de moverlo o renombrarlo.
Información adicional de la discusión en los comentarios:
Primero, no creo que entiendas el papel de cpio / tar. tanto cpio como tar toman una cantidad de archivos y / o directorios y los convierten en un archivo o archivo.
En segundo lugar, no creo que comprenda el papel de la compresión, la compresión simplemente hace que el archivo resultante sea más pequeño. Puede usar cualquier herramienta que desee para la compresión.
Ver
https://wiki.ubuntu.com/CustomizeLiveInitrd
https://wiki.gentoo.org/wiki/Initramfs/Guide
Tercero, el kernel de Linux usa cipo en lugar de tar.
Ver
https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
Vea "¿Por qué cpio en lugar de alquitrán?" sección
fuente
Recientemente me encontré con esta misma pregunta y mi búsqueda en la web me llevó a este hilo, por lo que en caso de que ayude a otros a seguir esos pasos, aquí hay una respuesta de 2018 a una pregunta anterior ...
Parece que en los núcleos "recientes" el archivo initrd.img puede contener un archivo cpio sin comprimir (es decir, que contiene actualizaciones de microcódigo) antepuesto al archivo cpio (comprimido) que contiene el árbol de directorios initramfs normal.
Esto se trata brevemente en la página Wiki de Debian:
https://wiki.debian.org/initramfs#How_to_inspect_initramfs
, pero se puede encontrar un código más preciso para analizar este tipo de archivo initrd.img en la
splitinitramfs()
función dentro delunmkinitramfs
comando que se encuentra en el comandoinitramfs-tools-core
paquete (por ejemplo, https://git.launchpad.net/ubuntu/+source/initramfs-tools/tree/unmkinitramfs ).No he intentado reconstruir este tipo de archivo initrd.img, pero según esa página Wiki parece que para editar los scripts de arranque initramfs, uno no querría descomprimir el archivo GenuineIntel. En su lugar, puede conservar ese archivo cpio como está en algún lugar por separado, luego desempaquetar el segundo archivo (comprimido), modificar el árbol de directorios y reconstruir el archivo cpio comprimido, luego concatenar el archivo de microcódigo guardado con el archivo recién generado.
(El código que originalmente generó este archivo "antepuesto" se encuentra en
/usr/share/initramfs-tools/hooks/intel_microcode
).fuente
en Ubuntu el
initrd.img
está comprimido en gzip, me gustaría preservar esto cuando lo edite. así es como:extraer:
comprimir:
fuente