#!/bin/sh # # dkms_autoinstaller - A service to automatically install DKMS modules for new kernels. # # chkconfig: 345 04 04 # description: Compiles and install kernel modules automatically for new \ # kernels at boot. ### BEGIN INIT INFO # Provides: dkms_autoinstaller dkms # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Required-Start: $local_fs # Required-Stop: $local_fs # Short-Description: DKMS kernel modules installer service # Description: A service to automatically install DKMS modules for new kernels. ### END INIT INFO if [ -f /lib/lsb/init-functions ]; then . /lib/lsb/init-functions elif [ -f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions fi exec="/usr/sbin/dkms" prog=${exec##*/} test -f $exec || exit 0 [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog uname_s=$(uname -s) _get_kernel_dir() { KVER=$1 case ${uname_s} in Linux) DIR="/lib/modules/$KVER/build" ;; GNU/kFreeBSD) DIR="/usr/src/kfreebsd-headers-$KVER/sys" ;; esac echo $DIR } _check_kernel_dir() { DIR=$(_get_kernel_dir $1) case ${uname_s} in Linux) test -e $DIR/include ;; GNU/kFreeBSD) test -e $DIR/kern && test -e $DIR/conf/kmod.mk ;; *) return 1 ;; esac return $? } case "$1" in start) if [ -n "$2" ]; then kernel="$2" else kernel=$(uname -r) fi if [ -f /etc/dkms/no-autoinstall ]; then log_action_msg "Automatic installation of modules has been disabled." elif ! _check_kernel_dir $kernel; then log_action_msg "Automatic installation of modules for kernel $kernel was skipped since the kernel headers for this kernel do not seem to be installed." else dkms autoinstall --kernelver $kernel res=$? fi ;; stop|restart|force-reload|status|reload) # There is no stop action, this and the 04 priority during stop is # added to make RHEL chkconfig happy. # Ignore others on debian/ubuntu too ;; *) echo "Usage: $0 {start}" exit 2 esac