summaryrefslogtreecommitdiffstats
path: root/remote/modules/nvidia_kernel
diff options
context:
space:
mode:
authorSimon Rettberg2014-04-01 15:35:26 +0200
committerSimon Rettberg2014-04-01 15:35:26 +0200
commitc189f9ce049cbae19aaad06ae74a642b1e0733d4 (patch)
treea1db240f7adba119bc7469474bed73d3cd23bb58 /remote/modules/nvidia_kernel
parent[vmware/vmchooser] Generalize string cleaning function (diff)
parent[config curitiba] add curitiba config (diff)
downloadtm-scripts-c189f9ce049cbae19aaad06ae74a642b1e0733d4.tar.gz
tm-scripts-c189f9ce049cbae19aaad06ae74a642b1e0733d4.tar.xz
tm-scripts-c189f9ce049cbae19aaad06ae74a642b1e0733d4.zip
Merge branch 'master' of simonslx:openslx-ng/tm-scripts
Diffstat (limited to 'remote/modules/nvidia_kernel')
-rw-r--r--remote/modules/nvidia_kernel/module.build55
-rw-r--r--remote/modules/nvidia_kernel/module.conf (renamed from remote/modules/nvidia_kernel/nvidia_kernel.conf)3
-rw-r--r--remote/modules/nvidia_kernel/nvidia_kernel.build128
3 files changed, 58 insertions, 128 deletions
diff --git a/remote/modules/nvidia_kernel/module.build b/remote/modules/nvidia_kernel/module.build
new file mode 100644
index 00000000..a1275c70
--- /dev/null
+++ b/remote/modules/nvidia_kernel/module.build
@@ -0,0 +1,55 @@
+fetch_source() {
+ mkdir -p src 2>/dev/null
+ cd src || perror "Could not change into src directory."
+ download "$REQUIRED_URL"
+}
+
+build() {
+ local ROOTUPPERDIR="$MODULE_DIR/rootupper"
+
+ local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
+ local NVIDIAEXTRACTDIR="$ROOTUPPERDIR/NVIDIA"
+
+ [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
+ pinfo "Unpacking NVidia archive ($NVIDIA) ..."
+ sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
+
+ pinfo "Ready to chroot - compiling may take some time."
+ pdebug "--- chroot ---------------------------------------------------------------------"
+ pdebug "- -"
+ pdebug "- Notice: This may take a while! -"
+ pdebug "- -"
+ pdebug "- Please keep note the Nvidia installer _will_ complain about -"
+ pdebug "- several warnings and errors. It will do this in any case. -"
+ pdebug "- -"
+ pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
+ pdebug "- -"
+ pdebug "--------------------------------------------------------------------------------"
+
+
+ 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 /"$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
+ pinfo "chroot terminated."
+
+ pinfo "Stripping kernel modules..."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko."
+ strip -g "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" || \
+ pwarning "Could not strip kernel module $ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko."
+
+ pinfo "Copying kernel modules..."
+ local NVIDIA_MODULES="$MODULE_BUILD_DIR/lib/modules/nvidia/"
+ mkdir -p "$NVIDIA_MODULES"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
+ cp "$ROOTUPPERDIR/NVIDIA/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
+
+ rm -rf "$MODULE_BUILD_DIR/NVIDIA"
+}
+
+post_copy() {
+ :
+}
+
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.conf b/remote/modules/nvidia_kernel/module.conf
index 34e66b99..9880100d 100644
--- a/remote/modules/nvidia_kernel/nvidia_kernel.conf
+++ b/remote/modules/nvidia_kernel/module.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
+"
diff --git a/remote/modules/nvidia_kernel/nvidia_kernel.build b/remote/modules/nvidia_kernel/nvidia_kernel.build
deleted file mode 100644
index bf9c6ee6..00000000
--- a/remote/modules/nvidia_kernel/nvidia_kernel.build
+++ /dev/null
@@ -1,128 +0,0 @@
-fetch_source() {
- mkdir -p src 2>/dev/null
- cd src || perror "Could not change into src directory."
- download "$REQUIRED_URL"
-}
-
-build() {
- local KERNELSRCDIR="$MODULE_DIR/../kernel/ksrc" # kernel sources
- local TEMPDIR="$MODULE_DIR/temp"
- local ROOTLOWERDIR="/"
- local ROOTUPPERDIR="$TEMPDIR/rootupper"
- local ROOTBINDDIR="$TEMPDIR/rootbind"
- local ROOTMOUNTDIR="$TEMPDIR/rootmount"
- local BINDMOUNTS="/dev /proc /run /sys"
- local NVIDIA="$MODULE_DIR/src/$REQUIRED_NVIDIA"
- local NVIDIAEXTRACTDIR="$ROOTMOUNTDIR/NVIDIA"
- local NVEXTRACTDIR="/NVIDIA" # This is relative to the chroot.
-
- make_dirs () {
- [ -d "$TEMPDIR" ] && rm -rf $TEMPDIR/*
- mkdir -p "$TEMPDIR" || perror "Could not create base directory for mount directories $TEMPDIR."
- for DIR in "$ROOTUPPERDIR" "$ROOTBINDDIR" "$ROOTMOUNTDIR"; do
- mkdir -p "$DIR" || perror "Could not create directory for mount directory $DIR."
- done
- }
-
- mount_dirs () {
- pinfo "Executing bind- and overlay mounts ..."
- mount -o bind "$ROOTLOWERDIR" "$ROOTBINDDIR" || perror "Could not mount (bind) $ROOTLOWERDIR to $ROOTBINDDIR."
- mount -o remount,ro "$ROOTBINDDIR" || perror "Could not remount $ROOTBINDDIR ro read-only."
- mount -t overlayfs overlayfs -o lowerdir="$ROOTBINDDIR",upperdir="$ROOTUPPERDIR" "$ROOTMOUNTDIR" \
- || perror "Could not mount (overlayfs) $ROOTLOWERDIR, $ROOTUPPERDIR to $BINDDIR."
- pinfo "Executing bind mounts ($BINDMOUNTS) for chroot root dir ..."
- for MOUNT in $BINDMOUNTS; do
- mount -o bind "$MOUNT" "$ROOTMOUNTDIR/$MOUNT" || perror "Could not mount (bind) $MOUNTS into chroot root dir."
- done
- }
-
- # We inject a bashrc to be executed later within the chroot.
- gen_bashrc () {
- local COMMON_OPTIONS=' --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 '
-
- cat >"$ROOTMOUNTDIR/$HOME/.bashrc"<<-EOF
- echo "chroot successful."
- alias ll='ls -alF' # A little convenience for debugging purposes.
- PS1='\[\e[1;33m\]chroot@\h:\w\$ \[\e[1;32m\]' # To recognize the chroot instantly when debugging (yellow on black).
- cd "$NVEXTRACTDIR"
- ./nvidia-installer $COMMON_OPTIONS --kernel-source-path /"$KERNELSRCDIR" # Do the work!
- exit # Out-comment this for debugging: Then script stays in chroot.
-EOF
- }
-
- unpack_nvidia () {
- [ -d "$NVIDIAEXTRACTDIR" ] && rm -rf "$NVIDIAEXTRACTDIR"
- pinfo "Unpacking NVidia archive ($NVIDIA) ..."
- sh "$NVIDIA" --extract-only --target "$NVIDIAEXTRACTDIR" || perror "Could not extract $NVIDIA to $NVIDIAEXTRACTDIR."
- }
-
- umount_dirs () {
- # Let's tidy the place, or at least the mounts: Otherwise these would stack up, and we do not like that, don't we.
- for MOUNT in $BINDMOUNTS; do
- umount "$ROOTMOUNTDIR/$MOUNT" || pwarning "Could not unmount $ROOTMOUNTDIR/$MOUNT!"
- done
- umount "$ROOTMOUNTDIR" || pwarning "Could not unmount $ROOTMOUNTDIR!"
- umount "$ROOTBINDDIR" || pwarning "Could not unmount $ROOTBINDDIR!"
- }
-
- strip_modules () {
- strip -g "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko."
- strip -g "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko" || \
- pwarning "Could not strip kernel module $ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko."
- }
-
- copy_modules () {
- local NVIDIA_MODULES="$MODULE_DIR/build/lib/modules/nvidia/"
- mkdir -p "$NVIDIA_MODULES"
- cp "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/nvidia.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia.ko!"
- cp "$ROOTUPPERDIR/$NVEXTRACTDIR/kernel/uvm/nvidia-uvm.ko" "$NVIDIA_MODULES" || perror "Could not copy nvidia-uvm.ko!"
- }
-
- clean_temp () {
- rm -rf "$TEMPDIR" || perror "Could not clean/delete temp directory $TEMPDIR."
- }
-
- # Main stuff
- pinfo "Generating temporary directories ..."
- make_dirs
- pinfo "Mounting directories ..."
- mount_dirs
-
- pinfo "Injecting .bashrc into later chroot ..."
- gen_bashrc
-
- pinfo "Unpacking NVidia-Installer ..."
- unpack_nvidia
-
- pinfo "Ready to chroot - compiling may take some time."
- pdebug "--- chroot ---------------------------------------------------------------------"
- pdebug "- -"
- pdebug "- Notice: This may take a while! -"
- pdebug "- -"
- pdebug "- Please keep note the Nvidia installer _will_ complain about -"
- pdebug "- several warnings and errors. It will do this in any case. -"
- pdebug "- -"
- pdebug "- This does _not_ mean the kernel module compilation was unsuccessful! -"
- pdebug "- -"
- pdebug "--------------------------------------------------------------------------------"
- chroot "$ROOTMOUNTDIR"
- pinfo "chroot terminated."
-
- pinfo "Unmount directories."
- umount_dirs
-
- pinfo "Stripping kernel modules."
- strip_modules
-
- pinfo "Copying kernel modules."
- copy_modules
-
- pinfo "Cleaning / deleting temp directories."
- clean_temp
-}
-
-post_copy() {
- :
-}
-