diff options
author | Doug Barton <dougb@FreeBSD.org> | 2011-07-10 23:47:03 +0000 |
---|---|---|
committer | Doug Barton <dougb@FreeBSD.org> | 2011-07-10 23:47:03 +0000 |
commit | c2d900ef50216a20996c2fee9c6962f4d494d545 (patch) | |
tree | a7a059daccfcbc53f50a94cb814178fbc157e4f5 /etc | |
parent | 2e32165ce065a92776512e4b7a9e09d86afebd34 (diff) | |
download | src-c2d900ef50216a20996c2fee9c6962f4d494d545.tar.gz src-c2d900ef50216a20996c2fee9c6962f4d494d545.zip |
Make sure we load kernel modules from the same path as the running kernel
Notes
Notes:
svn path=/head/; revision=223917
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/rc.d/kld | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/etc/rc.d/kld b/etc/rc.d/kld index 946ec6951ce1..cd2fbab9c41e 100755 --- a/etc/rc.d/kld +++ b/etc/rc.d/kld @@ -41,11 +41,24 @@ kld_start() { [ -n "$kld_list" ] || return - local _kld + local _kernel_path _module_path _kld _path + + _kernel_path=`$SYSCTL_N kern.bootfile` + _kernel_path="${_kernel_path%/*}" + + _module_path=`$SYSCTL_N kern.module_path` + _module_path="${_module_path#*\;}" + _module_path="$_kernel_path `ltr $_module_path \; ' '`" echo 'Loading kernel modules:' for _kld in $kld_list ; do - load_kld -e ${_kld}.ko $_kld + for _path in $_module_path ; do + if [ -x "${_path}/${_kld}.ko" ]; then + load_kld -e ${_kld}.ko ${_path}/${_kld}.ko + continue 2 + fi + done + warn "${_kld}.ko not found in $_module_path" done } |