summaryrefslogtreecommitdiffstats
path: root/remote/includes
diff options
context:
space:
mode:
Diffstat (limited to 'remote/includes')
-rw-r--r--remote/includes/kernel.inc76
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."
}
+