054341caad
Update to dracut-044 and several cleanups. Works on tumbleweed standard installation and NFS root. OBS-URL: https://build.opensuse.org/request/show/346361 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=244
126 lines
4.9 KiB
Diff
126 lines
4.9 KiB
Diff
From 5473e4b5d8d9bbf9bd995dff815647de0ed1b30b Mon Sep 17 00:00:00 2001
|
|
From: Jeff Mahoney <jeffm@suse.com>
|
|
Date: Thu, 12 Jun 2014 09:30:01 +0200
|
|
Subject: dracut: add warning when including unsupported modules
|
|
|
|
With self-built kernels (often used for debugging by both internal and
|
|
external development), it's a common mistake to not set up
|
|
Module.supported properly. As a result, modules can end up without the
|
|
supported tag. "make install" will happily build an initramfs, via
|
|
dracut, that will not boot due to the kernel refusing to load the
|
|
unsupported modules.
|
|
|
|
This patch adds a --check-supported option to check whether all modules
|
|
added to the initramfs are marked supported and warn if they are not.
|
|
It will not cause the initramfs creation to fail.
|
|
|
|
The option is intended to be called via /sbin/installkernel, which will
|
|
check to see if the kernel has CONFIG_SUSE_KERNEL_SUPPORTED before using
|
|
the option.
|
|
|
|
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
|
---
|
|
dracut-init.sh | 21 +++++++++++++++++++++
|
|
dracut.8.asc | 11 +++++++++++
|
|
dracut.sh | 5 +++++
|
|
3 files changed, 37 insertions(+)
|
|
|
|
Index: dracut-044/dracut-init.sh
|
|
===================================================================
|
|
--- dracut-044.orig/dracut-init.sh
|
|
+++ dracut-044/dracut-init.sh
|
|
@@ -849,6 +849,17 @@ for_each_module_dir() {
|
|
done
|
|
}
|
|
|
|
+check_supported_kmod() {
|
|
+ kmod=$1
|
|
+ supported=$(modinfo -k $kernel -F supported $kmod 2>/dev/null)
|
|
+ case "$supported" in
|
|
+ yes|external) ;;
|
|
+ *) dwarn "Module \"$(basename $kmod)\" is unsupported. This may cause" \
|
|
+ "problems while booting." ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+
|
|
# Install a single kernel module along with any firmware it may require.
|
|
# $1 = full path to kernel module to install
|
|
install_kmod_with_fw() {
|
|
@@ -910,6 +921,10 @@ install_kmod_with_fw() {
|
|
fi
|
|
fi
|
|
done
|
|
+
|
|
+ if [[ "$check_supported" = "yes" ]]; then
|
|
+ check_supported_kmod $1
|
|
+ fi
|
|
return 0
|
|
}
|
|
|
|
@@ -956,6 +971,12 @@ dracut_kernel_post() {
|
|
inst_simple "$_modpath" "/lib/modules/$kernel/${_destpath}" || exit $?
|
|
done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
|
|
fi
|
|
+
|
|
+ if [[ $check_supported ]]; then
|
|
+ while read _modpath; do
|
|
+ check_supported_kmod $_modpath
|
|
+ done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep"
|
|
+ fi
|
|
) &
|
|
_pid=$(jobs -p | while read a || [ -n "$a" ]; do printf ":$a";done)
|
|
_pid=${_pid##*:}
|
|
Index: dracut-044/dracut.8.asc
|
|
===================================================================
|
|
--- dracut-044.orig/dracut.8.asc
|
|
+++ dracut-044/dracut.8.asc
|
|
@@ -490,6 +490,17 @@ will not be able to boot.
|
|
Specifies the kernel image, which to include in the UEFI executable. The default is
|
|
_/lib/modules/<KERNEL-VERSION>/vmlinuz_ or _/boot/vmlinuz-<KERNEL-VERSION>_
|
|
|
|
+**--check-supported**::
|
|
+ The kernel may be configured to check whether a module is
|
|
+ supported by the vendor before allowing it to be loaded. On these
|
|
+ systems, it's possible to generate an initramfs image that will
|
|
+ fail to boot due to unsupported modules being refused. This
|
|
+ option enables a check that will issue a warning if a module built
|
|
+ without the support option enabled is encountered while building
|
|
+ the image. Use of this option assumes that the kernel requires
|
|
+ supported modules and will issue a warning on every module if used
|
|
+ otherwise.
|
|
+
|
|
FILES
|
|
-----
|
|
_/var/log/dracut.log_::
|
|
Index: dracut-044/dracut.sh
|
|
===================================================================
|
|
--- dracut-044.orig/dracut.sh
|
|
+++ dracut-044/dracut.sh
|
|
@@ -203,6 +203,9 @@ Creates initial ramdisk images for prelo
|
|
--printsize Print out the module install size
|
|
--sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module)
|
|
--logfile [FILE] Logfile to use (overrides configuration setting)
|
|
+ --check-supported Check to ensure that modules are marked supported when
|
|
+ using a kernel that is configured to check the
|
|
+ support status of a module before loading.
|
|
--reproducible Create reproducible images
|
|
--no-reproducible Do not create reproducible images
|
|
--loginstall [DIR] Log all files installed from the host to [DIR]
|
|
@@ -360,6 +363,7 @@ rearrange_params()
|
|
--long noimageifnotneeded \
|
|
--long early-microcode \
|
|
--long no-early-microcode \
|
|
+ --long check-supported \
|
|
--long reproducible \
|
|
--long no-reproducible \
|
|
--long loginstall: \
|
|
@@ -556,6 +560,7 @@ while :; do
|
|
--printsize) printsize="yes";;
|
|
--regenerate-all) regenerate_all="yes";;
|
|
--noimageifnotneeded) noimageifnotneeded="yes";;
|
|
+ --check-supported) check_supported="yes" ;;
|
|
--reproducible) reproducible_l="yes";;
|
|
--no-reproducible) reproducible_l="no";;
|
|
--uefi) uefi="yes";;
|