From e1f710a498b0da764deb046f0acba51307c476a0 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:45:36 +0100 Subject: [vmware] adapted .build to new kernel stuff --- remote/modules/vmware/vmware.build | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'remote/modules') diff --git a/remote/modules/vmware/vmware.build b/remote/modules/vmware/vmware.build index c1dd77ce..5d91b02d 100644 --- a/remote/modules/vmware/vmware.build +++ b/remote/modules/vmware/vmware.build @@ -21,17 +21,19 @@ fetch_source() { } build() { + # prepare the build directory with the files needed during the chroot cp "${MODULE_DIR}/src/$VMWARE_BUNDLE_FILE" "${MODULE_BUILD_DIR}/$VMWARE_BUNDLE_FILE" cp -r "${MODULE_DIR}/patches" "${MODULE_BUILD_DIR}" + + # sanity check to see if KERNEL_HEADERS_PATH is set and exists + [ -z "${KERNEL_HEADERS_PATH}" -o ! -e "${KERNEL_HEADERS_PATH}" ] && perror "KERNEL_HEADERS_PATH ('"${KERNEL_HEADERS_PATH}"') not found. Was the kernel module built?" pinfo "Installing vmware per chroot..." chroot_run "${MODULE_BUILD_DIR}" <<-EOF - # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot yes | sh /"${VMWARE_BUNDLE_FILE}" --eulas-agreed --console --required - vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmnet - vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${MODULES_DIR}"/kernel/ksrc/include/ vmplayer vmmon - # PS1='\[\e[1;33m\](chroot) \u@\h:\w\$ \[\e[1;32m\]' /bin/bash -norc # un-comment for debugging within chroot + vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmnet $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmnet + vmware-modconfig --console --build-mod -k "${SYS_UTS_RELEASE}" vmmon $(which gcc) "${KERNEL_HEADERS_PATH}/include" vmplayer vmmon EOF # cleanup unneeded files -- cgit v1.2.3-55-g7522 From 7cd3eb5224e61fd7bf150594aac4200b347d45b4 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:45:53 +0100 Subject: [dnbd3] adapted .build to new kernel functions --- remote/modules/dnbd3/dnbd3.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'remote/modules') diff --git a/remote/modules/dnbd3/dnbd3.build b/remote/modules/dnbd3/dnbd3.build index e285788b..2651daac 100644 --- a/remote/modules/dnbd3/dnbd3.build +++ b/remote/modules/dnbd3/dnbd3.build @@ -25,7 +25,7 @@ HEREEND build() { cd "$MODULE_DIR/src/kmod" || perror "Could not CD to standalone dnbd3 kmod dir" - make MODULE_NAME=dnbd3 KDIR="$MODULES_DIR/kernel/ksrc" || perror "Could not compile kernel module" + make MODULE_NAME=dnbd3 KDIR="$KERNEL_HEADERS_PATH" || perror "Could not compile kernel module" mkdir -p "$MODULE_BUILD_DIR/lib/modules/dnbd3" || perror "Could not create lib/modules/dnbd3" mkdir -p "$MODULE_BUILD_DIR/opt/openslx/bin" || perror "Coould not create opt/openslx/bin" cp "$MODULE_DIR/src/kmod/dnbd3.ko" "$MODULE_BUILD_DIR/lib/modules/dnbd3/" || perror "could not cp dnbd3.ko" -- cgit v1.2.3-55-g7522 From 9fef57bae0dfb22157beaea39efe437959c91a35 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:46:13 +0100 Subject: [kernel] adapted .build to new kernel functions --- remote/modules/kernel/kernel.build | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'remote/modules') diff --git a/remote/modules/kernel/kernel.build b/remote/modules/kernel/kernel.build index 78832905..f74403f1 100644 --- a/remote/modules/kernel/kernel.build +++ b/remote/modules/kernel/kernel.build @@ -1,3 +1,29 @@ +get_kernel_version() { + # determine kernel version that will be running in the generated system + if [ -e "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" ]; then + # declare kernel version stuff + declare -rg SYS_UTS_RELEASE=$(grep 'UTS_RELEASE' "$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h" | awk -F '"' '{print $2}') + declare -rg SYS_KERNEL=$(echo "$SYS_UTS_RELEASE" | grep -o -E '^[0-9\.]+') + declare -rg KERNEL_NEW_VERSION="$SYS_UTS_RELEASE" + + # declare path to kernel headers and modules/firmware + declare -rg KERNEL_HEADERS_PATH="$MODULES_DIR/kernel/ksrc" + declare -rg KERNEL_BASE_DIR="$MODULES_DIR/kernel/build" + + else + # TODO handle + perror "'$MODULES_DIR/kernel/ksrc/include/generated/utsrelease.h' does not exist yes." + 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'" + + # check the headers/src path +} + fetch_source() { pdebug "getting kernel sources via git ...." [ -d ./ksrc ] && rm -rf ./ksrc # slightly brutal ... -- cgit v1.2.3-55-g7522 From 9a89fc12fc005a5cf1eba86f4ae302950266f078 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:46:48 +0100 Subject: [nvidia_kernel] adapted .build to new kernel functions --- remote/modules/nvidia_kernel/nvidia_kernel.build | 3 +-- remote/modules/nvidia_kernel/nvidia_kernel.conf | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'remote/modules') diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.build b/remote/modules/nvidia_kernel/nvidia_kernel.build index bde06c60..a1275c70 100644 --- a/remote/modules/nvidia_kernel/nvidia_kernel.build +++ b/remote/modules/nvidia_kernel/nvidia_kernel.build @@ -7,7 +7,6 @@ fetch_source() { build() { local ROOTUPPERDIR="$MODULE_DIR/rootupper" - local KERNELSRCDIR="$MODULES_DIR/kernel/ksrc" # kernel sources local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA" local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA" @@ -29,7 +28,7 @@ build() { chroot_run "$ROOTUPPERDIR" <<-EOF - /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNELSRCDIR" # Do the work! + /NVIDIA/nvidia-installer --no-nouveau-check --no-network --no-backup --no-rpms --no-runlevel-check --no-distro-scripts --no-cc-version-check --no-x-check --no-precompiled-interface --silent --kernel-source-path /"$KERNEL_HEADERS_PATH" # Do the work! # fake success since the installer will exit with an error due to the module not loading properly. exit 0 EOF diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.conf b/remote/modules/nvidia_kernel/nvidia_kernel.conf index 34e66b99..9880100d 100644 --- a/remote/modules/nvidia_kernel/nvidia_kernel.conf +++ b/remote/modules/nvidia_kernel/nvidia_kernel.conf @@ -5,3 +5,6 @@ REQUIRED_URL="http://download.nvidia.com/XFree86/Linux-x86_64/$REQUIRED_VERSION/ REQUIRED_DIRECTORIES=" /lib/modules/nvidia " +REQUIRED_MODULES=" + kernel +" -- cgit v1.2.3-55-g7522 From bfba9c692d8e18008d2035ffaf07f1e789a1122f Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:47:37 +0100 Subject: [vmware] added 'kernel' to REQUIRED_MODULES --- remote/modules/vmware/vmware.conf | 1 + 1 file changed, 1 insertion(+) (limited to 'remote/modules') diff --git a/remote/modules/vmware/vmware.conf b/remote/modules/vmware/vmware.conf index 51e73b85..017d1d5b 100644 --- a/remote/modules/vmware/vmware.conf +++ b/remote/modules/vmware/vmware.conf @@ -1,5 +1,6 @@ REQUIRED_DOWNLOAD_BASE="http://softwareupdate.vmware.com/cds/vmw-desktop/ws/10.0.1/1379776/linux/core/" REQUIRED_TYPE="workstation" +REQUIRED_MODULES="kernel" REQUIRED_DIRECTORIES=" /etc/vmware /usr/sbin -- cgit v1.2.3-55-g7522 From 06bf4e941bc938a4ed3ad987b6fdef0a3e9d6ff0 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:57:01 +0100 Subject: [kernel-system] new module kernel-system provides the kernel from the running system without the need of compiling our own. also installs kernel headers through the package manager to be able to build kernel modules as required by other modules like vmware, dndb3... --- remote/modules/kernel-system/kernel-system.build | 114 +++++++++++++++++++++ remote/modules/kernel-system/kernel-system.conf | 3 + .../kernel-system/kernel-system.conf.opensuse | 6 ++ .../kernel-system/kernel-system.conf.ubuntu | 6 ++ remote/modules/kernel-system/patch-speaker | 6 ++ 5 files changed, 135 insertions(+) create mode 100644 remote/modules/kernel-system/kernel-system.build create mode 100644 remote/modules/kernel-system/kernel-system.conf create mode 100644 remote/modules/kernel-system/kernel-system.conf.opensuse create mode 100644 remote/modules/kernel-system/kernel-system.conf.ubuntu create mode 100755 remote/modules/kernel-system/patch-speaker (limited to 'remote/modules') diff --git a/remote/modules/kernel-system/kernel-system.build b/remote/modules/kernel-system/kernel-system.build new file mode 100644 index 00000000..d542a80d --- /dev/null +++ b/remote/modules/kernel-system/kernel-system.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/kernel-system.conf b/remote/modules/kernel-system/kernel-system.conf new file mode 100644 index 00000000..0cd03752 --- /dev/null +++ b/remote/modules/kernel-system/kernel-system.conf @@ -0,0 +1,3 @@ +REQUIRED_BINARIES="" +REQUIRED_LIBRARIES="" +REQUIRED_DIRECTORIES="" diff --git a/remote/modules/kernel-system/kernel-system.conf.opensuse b/remote/modules/kernel-system/kernel-system.conf.opensuse new file mode 100644 index 00000000..6bfc2078 --- /dev/null +++ b/remote/modules/kernel-system/kernel-system.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/kernel-system.conf.ubuntu b/remote/modules/kernel-system/kernel-system.conf.ubuntu new file mode 100644 index 00000000..4d47b243 --- /dev/null +++ b/remote/modules/kernel-system/kernel-system.conf.ubuntu @@ -0,0 +1,6 @@ +REQUIRED_INSTALLED_PACKAGES=" + linux-headers-$(uname -r) +" +REQUIRED_CONTENT_PACKAGES=" + linux-headers-$(uname -r) +" diff --git a/remote/modules/kernel-system/patch-speaker b/remote/modules/kernel-system/patch-speaker new file mode 100755 index 00000000..5d5a9f9a --- /dev/null +++ b/remote/modules/kernel-system/patch-speaker @@ -0,0 +1,6 @@ +#!/bin/bash + +if ! grep notes "ksrc/drivers/input/misc/pcspkr.c" > /dev/null; then + echo "Patching pc speaker :-)" + sed -i.nomusic -r 's#^static.*int.*pcspkr_event#static const int notes[] = { /*tetris*/ 1319, 988, 1047, 1175, 1047, 988, 880, 880, 1047, 1319, 1175, 1047, 988, 1047, 1175, 1319, 1047, 880, 880, 1175, 1397, 1760, 1568, 1397, 1319, 1047, 1319, 1175, 1047, 988, 988, 1047, 1175, 1319, 1047, 880, 880, /*mario*/ 660, 660, 660, 510, 660, 770, 380, 510, 380, 320, 440, 480, 450, 430, 380, 660, 760, 860, 700, 760, 660, 520, 580, 480, 510, 380, 320, 440, 480, 450, 430, 380, 660, 760, 860, 700, 760, 660, 520, 580, 480, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 500, 760, 720, 680, 620, 650, 1020, 1020, 1020, 380, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 500, 760, 720, 680, 620, 650, 1020, 1020, 1020, 380, 500, 760, 720, 680, 620, 650, 380, 430, 500, 430, 500, 570, 585, 550, 500, 380, 500, 500, 500, 500, 500, 500, 500, 580, 660, 500, 430, 380, 500, 500, 500, 500, 580, 660, 870, 760, 500, 500, 500, 500, 580, 660, 500, 430, 380, 660, 660, 660, 510, 660, 770, 380, /* elise */ 420, 400, 420, 400, 420, 315, 370, 335, 282, 180, 215, 282, 315, 213, 262, 315, 335, 213, 420, 400, 420, 400, 420, 315, 370, 335, 282, 180, 215, 282, 315, 213, 330, 315, 282 };\nstatic int notePos = 0;\n\n&#g;s#\s*if \(value > 20 && value < 32767\)#\n if (value) value = notes[notePos++ % (sizeof(notes) / sizeof(notes[0]))];\n\n&#g' "ksrc/drivers/input/misc/pcspkr.c" +fi -- cgit v1.2.3-55-g7522 From 62f0ad492ba49fc5ecec2f4e30edec7d33e50537 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 24 Mar 2014 13:59:26 +0100 Subject: [kernel-system] added TODO. DO NOT USE YET, WIP! You have been warned. --- remote/modules/kernel-system/TODO | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 remote/modules/kernel-system/TODO (limited to 'remote/modules') diff --git a/remote/modules/kernel-system/TODO b/remote/modules/kernel-system/TODO new file mode 100644 index 00000000..7665abac --- /dev/null +++ b/remote/modules/kernel-system/TODO @@ -0,0 +1,3 @@ +make the modules load in stage31/init since we dont know which ones are compiled within kernel and which need to be loaded explicitly + +Idea: do it like DRM stuff, with pci-ids. -- cgit v1.2.3-55-g7522