summaryrefslogtreecommitdiff
path: root/roles/prepare-dkms/files
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2018-01-06 15:42:38 +0100
committerChristian Pointner <equinox@spreadspace.org>2018-01-06 15:42:38 +0100
commitfce6ae3a7ab036295ab1cceb6b0ebafbe3847d11 (patch)
treea5552dd37978c388b9964f93c9bb205f4b61439c /roles/prepare-dkms/files
parentadded wireguard as dep for kubernetes-net (diff)
greatly improved dkms handling
Diffstat (limited to 'roles/prepare-dkms/files')
-rw-r--r--roles/prepare-dkms/files/my_scw-fetch-kernel-sources29
1 files changed, 29 insertions, 0 deletions
diff --git a/roles/prepare-dkms/files/my_scw-fetch-kernel-sources b/roles/prepare-dkms/files/my_scw-fetch-kernel-sources
new file mode 100644
index 00000000..1b5333b5
--- /dev/null
+++ b/roles/prepare-dkms/files/my_scw-fetch-kernel-sources
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# this is based on:
+# https://github.com/scaleway/kernel-tools#how-to-build-a-custom-kernel-module
+
+set -e
+
+# Determine versions
+arch="$(uname -m)"
+release="$(uname -r)"
+upstream="${release%%-*}"
+local="${release#*-}"
+
+export PATH="${PATH:+$PATH:}/usr/bin:/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
+
+# Get kernel sources
+mkdir -p /usr/src
+rm -f "/usr/src/linux-${upstream}.tar.xz"
+rm -rf "/usr/src/linux-${upstream}"
+wget -O "/usr/src/linux-${upstream}.tar.xz" "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${upstream}.tar.xz"
+tar xf "/usr/src/linux-${upstream}.tar.xz" -C /usr/src/
+ln -fns "/usr/src/linux-${upstream}" /usr/src/linux
+ln -fns "/usr/src/linux-${upstream}" "/lib/modules/${release}/build"
+
+# Prepare kernel
+zcat /proc/config.gz > /usr/src/linux/.config
+printf 'CONFIG_LOCALVERSION="%s"\nCONFIG_CROSS_COMPILE=""\n' "${local:+-$local}" >> /usr/src/linux/.config
+wget -O /usr/src/linux/Module.symvers "http://mirror.scaleway.com/kernel/${arch}/${release}/Module.symvers"
+make -C /usr/src/linux prepare modules_prepare