#!/bin/sh
# Adam Gobiowski <adamg@pld-linux.org> 2005
# $Id: livecd_gen_initrd,v 1.5 2006/02/27 16:28:48 havner Exp $

# TODO: memtest, isolinux, pci-database (upgrade everything)

if [ ! $UID = 0 ]; then
	echo "You must run this script as root"
	exit 1
fi

if [ -n "$HOME_ETC" -a -f "$HOME_ETC/.livecd_remaster" ]; then
	. $HOME_ETC/.livecd_remaster
elif [ -f ~/.livecd_remaster ]; then
	. ~/.livecd_remaster
else
	echo "There is no config file in your home or \$HOME_ETC dir"
	exit 1
fi

if [ ! -f "`which genromfs`" ]; then
	echo "Install genromfs (poldek -i genromfs) before running this script"
	exit 1
fi

# You don't even have to tell mi it's ugly
initrd_dirs="	drivers \
		drivers/ide \
		drivers/ide/pci \
		drivers/ide/legacy \
		drivers/scsi \
		drivers/scsi/qla2xxx \
		drivers/scsi/aacraid \
		drivers/scsi/pcmcia \
		drivers/scsi/lpfc \
		drivers/scsi/megaraid \
		drivers/scsi/aic7xxx \
		drivers/scsi/sym53c8xx_2 \
		drivers/block \
		drivers/cdrom \
		fs \
		fs/nls \
		fs/isofs \
		fs/squashfs \
		lib \
		lib/zlib_inflate"

