summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functions12
-rw-r--r--install/autodetect3
2 files changed, 8 insertions, 7 deletions
diff --git a/functions b/functions
index 4f231b1..f0dce80 100644
--- a/functions
+++ b/functions
@@ -251,16 +251,18 @@ list_hookpoints() {
in_array run_cleanuphook "${funcs[@]}" && msg2 "cleanup hook"
}
+modprobe() {
+ command modprobe -d "$_optmoduleroot" -S "$KERNELVERSION" "$@"
+}
+
auto_modules() {
# Perform auto detection of modules via sysfs.
local mods=
- IFS=$'\n' read -rd '' -a mods < \
- <(find /sys/devices -name modalias -exec sort -u {} + |
- # delimit each input by a newline, expanded in place
- xargs -d $'\n' modprobe -d "$MODULEROOT" -qaRS "$KERNELVERSION" |
- sort -u)
+ mapfile -t mods < <(find /sys/devices -name uevent \
+ -exec sort -u {} + | awk -F= '$1 == "MODALIAS" && !_[$0]++')
+ mapfile -t mods < <(modprobe -qaR "${mods[@]#MODALIAS=}")
(( ${#mods[*]} )) && printf "%s\n" "${mods[@]//-/_}"
}
diff --git a/install/autodetect b/install/autodetect
index b3db536..37af3be 100644
--- a/install/autodetect
+++ b/install/autodetect
@@ -10,8 +10,7 @@ build() {
# treat this as an alias, since ext3 might be aliased to ext4. also, as
# of linux 3.9, we can find any filesystem by the alias "fs-$name"
# rather than having to guess at the corresponding module name.
- IFS=$'\n' read -rd '' -a resolved < \
- <(modprobe -d "$_optmoduleroot" -S "$KERNELVERSION" -Ra {fs-,}"$1" 2>/dev/null)
+ mapfile -t resolved < <(modprobe -Ra {fs-,}"$1" 2>/dev/null)
for r in "${resolved[@]}"; do
_autodetect_cache["$r"]=1