#!/bin/bash # # author: hackbard@hackdaworld.dyndns.org # # create a kernel binary package # config="" name="" builddir="" homedir=$PWD while [ "$1" ] ; do case "$1" in -config) config=$2 ; shift 2 ;; -name) name=$2 ; shift 2 ;; -dir) builddir=$2 ; shift 2 ;; *) echo echo "usage:" echo echo "-config " echo "-name " echo "-dir " echo exit 1 ;; esac done . ./Config if [ "$hdw_arch" != "ia32" ] ; then echo "warning: only ia32 supported by now" echo "hack me ... " exit 1 fi [ -z "$config" ] && config="./misc/arch/${hdw_arch}/linux.config" [ -z "$name" ] && name="custom-$hdw_arch" [ -z "$builddir" ] && builddir="/tmp" if [ ! -f $config ] ; then echo "$config doesn't exist, aborting ..." exit 1 fi if [ ! -d $builddir ] ; then echo "$builddir doesn't exist, aborting ..." exit 1 fi kerpkg="`grep '^#\ \[D\]' ./packages/base/linux/linux | awk '{ print $3 }'`" kerver="`grep '^#\ \[V\]' ./packages/base/linux/linux | awk '{ print $3 }'`" trg=$homedir/kernel-image-${kerver}_${name}.tar.bz2 if [ -f $trg ] ; then echo "image $trg already exists, aborting ..." exit 1 fi [ ! -f ./download/base/linux/$kerpkg ] && ./scripts/Download -package linux # backing up old kernel + modules kerbackup=no if [ -f /boot/vmlinuz_$kerver ] ; then mv /boot/vmlinuz_$kerver /boot/vmlinuz_${kerver}__orig kerbackup=yes fi modbackup=no if [ -d /lib/modules/$kerver ] ; then mv /lib/modules/$kerver /lib/modules/${kerver}__orig modbackup=yes fi # build kernel & modules kerarch=${hdw_arch//ia32/i386} cp $config $builddir/linux.config rm -rf $builddir/linux-$kerver tar xfj ./download/base/linux/$kerpkg -C $builddir cd $builddir/linux-$kerver mv ../linux.config .config cd include && ln -sf asm-${kerarch} asm && cd .. yes "" | make oldconfig make bzImage modules modules_install cp arch/$kerarch/boot/bzImage /boot/vmlinuz_$kerver cp .config /boot/kernel-config-$kerver-$name # create the package cd / tar --use-compress-program=bzip2 -cf $trg lib/modules/$kerver \ boot/vmlinuz_$kerver /boot/kernel-config-$kerver-$name cd $homedir # restore kernel & modules rm -f /boot/vmlinuz_$kerver [ "$kerbackup" = "yes" ] && \ mv /boot/vmlinuz_${kerver}__orig /boot/vmlinuz_$kerver rm -rf /lib/modules/$kerver [ "$modbackup" = "yes" ] && \ mv /lib/modules/${kerver}__orig /lib/modules/$kerver echo echo "done" echo