Modificar un initrd.img | Algo de Linux

sábado, 8 de mayo de 2010

Modificar un initrd.img

Estaba actualizando el dvd recopilatorio de herramientas que tengo y me surgió el problema de que tenía dos live-cd que hacían referencia al mismo directorio. Como no podía ponerlos juntos porque había archivos con el mismo nombre, me decidí a modificar el initrd para cambiar el directorio donde buscaba los ficheros uno de los dos.

Para modificar un initrd,tendremos que seguir los siguientes pasos:
  1. Descomprimiremos el initrd. img
  2. Haremos las modificaciones en los ficheros que queramos
  3. Volveremos a crear el initrd.img
Primer paso: Descomprimir el fichero initrd.img


# mkdir tmp
# cp initrd.img ~/tmp
# cd /tmp

~/tmp# mv initrd.img initrd.gz
~/tmp# gunzip initrd.gz

Veremos que dentro del directorio ~/tmp tendremos un fichero initrd. Para extraer los ficheros, usaremos cpio:


~/tmp# mkdir tmp2
~/tmp# cd tmp2
~/tmp/tmp2# cpio -id < ../initrd
55669 blocks

Si hacemos un ls veremos que dentro del directorio tmp2 tendremos todos los directorios y archivos del initd. Por ejemplo:


~/tmp/tmp2# ls
bin  conf  etc init  lib  sbin  scripts  usr

Segundo paso: Hacer las modificaciones que necesitemos.

Tercer paso: Volver a crear el fichero initrd.img


~/tmp/tmp2# find . | cpio --create --format='newc' > ../newinitrd
55669 blocks

Ahora ya tenemos un nuevo initrd llamado newinitrd en el directorio ~/tmp. Lo comprimimos:


~/tmp# gzip newinitrd

Se nos creará un fichero comprimido: newinitrd.gz. Lo renombramos:


~/tmp# mv newinitrd.gz initrd.img

Y listo. Ya tenemos nuestro initrd.img modificado.

2 comentarios:

Anónimo dijo...

Muchas gracias!!!

me sirvio para un experimento con smoothwall 3.1 rc3

Anónimo dijo...

Muy buen tip!!