#!/bin/sh # 2001-11-27 Rafael Skodlar # manage kernel versions for different platforms HOME=/root # source variables for kernel handling VARS=$HOME/bin/VARS.kernel source $VARS DATE=`date '+%Y-%m-%d'` TIME1=`date '+%H:%M'` [ ! -d $TMP_KERNEL ] && mkdir -p $TMP_KERNEL [ ! -d $ARCH_DIR ] && mkdir -p $ARCH_DIR function configure() { cd $KERNEL_DIR echo -e "=============== Kernel configure (xconfig) =============\n" > ${COMPILE_LOG} make xconfig [ ! -e $ARCH_DOT ] && cp $KERNEL_DIR/.config $ARCH_DOT } function mconfigure() { cd $KERNEL_DIR echo -e "=============== Kernel configure (menuconfig) ==========\n" > ${COMPILE_LOG} make menuconfig [ ! -e $ARCH_DOT ] && cp $KERNEL_DIR/.config $ARCH_DOT } function compile() { cd $KERNEL_DIR echo -e "=============== Kernel compile time $DATE =============\n" > ${COMPILE_LOG} echo -e "Start: $TIME1" >> ${COMPILE_LOG} cp $KERNEL_DIR/.config $TMP_KERNEL/config.${DATE}-${TIME1} make clean make dep make bzImage 2>&1 >> ${COMPILE_LOG}.tmp TIME2=`date '+%H:%M'` echo -e " Stop: $TIME2" >> ${COMPILE_LOG} cat ${COMPILE_LOG}.tmp >> ${COMPILE_LOG} rm ${COMPILE_LOG}.tmp if [ -e "$BZIMAGE" ]; then cp $BZIMAGE $TMP_KERNEL/vmlinuz-${VER} rdev -v $TMP_KERNEL/vmlinuz-${VER} 1 rdev $TMP_KERNEL/vmlinuz-${VER} $ROOT_DEV else echo -e "======================================================================\n\tWARNING! Kernel did not compile or other error.\n" echo -e "\tMissing: $BZIMAGE !!!" echo -e "======================================================================" exit 1 fi # Save .config and keep track of it echo "$DATE $VER $ARCH" >> $ARCH_LOG } function initrd() { [ -e "$INITRD" ] && mv $INITRD $INITRD.${DATE}-${TIME1} mkinitrd $INITRD $VER } function modules() { cd $KERNEL_DIR make modules 2>&1 >> $COMPILE_LOG make modules_install 2>&1 >> $COMPILE_LOG echo "============================= tar modules" >> $COMPILE_LOG tar cvfp $MODULES_TAR $MODULES >> $COMPILE_LOG } function kernelftar() { # tar kernel + whatever on floppy if [ -s "$KTAR" -o -s "${KTAR}.gz" ]; then cd $TMP_KERNEL echo -e "======================================================================\n\tTar kernel + utils ---> $FTAR.\n" tar cvfM $FTAR ${KTAR}.gz echo -e "\n\tcomplete\n======================================================================\n" else echo -e "Missing: ${KTAR} or\n${KTAR}.gz" exit 1 fi } function save_kernel() { # Save .config for future reference and kernel with modules cp -p $KERNEL_DIR/.config $ARCH_DOT if [ -e "$KTAR" -o "${KTAR}.gz" ]; then cp ${KTAR}* $ARCH_DIR else echo "Missing: ${KTAR}*" exit 1 fi } function mk_tgz() { # create tar of all compiled files and utilities cd / tar cvfp $KTAR $TMP_KERNEL/vmlinuz-${VER} $TOOLS [ -e $MODULES_TAR ] && tar rvfp $KTAR $MODULES_TAR [ -e $INITRD ] && tar rvfp $KTAR $INITRD gzip $KTAR ls -l ${KTAR}.gz } function securecopy() { # copy bzImage to remote system echo scp -p ${KTAR}* $ADMIN@${SYSTEM}:$DST scp ${KTAR}* $ADMIN@${SYSTEM}:$DST } case $1 in -xc) configure ;; -mc) mconfigure ;; -ma) compile modules initrd mk_tgz [ -e $COMPLETE ] && play $COMPLETE ;; -mk) compile [ -e $COMPLETE ] && play $COMPLETE ;; -mm) modules [ -e $COMPLETE ] && play $COMPLETE ;; -f) kernelftar ;; -mi) initrd ;; -sc) [ $# -eq 2 ] && SYSTEM=$2 securecopy ;; -tgz) mk_tgz [ -e $COMPLETE ] && play $COMPLETE ;; -sk) save_kernel ;; -clean) rm -rf $TMP_KERNEL ;; *) cat << EOM ===================================================================== Usage: $0 [option] -xc (xconfig) -mc (menuconfig) -ma (make all [kernel + modules + tar]) -mk (make kernel, i.e. compile) -mm (make modules + install under /lib/modules) -mi (make initrd {RAM disk}) -tgz (compress $KTAR) -f (tar kernel+mod+util on floppy) -s (scp $KTAR to host: $SYSTEM) -sc (scp $KTAR to host: ???) -sk (save kernel bzImage in $ARCH_DIR) -clean (remove $TMP_KERNEL) Current setup: --------------------------------------------------------------------- KERNEL_DIR= $KERNEL_DIR LOG= $LOG VER= $VER (kernel version) ARCH= $ARCH (Architecture [motherboard]) SYSTEM= $SYSTEM (remote system for kernel install) ADMIN= $ADMIN (administrator account on remote system) DST= $DST (destination directory for scp on remote system) COMPILE_LOG= $COMPILE_LOG ROOT_DEV= $ROOT_DEV TAR= $KTAR Edit $VARS for correct variables: VER (ex.: 2.4.17) ARCH (architecture = tyan_S2505T, ASUSxxx, Intel810) EOM ;; esac #EOS