[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#792910: "modprobe: module css:t0 not found in modules.dep" issued during boot



Package: initramfs-tools
Version: 0.120
Severity: minor

During boot of a jessie system on the s390x platform, I noticed the
following error message on the console:

Begin: Loading essential drivers ...
modprobe: module css:t0 not found in modules.dep

The error didn't seem to affect the ability of the system to boot,
but I decided to investigate.  I traced the problem to the
sys_walk_modalias function in /usr/share/initramfs-tools/hook-functions.
The relevant code goes something like this:

   if [ -n "${modalias}" ]; then
           force_load "${modalias}"
   fi

The problem here is that the code does not distinguish between a regular
module alias and what I call a udev alias.  (I'm not sure what the proper
terminology is.  If you know please tell me.)  A udev alias associates
a module with a piece of hardware.  When udev "sees" a piece of hardware
which matches the pattern of the alias, it loads the corresponding module.
Compare, for example, the output of "modinfo ext4", which lists true
aliases, with the output of "modinfo e100", which lists udev aliases.
Most of the udev aliases have asterisks in them.  All of them seem to have
a colon in them.  I suggest the following code to replace the above:

   case "${modalias}" in
           ""|*:*)
                   :
                   ;;
           *)
                   force_load "${modalias}"
                   ;;
   esac

The attached patch file fixes the problem on my system.

-- 
  .''`.     Stephen Powell    <zlinuxman@wowway.com>
 : :'  :
 `. `'`
   `-
--- hook-functions.orig	2015-03-01 16:44:34.000000000 -0500
+++ hook-functions	2015-07-19 21:04:19.587616682 -0400
@@ -222,9 +222,14 @@
 	while [ "${device_path}" != "/sys" ]; do
 		if [ -e "${device_path}/modalias" ]; then
 			modalias=$(cat "${device_path}/modalias")
-			if [ -n "${modalias}" ]; then
-				force_load "${modalias}"
-			fi
+			case "${modalias}" in
+				""|*:*)
+					:
+					;;
+				*)
+					force_load "${modalias}"
+					;;
+			esac
 		fi
 		device_path="$(dirname ${device_path})"
 	done

Reply to: