diff options
| author | Simon Rettberg | 2014-07-04 20:04:41 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2014-07-04 20:04:41 +0200 |
| commit | b7a021b2df67c6d08457df32f3ba1514897ac70b (patch) | |
| tree | f038199bdd92329808f1c54bf41d646d9dfe6fd3 /remote/includes/kernel.inc | |
| parent | [downloader.inc] Special case sourceforge: Allow setting a mirror in ./config (diff) | |
| download | tm-scripts-b7a021b2df67c6d08457df32f3ba1514897ac70b.tar.gz tm-scripts-b7a021b2df67c6d08457df32f3ba1514897ac70b.tar.xz tm-scripts-b7a021b2df67c6d08457df32f3ba1514897ac70b.zip | |
Try to clean up the mess with all the different kernel version variables everywhere
Diffstat (limited to 'remote/includes/kernel.inc')
| -rw-r--r-- | remote/includes/kernel.inc | 76 |
1 files changed, 27 insertions, 49 deletions
diff --git a/remote/includes/kernel.inc b/remote/includes/kernel.inc index 3acb1810..941e2621 100644 --- a/remote/includes/kernel.inc +++ b/remote/includes/kernel.inc @@ -7,30 +7,22 @@ # copies kernel modules as given in the module config file # * depends on 'depmod' # * requires REQUIRED_KERNEL_MODULES to be set. -# (entries must be a relative path to /lib/modules/<KERNEL_CURRENT_VERSION>) +# (entries must be a relative path to /lib/modules/<SYSTEM_KERNEL_LONG>) # # ex: for /lib/modules/3.2.0/kernel/fs/nfs/nfs.ko # must be given as kernel/fs/nfs/nfs.ko # -# set global KERNEL_TARGET_NAME -KERNEL_TARGET_NAME="kernel" - # set global KERNEL_BASE_DIR as in the directory containing lib/modules and lib/firmware # for system kernel, that is "/" and for an openslx kernel KERNEL_BUILD_DIR KERNEL_BASE_DIR="" get_kernel_version () { - # determine kernel version currently running on this machine - [ -z "$KERNEL_CURRENT_VERSION" ] && declare -rg KERNEL_CURRENT_VERSION="$(uname -r)" - [ -z "$KERNEL_CURRENT_VERSION" ] && pwarning "Could not determine kernel version." - - # set empty SYS_UTS_RELEASE and SYS_KERNEL - SYS_UTS_RELEASE="(unknown)" - SYS_KERNEL="$(echo "$SYS_UTS_RELEASE" | grep -o -E '^[0-9\.]+')" - # System kernel version - SYSTEM_KERNEL_LONG=$(uname -r) - SYSTEM_KERNEL_SHORT=$(grep -o -E '^[0-9\.]+' <<<$SYSTEM_KERNEL_LONG) + # Running system kernel version + if [ -z "$SYSTEM_KERNEL_LONG" ]; then + declare -rg SYSTEM_KERNEL_LONG=$(uname -r) + declare -rg SYSTEM_KERNEL_SHORT=$(grep -o -E '^[0-9\.]+' <<<$SYSTEM_KERNEL_LONG) + fi } check_kernel_base_dir () { @@ -50,9 +42,9 @@ check_kernel_base_dir () { } copy_kernel_modules () { - pinfo "Copying kernel modules for kernel ${KERNEL_CURRENT_VERSION}..." + pinfo "Copying kernel modules for kernel ${SYSTEM_KERNEL_LONG}..." [ -z "${REQUIRED_KERNEL_MODULES}" ] && perror "REQUIRED_KERNEL_MODULES is empty. Check your config file." - [ -z "${KERNEL_HEADERS_PATH}" ] && perror "KERNEL_HEADERS_PATH is empty. Kernel headers appears to be missing." + [ -z "${KERNEL_HEADERS_DIR}" ] && perror "KERNEL_HEADERS_DIR is empty. Kernel headers appears to be missing." check_kernel_base_dir @@ -65,7 +57,7 @@ copy_kernel_modules () { # search for modules in KERNEL_BASE_DIR cd "${KERNEL_BASE_DIR}" || perror "Could not cd to ${KERNEL_BASE_DIR}" - local KERNEL_MODULES_DIR="lib/modules/${KERNEL_NEW_VERSION}" + local KERNEL_MODULES_DIR="lib/modules/${TARGET_KERNEL_LONG}" local KERNEL_MODULES_LIST="" local REQUIRED_KERNEL_MODULES_EXPANDED="" local KERNEL_MODULE="" @@ -125,7 +117,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_NEW_VERSION}" + depmod -b "${TARGET_BUILD_DIR}" -a "${TARGET_KERNEL_LONG}" # go back to wherever we were cd "${OLD_DIR}" || perror "Could not cd back to ${OLD_DIR}." @@ -133,7 +125,7 @@ copy_kernel_modules () { copy_firmware () { - pinfo "Copying firmware for kernel ${KERNEL_CURRENT_VERSION}..." + pinfo "Copying firmware for kernel ${SYSTEM_KERNEL_LONG}..." [ -z "${REQUIRED_FIRMWARE}" ] && perror "REQUIRED_FIRMWARE is empty. Check your config file." check_kernel_base_dir @@ -148,7 +140,7 @@ copy_firmware () { for FIRMWARE in ${REQUIRED_FIRMWARE}; do local FOUND=0 # check for firmware in the build directory of the kernel - for CANDIDATE in "${FIRMWARE_DIR}/${FIRMWARE}" "${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}"; do + for CANDIDATE in "${FIRMWARE_DIR}/${FIRMWARE}" "${FIRMWARE_DIR}/${TARGET_KERNEL_LONG}/${FIRMWARE}"; do if [ -e "${CANDIDATE}" ]; then pdebug "Copying from kernel base dir ('$KERNEL_BASE_DIR'): '${CANDIDATE}'" FIRMWARE_LIST+=" ${CANDIDATE}" @@ -158,28 +150,28 @@ copy_firmware () { # dont look under / if KERNEL_BASE_DIR is already / if [ "x${KERNEL_BASE_DIR}" == "x/" ]; then - [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}' found on the system" + [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${TARGET_KERNEL_LONG}/${FIRMWARE}' found on the system" continue fi # if we didn't found it in the kernel build directory, check for firmware in the system firmware directory if [ $FOUND -ne 1 ]; then pdebug "Did not found '$FIRMWARE' in kernel base dir. Searching system..." - for CANDIDATE in "/${FIRMWARE_DIR}/${FIRMWARE}" "/${FIRMWARE_DIR}/${KERNEL_CURRENT_VERSION}/${FIRMWARE}"; do + for CANDIDATE in "/${FIRMWARE_DIR}/${FIRMWARE}" "/${FIRMWARE_DIR}/${SYSTEM_KERNEL_LONG}/${FIRMWARE}"; do if [ -e "${CANDIDATE}" ]; then - if [ $(echo "${CANDIDATE}" | grep -c "${KERNEL_CURRENT_VERSION}") -eq 0 ]; then + if [ $(echo "${CANDIDATE}" | grep -c "${SYSTEM_KERNEL_LONG}") -eq 0 ]; then pdebug "Copying from system: '${CANDIDATE}'" FIRMWARE_LIST+=" ${CANDIDATE}" else - pdebug "Copying from system: '${CANDIDATE}' to ${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}" - FIRMWARE_LIST+=" /${FIRMWARE_DIR}/${KERNEL_CURRENT_VERSION}/${FIRMWARE}" + pdebug "Copying from system: '${CANDIDATE}' to ${FIRMWARE_DIR}/${TARGET_KERNEL_LONG}/${FIRMWARE}" + FIRMWARE_LIST+=" /${FIRMWARE_DIR}/${SYSTEM_KERNEL_LONG}/${FIRMWARE}" fi FOUND=1 fi done fi - [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${KERNEL_NEW_VERSION}/${FIRMWARE}' "\ + [ $FOUND -ne 1 ] && pwarning "Neither '${FIRMWARE_DIR}/${FIRMWARE}' nor '${FIRMWARE_DIR}/${TARGET_KERNEL_LONG}/${FIRMWARE}' "\ " was found on the system. Skipping. (might cause problems on certain clients!)" done @@ -192,16 +184,16 @@ copy_firmware () { # only for kernel-openslx # post-process to fix the path of the firmwares found on the system unter /lib/firmware/$(uname -r) - # which have to be copied to /lib/firmware/${KERNEL_NEW_VERSION} + # which have to be copied to /lib/firmware/${TARGET_KERNEL_LONG} if [ "x${KERNEL_BASE_DIR}" != "x/" ]; then - if [ -d "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_CURRENT_VERSION}" ]; then - mkdir -p "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_NEW_VERSION}/" - cd "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_CURRENT_VERSION}" || perror "old kernel but no old kernel" - tarcopy "$(ls)" "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_NEW_VERSION}/" + if [ -d "${TARGET_BUILD_DIR}/lib/firmware/${SYSTEM_KERNEL_LONG}" ]; then + mkdir -p "${TARGET_BUILD_DIR}/lib/firmware/${TARGET_KERNEL_LONG}/" + cd "${TARGET_BUILD_DIR}/lib/firmware/${SYSTEM_KERNEL_LONG}" || perror "old kernel but no old kernel" + tarcopy "$(ls)" "${TARGET_BUILD_DIR}/lib/firmware/${TARGET_KERNEL_LONG}/" cd - - rm -r "${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_CURRENT_VERSION}" || perror "something went very wrong..." + rm -r "${TARGET_BUILD_DIR}/lib/firmware/${SYSTEM_KERNEL_LONG}" || perror "something went very wrong..." else - pdebug "No ${TARGET_BUILD_DIR}/lib/firmware/${KERNEL_CURRENT_VERSION} directory, skipping the merge." + pdebug "No ${TARGET_BUILD_DIR}/lib/firmware/${SYSTEM_KERNEL_LONG} directory, skipping the merge." fi fi @@ -216,23 +208,9 @@ copy_kernel () { [ -d "${KERNEL_DIR}" ] || mkdir -p "${KERNEL_DIR}" - # here we need special logic for the 2 different kind of kernels - # if KERNEL_BASE_DIR is '/' then we are using the kernel-system module - # else if it is '*tm-scripts/remote/modules/*" then we use the openslx-module - # TODO til the configuration interface is done, it is ugly... - if [ "${KERNEL_BASE_DIR}" = "/" ]; then - # remote/modules/kernel-system/build/kernel - cp "${MODULES_DIR}/kernel-system/build/kernel" "${KERNEL_DIR}" \ - || perror "Could not copy '${MODULES_DIR}/kernel-system/build/kernel' to '${KERNEL_DIR}'" - pinfo "Copied '${MODULES_DIR}/kernel-system/build/kernel' to '${KERNEL_DIR}'" - elif [[ "${KERNEL_BASE_DIR}" = *tm-scripts/remote/modules/kernel* ]]; then - # kernel-openslx - cp "${MODULES_DIR}/kernel/build/kernel" "${KERNEL_DIR}" \ - || perror "Could not copy '${MODULES_DIR}/kernel/build/kernel' to '${KERNEL_DIR}'" - pinfo "Copied '${MODULES_DIR}/kernel/build/kernel' to '${KERNEL_DIR}'" - fi + cp "${TARGET_DIR}/kernel/build/kernel" "${KERNEL_DIR}" || perror "Could not copy '${TARGET_DIR}/kernel/build/kernel' to '${KERNEL_DIR}'" # kernel has 0600 perms since ubuntu 14.04, change that once we copied it chmod +r "${KERNEL_DIR}/kernel" - pinfo "You may want to update your systems firmware/modules to match the current kernel." } + |
