initrd

Modifying initrd image

extract_initrd.sh
mkdir initrd
cd initrd
gzip -dc /boot/initrd-2.6.16-026test014.4-smp.cpio | cpio -id
make_initrd.sh
find ./ | cpio -H newc -o > /boot/new-initrd.cpio
cd /boot
gzip new-initrd.cpio
mv new-initrd.cpio.gz new-initrd.img
	INITRD=boot/i386/loader/initrd
 	echo  "modifiziere initrd"
        echo "auspacken..."
        gunzip <$INITRD >$INITRD.uncomp
        echo "initall.key aus initrd raus....."
        cpio -i -F $INITRD.uncomp installkey.gpg
        echo "Schlüssel exportieren"
        gpg --export -u $KEY_ID > gpg-$KEY_ID.gpg
        gpg --export -a -u $KEY_ID > gpg-pubkey-$KEY_ID.asc
        echo "Schlüssel in initrd"
        echo "gpg-$KEY_ID.gpg" | cpio -o -H newc -A -F $INITRD.uncomp
        echo "install.key erweitern"
        gpg -u ds@marco.de --export >> install.key
        echo "install.key wieder in initrd"
        echo "installkey.gpg" | cpio -o -H newc -A -F $INITRD.uncomp
        echo "komprimieren"
        gzip --best <$INITRD.uncomp >$INITRD
        echo "Rest löschen"
        rm $INITRD.uncomp gpg-$KEY_ID.gpg installkey.gpg
> INITRD_MODULES
> MODULES_LOADED_ON_BOOT
>
> /etc/sysconfig/kernel
>
> Und das ganze booted man dann mit tftp/ftp.
 
Bin nach /usr/src/linux/Documentation/filesystems/nfs/nfsroot.txt
vorgegangen.....
 
Hab aber dann im vdr-portal noch ein Thema gefunden.
Da geht (fast) alles über die Initrd.
 
Also passende initrd bauen mit
/sbin/mkinitrd -D eth0 -f nfs -d nfsserver:/tftpboot/rootdir -B
 
11.4 hat hier einen Bug, die initrd muss von Hand angepasst werden:
mkdir /tmp/initrd-new
zcat /boot/initrd... |cpio -iv
cd /tmp/initrd-new
cp /etc/protocols etc/
cp /etc/netconfig etc/
find | cpio -o -H newc | gzip > ../initrd.new
 
Diese zusammen mit dem Kernel per pxe booten:
label rescue2
  kernel nfsroot_boot/linux
  append initrd=nfsroot_boot/initrd.new ramdisk_size=65536
splash=silent showopts