From 1c93221134a425b9e9b1012bc6647b9d13e76a23 Mon Sep 17 00:00:00 2001 From: "ack@localhost.localdomain" Date: Wed, 12 Jul 2006 11:58:40 +0100 Subject: Add linux config update script and native linux build. Update script generates linux config files from others, reducing the burden of maintaining multiple parallel files. Signed-off-by: Emmanuel Ackaouy --- .hgignore | 1 + buildconfigs/conf.linux-native/00_xen_to_native | 84 +++++++++++++++++++++++++ buildconfigs/create_config.sh | 50 +++++++++++++++ buildconfigs/mk.linux-2.6-native | 4 ++ buildconfigs/mk.linux-2.6-xen | 11 ++-- 5 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 buildconfigs/conf.linux-native/00_xen_to_native create mode 100644 buildconfigs/create_config.sh create mode 100644 buildconfigs/mk.linux-2.6-native diff --git a/.hgignore b/.hgignore index 275736d739..f083160029 100644 --- a/.hgignore +++ b/.hgignore @@ -54,6 +54,7 @@ ^extras/mini-os/h/xen-public$ ^extras/mini-os/mini-os\..*$ ^install/.*$ +^linux-[^/]*-native/.*$ ^linux-[^/]*-xen/.*$ ^linux-[^/]*-xen0/.*$ ^linux-[^/]*-xenU/.*$ diff --git a/buildconfigs/conf.linux-native/00_xen_to_native b/buildconfigs/conf.linux-native/00_xen_to_native new file mode 100644 index 0000000000..6f155024fc --- /dev/null +++ b/buildconfigs/conf.linux-native/00_xen_to_native @@ -0,0 +1,84 @@ +# Linux kernel version: 2.6.16.13-native +# Mon May 15 10:59:54 2006 +# +CONFIG_X86_PC=y +# CONFIG_X86_XEN is not set +# CONFIG_HPET_TIMER is not set +# CONFIG_SCHED_SMT is not set +# CONFIG_X86_MCE is not set +# CONFIG_X86_MSR is not set +# CONFIG_SWIOTLB is not set +# CONFIG_EDD is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_HIGHPTE is not set +# CONFIG_MATH_EMULATION is not set +# CONFIG_EFI is not set +CONFIG_IRQBALANCE=y +# CONFIG_KEXEC is not set +CONFIG_DOUBLEFAULT=y +CONFIG_PM_LEGACY=y +# CONFIG_PM_DEBUG is not set +# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_SUSPEND_SMP=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SLEEP_PROC_FS=y +# CONFIG_ACPI_SLEEP_PROC_SLEEP is not set +CONFIG_X86_PM_TIMER=y +# APM (Advanced Power Management) BIOS Support +# +# CONFIG_APM is not set + +# +CONFIG_PCI_BIOS=y +# CONFIG_XEN_PCIDEV_FRONTEND is not set +# CONFIG_XEN_PCIDEV_FE_DEBUG is not set +# CONFIG_PCI_MSI is not set +# CONFIG_ISA is not set +# CONFIG_MCA is not set +# CONFIG_HOTPLUG_PCI_COMPAQ is not set +# CONFIG_HOTPLUG_PCI_IBM is not set +# CONFIG_I2O_EXT_ADAPTEC_DMA64 is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_TCG_XEN is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_XEN is not set +# CONFIG_XEN_INTERFACE_VERSION is not set + +# +# XEN +# +# CONFIG_XEN_PRIVILEGED_GUEST is not set +# CONFIG_XEN_UNPRIVILEGED_GUEST is not set +# CONFIG_XEN_BACKEND is not set +# CONFIG_XEN_PCIDEV_BACKEND is not set +# CONFIG_XEN_PCIDEV_BACKEND_VPCI is not set +# CONFIG_XEN_PCIDEV_BACKEND_PASS is not set +# CONFIG_XEN_PCIDEV_BE_DEBUG is not set +# CONFIG_XEN_BLKDEV_BACKEND is not set +# CONFIG_XEN_BLKDEV_TAP_BE is not set +# CONFIG_XEN_NETDEV_BACKEND is not set +# CONFIG_XEN_NETDEV_PIPELINED_TRANSMITTER is not set +# CONFIG_XEN_NETDEV_LOOPBACK is not set +# CONFIG_XEN_TPMDEV_BACKEND is not set +# CONFIG_XEN_BLKDEV_FRONTEND is not set +# CONFIG_XEN_NETDEV_FRONTEND is not set +# CONFIG_XEN_BLKDEV_TAP is not set +# CONFIG_XEN_SCRUB_PAGES is not set +# CONFIG_XEN_DISABLE_SERIAL is not set +# CONFIG_XEN_SYSFS is not set +# CONFIG_XEN_COMPAT_030002_AND_LATER is not set +# CONFIG_XEN_COMPAT_LATEST_ONLY is not set +# CONFIG_XEN_COMPAT_030002 is not set +# CONFIG_HAVE_ARCH_ALLOC_SKB is not set +# CONFIG_HAVE_ARCH_DEV_ALLOC_SKB is not set +# CONFIG_NO_IDLE_HZ is not set +CONFIG_X86_HT=y +# CONFIG_X86_NO_TSS is not set +# CONFIG_X86_NO_IDT is not set diff --git a/buildconfigs/create_config.sh b/buildconfigs/create_config.sh new file mode 100644 index 0000000000..7874f7e53c --- /dev/null +++ b/buildconfigs/create_config.sh @@ -0,0 +1,50 @@ +#!/bin/sh +set -e + + +# Parse arguments +# +if [ $# -lt 1 -o $# -gt 4 ]; then + echo "Usage: $0 config-file EXTRAVERSION XEN_TARGET_ARCH XEN_SYSTYPE" + exit 1 +fi + +config_file=$1 +extraversion=$2 +target_arch=$3 +systype=$4 + + +# Start with initial config skeleton file, if any. +# Derive from linux-defconfig_xen_x86_32 otherwise. +# +skeleton=buildconfigs/linux-defconfig_${extraversion}_${target_arch}${systype} +[ -r $skeleton ] || skeleton=buildconfigs/linux-defconfig_xen_x86_32 +cp $skeleton $config_file + + +# Update +# +filter_template="s/^#\{0,1\} *\(CONFIG[^= ]*\).*/\/^#\\\{0,1\\\} *\1[= ].*\/d/p" +config_dirs="buildconfigs/conf.linux buildconfigs/conf.linux-${target_arch} buildconfigs/conf.linux-${extraversion} buildconfigs/conf.linux-${target_arch}-${extraversion}" + +for config_dir in $config_dirs +do + if [ -d $config_dir ]; then + # processing is done in alphanumeric order + find $config_dir -type f | sort | while read update + do + # create the filter rules in a temp file + filter_rules=`mktemp -t xenupdateconf.XXXXXXXXXX` + sed -n "${filter_template}" < $update > $filter_rules + + # filter the config file in place, removing any options that + # will be updated. + sed -f $filter_rules -i $config_file + cat $update >> $config_file + + # clean up + rm -f $filter_rules + done + fi +done diff --git a/buildconfigs/mk.linux-2.6-native b/buildconfigs/mk.linux-2.6-native new file mode 100644 index 0000000000..c3ee13bdca --- /dev/null +++ b/buildconfigs/mk.linux-2.6-native @@ -0,0 +1,4 @@ +EXTRAVERSION = native +IMAGE_TARGET = bzImage +INSTALL_BOOT_PATH = $(DESTDIR)/boot +include buildconfigs/mk.linux-2.6-xen diff --git a/buildconfigs/mk.linux-2.6-xen b/buildconfigs/mk.linux-2.6-xen index 5de144259f..8c52deca0c 100644 --- a/buildconfigs/mk.linux-2.6-xen +++ b/buildconfigs/mk.linux-2.6-xen @@ -5,6 +5,9 @@ EXTRAVERSION ?= xen LINUX_DIR = linux-$(LINUX_VER)-$(EXTRAVERSION) +IMAGE_TARGET ?= vmlinuz +INSTALL_BOOT_PATH ?= $(DESTDIR) + LINUX_VER3 := $(LINUX_SERIES).$(word 3, $(subst ., ,$(LINUX_VER))) include buildconfigs/Rules.mk @@ -16,8 +19,9 @@ build: $(LINUX_DIR)/include/linux/autoconf.h $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) modules ; \ $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_MOD_PATH=$(DESTDIR) modules_install ; \ fi - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) vmlinuz - $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install + $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) $(IMAGE_TARGET) + mkdir -p $(INSTALL_BOOT_PATH) + $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(INSTALL_BOOT_PATH) install $(LINUX_DIR)/include/linux/autoconf.h: ref-linux-$(LINUX_VER)/.valid-ref rm -rf $(LINUX_DIR) @@ -29,8 +33,7 @@ $(LINUX_DIR)/include/linux/autoconf.h: ref-linux-$(LINUX_VER)/.valid-ref CONFIG_VERSION=$$(sed -ne 's/^EXTRAVERSION = //p' $(LINUX_DIR)/Makefile); \ [ -r $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION-$(EXTRAVERSION) ] && \ cp $(DESTDIR)/boot/config-$(LINUX_VER3)$$CONFIG_VERSION-$(EXTRAVERSION) $(LINUX_DIR)/.config \ - || cp buildconfigs/linux-defconfig_$(EXTRAVERSION)_$(XEN_TARGET_ARCH)$(XEN_SYSTYPE) \ - $(LINUX_DIR)/.config + || sh buildconfigs/create_config.sh $(LINUX_DIR)/.config $(EXTRAVERSION) $(XEN_TARGET_ARCH) $(XEN_SYSTYPE) # See if we need to munge config to enable PAE $(MAKE) CONFIG_FILE=$(LINUX_DIR)/.config -f buildconfigs/Rules.mk config-update-pae # Patch kernel Makefile to set EXTRAVERSION -- cgit v1.2.3