#!/bin/bash
# (C) 2015 by Helge Deller <deller@gmx.de>
# This script extracts the linux kernels and initrd file of a ISO file and creates bootable lifimages for parisc-linux

ISO=debian-*NETINST-1.iso
PRESEED=http://backup.parisc-linux.org/debian/preseed.cfg
KERNELCMD="0/vmlinux initrd=0/initrd.gz panic_timeout=60 panic=-1 mirror/protocol=http preseed/url=$PRESEED"

LOOP=/tmp/lif
mkdir -p $LOOP
mount -o loop,ro $ISO $LOOP

palo \
-c "$KERNELCMD mirror/http/proxy__=http://proxy:8080" \
-b $LOOP/install/iplboot \
-k $LOOP/install/vmlinux-*-parisc \
-k $LOOP/install/vmlinux-*-parisc64-smp \
-r $LOOP/install/initrd.gz \
--init-tape=lifimage

palo \
-c "$KERNELCMD mirror/http/proxy=http://proxy:8080" \
-b $LOOP/install/iplboot \
-k $LOOP/install/vmlinux-*-parisc \
-k $LOOP/install/vmlinux-*-parisc64-smp \
-r $LOOP/install/initrd.gz \
--init-tape=lifimage_proxy8080


# now create a minimal 32bit-only initrd (for 715 and 712 machines without HP SDC driver)
TMPINITRD=/tmp/workinitrd
rm -rf $TMPINITRD
mkdir -p $TMPINITRD
rm -f /tmp/initrd.gz 
cp $LOOP/install/initrd.gz /tmp
gunzip /tmp/initrd.gz
pushd $TMPINITRD
cpio -id < /tmp/initrd
rm -rf lib/modules/*parisc64*
rm -rf lib/modules/*parisc*/kernel/drivers/usb
rm -rf lib/modules/*parisc*/kernel/drivers/hid
rm -rf lib/modules/*parisc*/kernel/drivers/net/ethernet/intel
rm -rf lib/modules/*parisc*/kernel/drivers/net/ethernet/broadcom
rm -rf lib/modules/*parisc*/kernel/drivers/input/serio
rm -rf lib/modules/*parisc*/kernel/drivers/input/mouse
rm -rf lib/modules/*parisc*/kernel/drivers/input/keyboard/hil_kbd.ko
rm -rf lib/modules/*parisc*/kernel/drivers/input/ff-memless.ko
find . | cpio --create --format='newc' > /tmp/newinitrd
popd
rm -r /tmp/newinitrd.gz
gzip /tmp/newinitrd
rm -rf $TMPINITRD

palo \
-c "$KERNELCMD MINI_INITRD no_hpsdc=1" \
-b $LOOP/install/iplboot \
-k $LOOP/install/vmlinux-*-parisc \
-r /tmp/newinitrd.gz \
--init-tape=lifimage_mini_without_hpsdc

umount $LOOP
rmdir $LOOP

md5sum lifimage* >> MD5SUMS
