diff options
author | Jonathan Bauer | 2014-03-25 15:24:04 +0100 |
---|---|---|
committer | Jonathan Bauer | 2014-03-25 15:24:04 +0100 |
commit | 3d1235af060955e271be68240c0ca46bc6d81b03 (patch) | |
tree | ef02dcc4bb8476cfeef07e2df6a38b4c29d350df /remote/modules/kernel-system | |
parent | [rootfs-stage32] /var/log/openslx in tmpfiles.d (diff) | |
download | tm-scripts-3d1235af060955e271be68240c0ca46bc6d81b03.tar.gz tm-scripts-3d1235af060955e271be68240c0ca46bc6d81b03.tar.xz tm-scripts-3d1235af060955e271be68240c0ca46bc6d81b03.zip |
[modules] new module naming convention
rename $MODULE.{conf,build} to module.{conf,build}
Diffstat (limited to 'remote/modules/kernel-system')
-rw-r--r-- | remote/modules/kernel-system/module.build | 114 | ||||
-rw-r--r-- | remote/modules/kernel-system/module.conf | 3 | ||||
-rw-r--r-- | remote/modules/kernel-system/module.conf.opensuse | 6 | ||||
-rw-r--r-- | remote/modules/kernel-system/module.conf.ubuntu | 6 |
4 files changed, 129 insertions, 0 deletions
diff --git a/remote/modules/kernel-system/module.build b/remote/modules/kernel-system/module.build new file mode 100644 index 00000000..d542a80d --- /dev/null +++ b/remote/modules/kernel-system/module.build @@ -0,0 +1,114 @@ +# overloaded get_kernel_version function +get_kernel_version(){ + pinfo "KERNEL_CURRENT_VERSION: ${KERNEL_CURRENT_VERSION}" + [ -z "${KERNEL_CURRENT_VERSION}" ] && perror "KERNEL_CURRENT_VERSION is not set, 'uname -r' output: '$(uname -r)'. Aborting..." + + # set SYS_UTS_RELEASE and SYS_KERNEL correctly + declare -rg SYS_UTS_RELEASE="${KERNEL_CURRENT_VERSION}" 2>/dev/null + declare -rg SYS_KERNEL="$(echo ${KERNEL_CURRENT_VERSION} | grep -o -E '^[0-9\.]+')" 2>/dev/null + + # KERNEL_NEW_VERSION is the same as KERNEL_CURRENT_VERSION + declare -rg KERNEL_NEW_VERSION="$KERNEL_CURRENT_VERSION" 2>/dev/null + + # check linux headers directory + if [ -d "/usr/src/linux-headers-$(uname -r)" ]; then + declare -rg KERNEL_HEADERS_PATH="/usr/src/linux-headers-$(uname -r)" 2>/dev/null + else + # fetch source did not install the headers correctly. + perror "kernel headers for $KERNEL_CURRENT_VERSION not found! Re-build the kernel-system module" + fi + + # check kernel modules/firmware directory + if [ -d "/lib/modules/${KERNEL_CURRENT_VERSION}" -a \ + -d "/lib/firmware/${KERNEL_CURRENT_VERSION}" ]; then + # The expected paths exists, set KERNEL_BASE_DIR to / + declare -rg KERNEL_BASE_DIR="/" 2>/dev/null + else + perror "Could not find kernel modules / firmware for kernel version '$KERNEL_CURRENT_VERSION'. \ + Does '/lib/modules/$KERNEL_CURRENT_VERSION' exist?" + fi + + # print debug info + pdebug "SYS_UTS_RELEASE: '$SYS_UTS_RELEASE'" + pdebug "SYS_KERNEL: '$SYS_KERNEL'" + pdebug "KERNEL_NEW_VERSION: '$KERNEL_NEW_VERSION'" + pdebug "KERNEL_BASE_DIR: '$KERNEL_BASE_DIR'" + + # set KERNEL_HEADERS_PATH + #get_kernel_headers_path +} + +get_kernel_headers_path(){ + # determine the path to the kernel headers we just installed + for DIR in $(list_content_package --dirs linux-headers-$(uname -r) ); do + if [[ "$DIR" =~ .*linux-headers-$(uname -r)$ ]]; then + # validate candidate + [ -e "$DIR/./include/generated/utsrelease.h" ] \ + || perror "Could not find utsrelease.h at '$DIR/./include/generated/utsrelease.h'" + # TODO: maybe check if SYS_UTS_RELEASE is the same as in the header. + + # all good, we found it + pinfo "Kernel headers found at '$DIR'." + declare -rg KERNEL_HEADERS_PATH="$DIR" + break + fi + done + + [ -z "$KERNEL_HEADERS_PATH" ] && perror "KERNEL_HEADERS_PATH was not set correctly." + +} + +fetch_source() { + + # get the source from repos, use meta-package for now + pinfo "Installing kernel headers from the repositories for version '${KERNEL_CURRENT_VERSION}'" + + # the actual install routine is done via config file + # through the REQUIRED_INSTALLED_PACKAGES variable + +} + +build() { + + # simply copy the kernel from the running system + # to the build directory as it is. + local KERNEL_SYSTEM_PATH="" + + # 1st "parse" /proc/cmdline for the kernel name + for i in $(cat /proc/cmdline); do + [[ "$i" =~ ^BOOT_IMAGE=.* ]] && local BOOT_IMAGE="$(basename $(echo $i|cut -c 12-))" + done + + # exit if KERNEL_SYSTEM_FILENAME is empty, should not happen + [ -z "${BOOT_IMAGE}" ] && perror "Could not determine the full path to the running kernel..." + + # now find it in KERNEL_SYSTEM_SEARCH_PATH + # NOTE: this variable should be expanded in the future if new locations are to be searched + local KERNEL_SYSTEM_SEARCH_PATH="/boot" + local KERNEL_SYSTEM_SEARCH_RESULTS="$(find "${KERNEL_SYSTEM_SEARCH_PATH}" -type f -iname "*${BOOT_IMAGE}*")" + + if [ "$(echo $KERNEL_SYSTEM_SEARCH_RESULTS|wc -w)" -eq 1 ]; then + # we found the running kernel path + KERNEL_SYSTEM_PATH="${KERNEL_SYSTEM_SEARCH_RESULTS}" + else + # we found more than one, shouldn't happen... + perror "Found more than one kernel named '${BOOT_IMAGE}' inside '${KERNEL_SYSTEM_SEARCH_PATH}'." + fi + + # at this point, we should definitly have KERNEL_SYSTEM_PATH, check just in case :) + [ -z "${KERNEL_SYSTEM_PATH}" ] && perror "KERNEL_SYSTEM_PATH isn't set, kernel not found. This shouldn't happen!" + pinfo "Live kernel path: $KERNEL_SYSTEM_PATH" + + # copy kernel to build directory + [ -z "${KERNEL_TARGET_NAME}" ] && perror "KERNEL_TARGET_NAME not set, this mean something is wrong with remote/include/kernel.inc" + cp "${KERNEL_SYSTEM_PATH}" "${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}" && \ + pinfo "Copied kernel from '${KERNEL_SYSTEM_PATH}' to '${MODULE_BUILD_DIR}/${KERNEL_TARGET_NAME}'" + #[ -z "${KERNEL_BUILD_DIR}" ] && KERNEL_BUILD_DIR="${MODULE_BUILD_DIR}" +} + +post_copy() { + : + #mkdir -p "$TARGET_BUILD_DIR/../kernel" + #cp -a "$MODULE_BUILD_DIR/kernel" "$TARGET_BUILD_DIR/../kernel/kernel" || perror "could not copy kernel to remote build dir." +} + diff --git a/remote/modules/kernel-system/module.conf b/remote/modules/kernel-system/module.conf new file mode 100644 index 00000000..0cd03752 --- /dev/null +++ b/remote/modules/kernel-system/module.conf @@ -0,0 +1,3 @@ +REQUIRED_BINARIES="" +REQUIRED_LIBRARIES="" +REQUIRED_DIRECTORIES="" diff --git a/remote/modules/kernel-system/module.conf.opensuse b/remote/modules/kernel-system/module.conf.opensuse new file mode 100644 index 00000000..6bfc2078 --- /dev/null +++ b/remote/modules/kernel-system/module.conf.opensuse @@ -0,0 +1,6 @@ +REQUIRED_INSTALLED_PACKAGES=" + kernel-desktop-devel +" +REQUIRED_CONTENT_PACKAGES=" + kernel-desktop-devel +" diff --git a/remote/modules/kernel-system/module.conf.ubuntu b/remote/modules/kernel-system/module.conf.ubuntu new file mode 100644 index 00000000..4d47b243 --- /dev/null +++ b/remote/modules/kernel-system/module.conf.ubuntu @@ -0,0 +1,6 @@ +REQUIRED_INSTALLED_PACKAGES=" + linux-headers-$(uname -r) +" +REQUIRED_CONTENT_PACKAGES=" + linux-headers-$(uname -r) +" |