#!/bin/bash # # Generate a header that defines the boot kernel. # KERNEL_TYPE=`uname -r | sed 's_^.*\(smp\|enterprise\|bigmem\|hugemem\)$_-\1_;t;s_.*__;'` KERNEL_RELEASE=`uname -r | sed 's_smp\|enterprise\|bigmem\|hugemem__g'` rpm -q kernel$KERNEL_TYPE-$KERNEL_RELEASE >/dev/null 2>&1 && KERNEL_ARCH=`rpm -q --qf '%{ARCH}' kernel$KERNEL_TYPE-$KERNEL_RELEASE 2>/dev/null` || KERNEL_ARCH=`uname -m` OLD_KERNEL_ARCH_TYPE=`sed -n 's_^/\* Kernel type \(.*\) \*/_\1_p' /boot/kernel.h 2>/dev/null` if [ -n "$KERNEL_ARCH" -a "$KERNEL_ARCH$KERNEL_TYPE" != "$OLD_KERNEL_ARCH_TYPE" ]; then ENTERPRISE='0' SMP='0' UP='0' BIGMEM='0' HUGEMEM='0' case "$KERNEL_TYPE" in -smp) SMP='1';; -enterprise) ENTERPRISE='1';; -bigmem) BIGMEM='1';; -hugemem) HUGEMEM='1';; *) UP='1';; esac cat > /boot/kernel.h << EOF /* This file is automatically generated at boot time. */ #ifndef __BOOT_KERNEL_H_ #define __BOOT_KERNEL_H_ /* Kernel type $KERNEL_ARCH$KERNEL_TYPE */ #ifndef __MODULE_KERNEL_$KERNEL_ARCH #define __MODULE_KERNEL_$KERNEL_ARCH 1 #endif #ifndef __BOOT_KERNEL_ENTERPRISE #define __BOOT_KERNEL_ENTERPRISE $ENTERPRISE #endif #ifndef __BOOT_KERNEL_BIGMEM #define __BOOT_KERNEL_BIGMEM $BIGMEM #endif #ifndef __BOOT_KERNEL_HUGEMEM #define __BOOT_KERNEL_HUGEMEM $HUGEMEM #endif #ifndef __BOOT_KERNEL_SMP #define __BOOT_KERNEL_SMP $SMP #endif #ifndef __BOOT_KERNEL_UP #define __BOOT_KERNEL_UP $UP #endif #endif EOF fi