initrd_files="	drivers/ide/pci/serverworks.ko \
		drivers/ide/pci/via82cxxx.ko \
		drivers/ide/pci/sis5513.ko \
		drivers/ide/pci/amd74xx.ko \
		drivers/ide/pci/cy82c693.ko \
		drivers/ide/pci/generic.ko \
		drivers/ide/pci/ns87415.ko \
		drivers/ide/pci/opti621.ko \
		drivers/ide/pci/pdc202xx_new.ko \
		drivers/ide/pci/pdc202xx_old.ko \
		drivers/ide/pci/atiixp.ko \
		drivers/ide/pci/triflex.ko \
		drivers/ide/pci/sc1200.ko \
		drivers/ide/pci/cs5520.ko \
		drivers/ide/pci/cs5530.ko \
		drivers/ide/pci/slc90e66.ko \
		drivers/ide/pci/rz1000.ko \
		drivers/ide/pci/piix.ko \
		drivers/ide/pci/cmd64x.ko \
		drivers/ide/pci/hpt366.ko \
		drivers/ide/pci/hpt34x.ko \
		drivers/ide/pci/it821x.ko \
		drivers/ide/pci/alim15x3.ko \
		drivers/ide/pci/trm290.ko \
		drivers/ide/pci/aec62xx.ko \
		drivers/ide/pci/siimage.ko \
		drivers/ide/ide-core.ko \
		drivers/ide/ide-disk.ko \
		drivers/ide/legacy/dtc2278.ko \
		drivers/ide/legacy/umc8672.ko \
		drivers/ide/legacy/ali14xx.ko \
		drivers/ide/legacy/qd65xx.ko \
		drivers/ide/legacy/ht6560b.ko \
		drivers/ide/legacy/ide-cs.ko \
		drivers/ide/ide-generic.ko \
		drivers/ide/ide-cd.ko \
drivers/scsi/scsi_transport_fc.ko \
drivers/scsi/3w-9xxx.ko \
drivers/scsi/tmscsim.ko \
drivers/scsi/3w-xxxx.ko \
drivers/scsi/u14-34f.ko \
drivers/scsi/BusLogic.ko \
drivers/scsi/ultrastor.ko \
drivers/scsi/NCR53c406a.ko \
drivers/scsi/wd7000.ko \
drivers/scsi/a100u2w.ko \
drivers/scsi/aacraid/aacraid.ko \
drivers/scsi/advansys.ko \
drivers/scsi/aha152x.ko \
drivers/scsi/aha1542.ko \
drivers/scsi/ahci.ko \
drivers/scsi/aic7xxx/aic79xx.ko \
drivers/scsi/aic7xxx/aic7xxx.ko \
drivers/scsi/aic7xxx_old.ko \
drivers/scsi/ata_piix.ko \
drivers/scsi/atp870u.ko \
drivers/scsi/ch.ko \
drivers/scsi/dc395x.ko \
drivers/scsi/dmx3191d.ko \
drivers/scsi/dpt_i2o.ko \
drivers/scsi/dtc.ko \
drivers/scsi/eata.ko \
drivers/scsi/fdomain.ko \
drivers/scsi/g_NCR5380.ko \
drivers/scsi/g_NCR5380_mmio.ko \
drivers/scsi/gdth.ko \
drivers/scsi/ide-scsi.ko \
drivers/scsi/imm.ko \
drivers/scsi/in2000.ko \
drivers/scsi/initio.ko \
drivers/scsi/ipr.ko \
drivers/scsi/ips.ko \
drivers/scsi/libata.ko \
drivers/scsi/lpfc/lpfc.ko \
drivers/scsi/megaraid/megaraid_mbox.ko \
drivers/scsi/megaraid/megaraid_mm.ko \
drivers/scsi/megaraid/megaraid_sas.ko \
drivers/scsi/megaraid.ko \
drivers/scsi/nsp32.ko \
drivers/scsi/osst.ko \
drivers/scsi/pas16.ko \
drivers/scsi/ppa.ko \
drivers/scsi/psi240i.ko \
drivers/scsi/qla1280.ko \
drivers/scsi/qla2xxx/qla2100.ko \
drivers/scsi/qla2xxx/qla2200.ko \
drivers/scsi/qla2xxx/qla2300.ko \
drivers/scsi/qla2xxx/qla2322.ko \
drivers/scsi/qla2xxx/qla2xxx.ko \
drivers/scsi/qla2xxx/qla6312.ko \
drivers/scsi/qlogicfas.ko \
drivers/scsi/qlogicfas408.ko \
drivers/scsi/qlogicfc.ko \
drivers/scsi/raid_class.ko \
drivers/scsi/sata_mv.ko \
drivers/scsi/sata_nv.ko \
drivers/scsi/sata_promise.ko \
drivers/scsi/sata_qstor.ko \
drivers/scsi/sata_sil.ko \
drivers/scsi/sata_sis.ko \
drivers/scsi/sata_svw.ko \
drivers/scsi/sata_sx4.ko \
drivers/scsi/sata_uli.ko \
drivers/scsi/sata_via.ko \
drivers/scsi/sata_vsc.ko \
drivers/scsi/scsi_mod.ko \
drivers/scsi/sym53c416.ko \
drivers/scsi/scsi_transport_iscsi.ko \
drivers/scsi/pcmcia/aha152x_cs.ko \
drivers/scsi/pcmcia/fdomain_cs.ko \
drivers/scsi/pcmcia/nsp_cs.ko \
drivers/scsi/pcmcia/qlogic_cs.ko \
drivers/scsi/pcmcia/sym53c500_cs.ko \
drivers/scsi/scsi_transport_sas.ko \
drivers/scsi/t128.ko \
drivers/scsi/scsi_transport_spi.ko \
drivers/scsi/sd_mod.ko \
drivers/scsi/sg.ko \
drivers/scsi/sr_mod.ko \
drivers/scsi/st.ko \
drivers/scsi/sym53c8xx_2/sym53c8xx.ko \
		drivers/block/loop.ko \
		drivers/cdrom/sbpcd.ko \
		drivers/cdrom/sjcd.ko \
		drivers/cdrom/cm206.ko \
		drivers/cdrom/mcdx.ko \
		drivers/cdrom/sonycd535.ko \
		drivers/cdrom/isp16.ko \
		drivers/cdrom/gscd.ko \
		drivers/cdrom/optcd.ko \
		drivers/cdrom/cdu31a.ko \
		drivers/cdrom/cdrom.ko \
		drivers/cdrom/aztcd.ko \
		fs/nls/nls_cp437.ko \
		fs/nls/nls_iso8859-1.ko \
		fs/isofs/isofs.ko \
		fs/squashfs/squashfs.ko \
		lib/zlib_inflate/zlib_inflate.ko"

cd $INITRD/lib/modules

echo "Purging old kernel stuff..."
rm -rf *

echo "Preparing new directory tree..."
if rpm --root $ROOTFS -q kernel-grsecurity > /dev/null; then
	KERNEL=kernel-grsecurity
elif rpm --root $ROOTFS -q kernel > /dev/null; then
	KERNEL=kernel
else
	echo "There is no kernel installed in $ROOTFS"
	exit 1
fi
V=`rpm --root $ROOTFS --qf "%{VERSION}" -q $KERNEL`
R=`rpm --root $ROOTFS --qf "%{RELEASE}" -q $KERNEL`
mkdir -p $V-$R/kernel
ln -s $V-$R $V
cd $V-$R/kernel
for i in $initrd_dirs; 
do 
	mkdir $i; 
done

echo "Copying kernel modules..."
for i in $initrd_files;
do
	cp $ROOTFS/lib/modules/$V-$R/kernel/$i.gz $i.gz;
	gzip -d $i.gz
done;

echo "Calculating dependencies..."
depmod -a -b $INITRD -F $ROOTFS/boot/System.map $V-$R

echo "Copying kernel image..."
cp -f $ROOTFS/boot/vmlinuz $CD/boot
