diff options
| author | Jonathan Bauer | 2013-04-24 17:15:47 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2013-04-24 17:15:47 +0200 |
| commit | a0bd2b22b8db8e5d16333852467d07a1cf2f8c82 (patch) | |
| tree | 102178175cf80c255c5875f294d02d672106ecd6 /helper | |
| parent | gitignore kernel build stuff (diff) | |
| download | tm-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.inc | 90 | ||||
| -rw-r--r-- | helper/system.inc | 4 |
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) |
