SVN: geninitrd/trunk/geninitrd
arekm
arekm at pld-linux.org
Thu Jun 5 12:46:46 CEST 2008
Author: arekm
Date: Thu Jun 5 12:46:45 2008
New Revision: 9795
Modified:
geninitrd/trunk/geninitrd
Log:
Autoload possibly needed firmware but don't fail if it's not found. Warnings are prefixed with WARNING string.
Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd (original)
+++ geninitrd/trunk/geninitrd Thu Jun 5 12:46:45 2008
@@ -115,11 +115,11 @@
}
warn() {
- msg "$*" >&2
+ msg "WARNING: $*" >&2
}
debug() {
- [ -n "$verbose" ] && warn "$*"
+ [ -n "$verbose" ] && msg "$*" >&2
}
# aborts program abnormally
@@ -310,6 +310,11 @@
done
}
+find_firmware() {
+ local module="$1"
+ echo -n $(modinfo -k $kernel -F firmware $module 2>/dev/null | xargs)
+}
+
findmodule() {
local skiperrors=""
local modName=$1
@@ -936,6 +941,7 @@
firmware_install_module() {
local module="$1"
local firmware_files="$2"
+ local force="$3"
debug "Adding Firmwares ($firmware_files) to initrd for module $module"
# firmware not yet installed
@@ -952,7 +958,15 @@
fi
for firmware in $firmware_files; do
- inst /lib/firmware/$firmware /lib/firmware/$firmware
+ if [ ! -f "/lib/firmware/$firmware" ]; then
+ if [ -n "$force" ]; then
+ die "firmware file /lib/firmware/$firmware doesn't exist."
+ else
+ warn "firmware file /lib/firmware/$firmware doesn't exist. Skipping."
+ fi
+ else
+ inst /lib/firmware/$firmware /lib/firmware/$firmware
+ fi
done
mount_sys
@@ -996,12 +1010,20 @@
if [ "$sleep_var" ]; then
s="$s and $sleep_var usleep"
fi
- warn "Loading module [$module]$s"
+ debug "Loading module [$module]$s"
fi
if [ -n "$firmware_var" ]; then
- firmware_install_module "$module" "$firmware_var"
+ firmware_install_module "$module" "$firmware_var" "force=yes"
+ else
+ firmware_files=$(find_firmware "$module")
+ if [ -n "$firmware_files" ]; then
+ for file in $firmware_files; do
+ firmware_install_module "$module" "$file"
+ done
+ fi
fi
+
echo "$insmod /lib/modules/$kernel/$modpath $options" | add_linuxrc
if [ -n "$sleep_var" ]; then
echo "usleep $sleep_var" | add_linuxrc
More information about the pld-cvs-commit
mailing list