diff options
author | Márcio Alexandre Silva Delgado <coadde@lavabit.com> | 2013-06-29 01:12:42 -0300 |
---|---|---|
committer | Márcio Alexandre Silva Delgado <coadde@lavabit.com> | 2013-06-29 01:12:42 -0300 |
commit | 4242acd32a96183603ac8fee4772db60db920b56 (patch) | |
tree | 3d05ae8a72b9086ea1b4a8afd2cb36934fd5828b /libre/dkms-libre/dkms.systemd | |
parent | f29b6c6483196ad948582f789330a35726899925 (diff) | |
parent | dd0ca4cf619119415c81395613929ede28021823 (diff) |
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
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: |