View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Modificar un initrd de Linux

Fuente: http://www.thegeekstuff.com/2009/07/how-to-view-modify-and-recreate-initrd-img/

mount -t auto /dev/md1 /boot
cd /boot
cp initrd.img-2.6.16-2-686 initrd.img-2.6.16-2-686.ori
cd /tmp
mkdir t
cd t
gzip -dc /boot/initrd.img-2.6.16-2-686.ori | cpio -id
vi scripts/init-premount/udev
find . | cpio --create --format='newc' > /tmp/newinitrd
cd ..
gzip newinitrd 
cp newinitrd.gz /boot/initrd.img-2.6.16-2-686
reboot


NOTA: Esto lo he usado para hacer que un HojaRuta funcione en la plataforma de Solaris 10. Como tiene los discos configurados en la BIOS como IDE en vez de AHCI (debido a que el AHCI de esa plataforma no están soportados por el linux tan antiguo que tienen los maestros de hojaruta), he modificado lo siguiente:

1. en el /boot/grub/menu.lst

He cambiado la línea de arranque del kernel a:
kernel /vmlinuz-2.6.16-2-686 root=/dev/md2 md=2,/dev/hda6,/dev/hdc6 ro


2. He editado el scripts/init-premount/udev a:
#!/bin/sh -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
    prereqs
    exit 0
    ;;
esac

#--------
modprobe md
modprobe raid1
modprobe ide-generic
modprobe ide-disk
#--------

echo > /proc/sys/kernel/hotplug

udevd --daemon

mkdir -p /dev/.udev/db/ /dev/.udev/queue/
udevtrigger
udevsettle || true

#--------
mknod /dev/md1 b 9 1
mknod /dev/md2 b 9 2
mknod /dev/md3 b 9 3
mdadm --assemble --run /dev/md1 /dev/hda1 /dev/hdc1
#--------

# Leave udev running to process events that come in out-of-band (like USB
# connections)