summaryrefslogtreecommitdiffstats
path: root/helper
diff options
context:
space:
mode:
authorJonathan Bauer2013-04-24 17:15:47 +0200
committerJonathan Bauer2013-04-24 17:15:47 +0200
commita0bd2b22b8db8e5d16333852467d07a1cf2f8c82 (patch)
tree102178175cf80c255c5875f294d02d672106ecd6 /helper
parentgitignore kernel build stuff (diff)
downloadtm-scripts-a0bd2b22b8db8e5d16333852467d07a1cf2f8c82.tar.gz
tm-scripts-a0bd2b22b8db8e5d16333852467d07a1cf2f8c82.tar.xz
tm-scripts-a0bd2b22b8db8e5d16333852467d07a1cf2f8c82.zip
compile kernel on the reference system with our config requirements
Diffstat (limited to 'helper')
-rw-r--r--helper/kernel.inc90
-rw-r--r--helper/system.inc4
2 files changed, 33 insertions, 61 deletions
diff --git a/helper/kernel.inc b/helper/kernel.inc
index bae07afa..41a9c507 100644
--- a/helper/kernel.inc
+++ b/helper/kernel.inc
@@ -15,48 +15,37 @@
# this code depends on KERNEL_VERSION, this file needs to be sourced after helper/system.inc!
# (TODO: maybe source system.inc if KERNEL_VERSION is empty.
-#[ -z "${KERNEL_VERSION}" ] && perror "KERNEL_VERSION not set. Was helper/system.inc sourced?"
-
-KERNEL_NFS_DIR=""
-mount_kernel_dir() {
- [ -z "$KERNEL_NFS_DIR" ] || return 0
- KERNEL_NFS_DIR="$(mktemp -d)"
- mount -t nfs -o ro "132.230.8.228:/srv/openslx/kernel" "$KERNEL_NFS_DIR"
- local RET=$?
- if [ "x$RET" != "x0" ]; then
- local BROKEN_KERNEL_NFS_DIR="${KERNEL_NFS_DIR}"
- KERNEL_NFS_DIR=""
- perror "Mounting kernel nfs dir to $BROKEN_KERNEL_NFS_DIR failed. Is 'nfs-common' installed?"
- exit 1
- fi
- #pinfo "$KERNEL_NFS_DIR/$SELECTED_KERNEL"
- #qnd_exit
- [ -d "$KERNEL_NFS_DIR/$SELECTED_KERNEL" ] || perror "directory for $KERNEL_VERSION ($SELECTED_KERNEL) does not exist on NFS server"
-}
-
-unmount_kernel_dir() {
- [ -z "$KERNEL_NFS_DIR" ] && return 0
- pinfo "Unmounting kernel nfs stuff....."
- umount "$KERNEL_NFS_DIR" || perror "Could not unmount kernel NFS share at '$KERNEL_NFS_DIR' - check the following lsof output:\n$(lsof -n | grep "$KERNEL_NFS_DIR")\n- End of lsof output -"
- rmdir "$KERNEL_NFS_DIR"
- KERNEL_NFS_DIR=""
+if [ -z "${KERNEL_VERSION}" ]; then
+ . ${ROOT_DIR}/helper/system.inc
+ [ -z "${KERNEL_VERSION}" ] && perror "KERNEL_VERSION still not set after sourcing, something is very wrong..."
+fi
+
+# set global KERNEL_TARGET_NAME
+KERNEL_TARGET_NAME="vmlinuz-${KERNEL_VERSION}-openslx"
+
+check_kernel_build_dir() {
+ [ -d "${MODULES_DIR}/kernel/build" ] && KERNEL_BUILD_DIR="${MODULES_DIR}/kernel/build" \
+ || perror "No build directory set for the kernel. Was is built?"
+ # hack to get the real path of the installed modules
+ KERNEL_NEW_VERSION=$(ls ${KERNEL_BUILD_DIR}/lib/modules)
}
copy_kernel_modules() {
[ -z "${REQUIRED_KERNEL_MODULES}" ] && perror "REQUIRED_KERNEL_MODULES is empty. Check your config file."
-
+ check_kernel_build_dir
#
# process modules list
- #
- mount_kernel_dir
- mkdir -p "${TARGET_BUILD_DIR}/${KERNEL_MODULES_DIR}"
- cd "$KERNEL_NFS_DIR/$SELECTED_KERNEL" || perror "Could not cd to $KERNEL_NFS_DIR/$SELECTED_KERNEL"
- local KERNEL_MODULES_DIR="lib/modules/${KERNEL_VERSION}"
+ #
+ # search for modules in KERNEL_BUILD_DIR
+ cd "${KERNEL_BUILD_DIR}" || perror "Could not cd to ${KERNEL_BUILD_DIR}"
+
+ local KERNEL_MODULES_DIR="lib/modules/${KERNEL_NEW_VERSION}"
local KERNEL_MODULES_LIST=""
+
for KERNEL_MODULE in ${REQUIRED_KERNEL_MODULES}; do
local KERNEL_MODULE_PATH="${KERNEL_MODULES_DIR}/${KERNEL_MODULE}"
- if grep "^${KERNEL_MODULE}$" "${KERNEL_NFS_DIR}/${SELECTED_KERNEL}/${KERNEL_MODULES_DIR}/modules.builtin" >/dev/null; then
+ if grep "^${KERNEL_MODULE}$" "${KERNEL_BUILD_DIR}/${KERNEL_MODULES_DIR}/modules.builtin" >/dev/null; then
pdebug "Already built-in ${KERNEL_MODULE}."
elif [ -e "${KERNEL_MODULE_PATH}" ]; then
pdebug "Copying '${KERNEL_MODULE_PATH}'"
@@ -82,7 +71,7 @@ copy_kernel_modules() {
# copy list of builtin kernel modules
cp "${KERNEL_MODULES_DIR}/modules.builtin" "${TARGET_BUILD_DIR}/${KERNEL_MODULES_DIR}"
# with modules.order and modules.builtin, we can run depmod for the rest of the files
- depmod -b "${TARGET_BUILD_DIR}" -a "${KERNEL_VERSION}"
+ depmod -b "${TARGET_BUILD_DIR}" -a "${KERNEL_NEW_VERSION}"
cd - >/dev/null
}
@@ -90,17 +79,16 @@ copy_kernel_modules() {
copy_firmware() {
[ -z "${REQUIRED_FIRMWARE}" ] && perror "REQUIRED_FIRMWARE is empty. Check your config file."
-
+ check_kernel_build_dir
#
# process firmware list
#
- mount_kernel_dir
- cd "$KERNEL_NFS_DIR/$SELECTED_KERNEL" || perror "Could not cd to $KERNEL_NFS_DIR/$SELECTED_KERNEL"
+ cd "${KERNEL_BUILD_DIR}" || perror "Could not cd!"
local FIRMWARE_DIR="lib/firmware"
local FIRMWARE_LIST=""
for FIRMWARE in ${REQUIRED_FIRMWARE}; do
local FOUND=0
- for CANDIDATE in "${FIRMWARE_DIR}/${FIRMWARE}" "${FIRMWARE_DIR}/${KERNEL_VERSION}/${FIRMWARE}"; do
+ for CANDIDATE in "${FIRMWARE_DIR}/${FIRMWARE}" "${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}"; do
if [ -e "${CANDIDATE}" ]; then
pdebug "Copying '${CANDIDATE}'"
FIRMWARE_LIST+=" ${CANDIDATE}"
@@ -108,7 +96,7 @@ copy_firmware() {
fi
done
- [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${KERNEL_VERSION}/${FIRMWARE}' "\
+ [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}' "\
" was found on the system. Skipping. (might cause problems on certain clients!)"
done
@@ -122,29 +110,13 @@ copy_firmware() {
copy_kernel() {
- local KERNEL_NAME="vmlinuz-${KERNEL_VERSION}"
-
local TOOL_STR="$TOOL_STR copy_kernel:"
- [ ! -d "${KERNEL_DIR}" ] && mkdir -p "${KERNEL_DIR}"
-
- pinfo "Copying '${KERNEL_NAME}' to '${KERNEL_DIR}'."
- mount_kernel_dir
-
- cp "$KERNEL_NFS_DIR/$SELECTED_KERNEL/bzImage" "$KERNEL_DIR/$KERNEL_NAME" || perror "Could not copy kernel from '$KERNEL_NFS_DIR/$SELECTED_KERNEL/bzImage' to '$KERNEL_DIR/$KERNEL_NAME'"
+ check_kernel_build_dir
+ local KERNEL_DIR="${MODE_DIR}/builds/kernel"
+ pinfo "Copying '${KERNEL_TARGET_NAME}' to '${KERNEL_DIR}'."
+ [ -d "${KERNEL_DIR}" ] || mkdir -p "${KERNEL_DIR}"
+ cp "${KERNEL_BUILD_DIR}/${KERNEL_TARGET_NAME}" "${KERNEL_DIR}" || perror "Could not copy kernel!"
pinfo "You may want to update your systems firmware/modules to match the current kernel."
}
-
-fetch_source() {
-
- if [ "x$PACKET_MANAGER" == "apt" ]; then
- apt-get source linux-image-${KERNEL_VERSION}
- elif [ "x$PACKET_MANAGER" == "zypper" ]; then
- # TODO
- fi
-}
-build_kernel() {
- :
-}
-
diff --git a/helper/system.inc b/helper/system.inc
index 21e92422..4c0ea467 100644
--- a/helper/system.inc
+++ b/helper/system.inc
@@ -11,8 +11,8 @@ ARCH_LIB_DIR=$(ldd $SHELL | grep "libc.so" | sed -r 's#^.*(/lib.*)/libc.so.*$#\1
[ -z "$ARCH_LIB_DIR" -o ! -d "$ARCH_LIB_DIR" ] && perror "Could not determine arch dependent lib dir (where libc.so resides)"
# determine kernel version
-#KERNEL_VERSION=$(uname -r)
-#[ ! -z $KERNEL_VERSION ] || pwarning "Could not determine kernel version."
+KERNEL_VERSION=$(uname -r)
+[ ! -z $KERNEL_VERSION ] || pwarning "Could not determine kernel version."
# determine number of CPU cores
CPU_CORES=$(cat /proc/cpuinfo | grep processor | wc -l)