68 lines
2.2 KiB
Diff
68 lines
2.2 KiB
Diff
|
From f9708da22345aa11bfa0d5514eefef11f542526b Mon Sep 17 00:00:00 2001
|
||
|
From: John Reiser <jreiser@BitWagon.com>
|
||
|
Date: Mon, 29 Aug 2011 16:03:35 -0700
|
||
|
Subject: [PATCH] instmods: factor out egrep of "FATAL: Module .* not found"
|
||
|
|
||
|
---
|
||
|
dracut-functions | 34 +++++++++++++++++++---------------
|
||
|
1 files changed, 19 insertions(+), 15 deletions(-)
|
||
|
|
||
|
diff --git a/dracut-functions b/dracut-functions
|
||
|
index 6c16cae..507f0c3 100755
|
||
|
--- a/dracut-functions
|
||
|
+++ b/dracut-functions
|
||
|
@@ -820,7 +820,7 @@ install_kmod_with_fw() {
|
||
|
for_each_kmod_dep() {
|
||
|
local _func=$1 _kmod=$2 _cmd _modpath _options _found=0
|
||
|
shift 2
|
||
|
- modprobe "$@" --ignore-install --show-depends $_kmod 2>"$initdir/modprobe.err" | (
|
||
|
+ modprobe "$@" --ignore-install --show-depends $_kmod 2>&$modprobe_stderr | (
|
||
|
while read _cmd _modpath _options; do
|
||
|
[[ $_cmd = insmod ]] || continue
|
||
|
$_func ${_modpath} || exit $?
|
||
|
@@ -829,9 +829,6 @@ for_each_kmod_dep() {
|
||
|
[[ $_found -eq 0 ]] && exit 1
|
||
|
exit 0
|
||
|
)
|
||
|
- egrep -v 'FATAL: Module .* not found.' "$initdir/modprobe.err" | derror
|
||
|
- rm -f "$initdir/modprobe.err"
|
||
|
- return $?
|
||
|
}
|
||
|
|
||
|
# filter kernel modules to install certain modules that meet specific
|
||
|
@@ -934,16 +931,23 @@ instmods() {
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
- local _mpargs _ret=0
|
||
|
- if (($# == 0)); then # filenames from stdin
|
||
|
- local _mod
|
||
|
- while read _mod; do
|
||
|
- inst1mod "${_mod%.ko*}"
|
||
|
+ function instmods_1() {
|
||
|
+ local _ret=0 _mod _mpargs
|
||
|
+ if (($# == 0)); then # filenames from stdin
|
||
|
+ while read _mod; do
|
||
|
+ inst1mod "${_mod%.ko*}"
|
||
|
+ done
|
||
|
+ fi
|
||
|
+ while (($# > 0)); do # filenames as arguments
|
||
|
+ inst1mod ${1%.ko*}
|
||
|
+ shift
|
||
|
done
|
||
|
- fi
|
||
|
- while (($# > 0)); do # filenames as args
|
||
|
- inst1mod ${1%.ko*}
|
||
|
- shift
|
||
|
- done
|
||
|
- return $_ret
|
||
|
+ return $_ret
|
||
|
+ }
|
||
|
+
|
||
|
+ # Capture all stderr from modprobe onto a new fd $modprobe_stderr,
|
||
|
+ # and pipe it into egrep. See REDIRECTION in bash manpage.
|
||
|
+ ( instmods_1 "$@" ) {modprobe_stderr}>&1 \
|
||
|
+ | egrep -v 'FATAL: Module .* not found.' | derror
|
||
|
+ return $?
|
||
|
}
|