aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile3
-rw-r--r--src/mkkerneldoth46
2 files changed, 48 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile
index 32d87b9b..9e642e6e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,7 +1,7 @@
CFLAGS+=$(RPM_OPT_FLAGS) -Wall -D_GNU_SOURCE
PROGS=usernetctl doexec netreport testd usleep ipcalc initlog minilogd \
- getkey ppp-watch consoletype
+ getkey ppp-watch consoletype mkkerneldoth
PPPWATCH_OBJS=ppp-watch.o shvar.o
INITLOG_OBJS=initlog.o process.o
USLEEP_OBJS=usleep.o
@@ -34,6 +34,7 @@ install:
install -m 644 ipcalc.1 $(ROOT)$(mandir)/man1
install -m 644 consoletype.1 $(ROOT)$(mandir)/man1
install -m 644 initlog.conf $(ROOT)/etc
+ install -m 755 mkkerneldoth $(ROOT)/sbin
# this daemon and initscript are useful for testing the up/down/status stuff
# not installed by default, only comes from sources.
diff --git a/src/mkkerneldoth b/src/mkkerneldoth
new file mode 100644
index 00000000..ff205e18
--- /dev/null
+++ b/src/mkkerneldoth
@@ -0,0 +1,46 @@
+#!/bin/bash
+#
+# Generate a header that defines the boot kernel.
+#
+
+KERNEL_TYPE=`uname -r | sed 's_^[^se]*\(\|smp\|enterprise\)$_-\1_;s_^-$__'`
+KERNEL_RELEASE=`uname -r | sed 's|smp\|enterprise||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'
+ case "$KERNEL_TYPE" in
+ -smp) SMP='1';;
+ -enterprise) ENTERPRISE='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_SMP
+#define __BOOT_KERNEL_SMP $SMP
+#endif
+
+#ifndef __BOOT_KERNEL_UP
+#define __BOOT_KERNEL_UP $UP
+#endif
+
+#endif
+EOF
+fi