diff options
author | Nicolás Reynolds <fauno@parabola.nu> | 2013-07-03 10:33:32 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@parabola.nu> | 2013-07-03 10:33:32 -0300 |
commit | 8647aee53c2f9f5458e57fe7ac212da40a555594 (patch) | |
tree | b99a8fbc859d18a244ea5ac496083e66ffaa330d /libre/dkms-libre/dkms.systemd | |
parent | 3a14409a347f3423bf2a4ab847edff625b671e20 (diff) | |
parent | 0a5c7083d197551290bc762f4ba90210cb733a5e (diff) | |
download | abslibre-8647aee53c2f9f5458e57fe7ac212da40a555594.tar.gz abslibre-8647aee53c2f9f5458e57fe7ac212da40a555594.tar.bz2 abslibre-8647aee53c2f9f5458e57fe7ac212da40a555594.zip |
Merge branch 'master' of vparabola:abslibre
Conflicts:
java/not-working/java-bnd/PKGBUILD
libre/parabola-keyring/PKGBUILD
Diffstat (limited to 'libre/dkms-libre/dkms.systemd')
-rw-r--r-- | libre/dkms-libre/dkms.systemd | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libre/dkms-libre/dkms.systemd b/libre/dkms-libre/dkms.systemd new file mode 100644 index 000000000..03e6bfe97 --- /dev/null +++ b/libre/dkms-libre/dkms.systemd @@ -0,0 +1,61 @@ +#!/bin/bash + +. /etc/default/dkms + +# list dkms modules for the current running kernel +list_dkms_modules() { + shopt -s nullglob + declare -a DKMS_MOULES + # dkms status needs uname -r to list correctly intalled version for current kernel + local modules_path=($(dkms status -k "$(uname -r)"|sed -rn 's#(.*), (.*), (.*), (.*): installed#\1/\2/\3/\4#p')) + for p in "${modules_path[@]}"; do + for m in /var/lib/dkms/"$p"/module/*.ko{,gz}; do + m=${m##*/} + m=${m%.gz} + m=${m%.ko} + DKMS_MODULES+=("$m") + done + done +} + +# load installed kernel modules for the current kernel version +load_dkms_modules() { + local ret=0 + list_dkms_modules + for m in "${DKMS_MODULES[@]}"; do + modprobe "$m" + ret+=$? + done + return $ret +} + +# unload installed kernel modules for the current kernel version +unload_dkms_modules() { + list_dkms_modules + # ask for removal + for m in "${DKMS_MODULES[@]}"; do + modprobe --remove --quiet "$m" + done + # check modules are unloaded + # sometimes modprobe -r fail but modules are removed + for m in "${DKMS_MODULES[@]}"; do + [[ -e /sys/modules/$m ]] && return 1 + done + return 0 +} + +case "$1" in + start) + dkms autoinstall -k "$(uname -r)" + [[ $LOAD =~ [Yy][Ee][Ss] ]] && load_dkms_modules + ;; + stop) + [[ $UNLOAD =~ [Yy][Ee][Ss] ]] && unload_dkms_modules + ;; + *) + echo "usage: $0 {start|stop}" >&2 + ;; +esac + +: +# vim:set ts=2 sw=2 ft=sh et: |