89f9350d9e
- Fix dmraid issue bnc#905746 A dracut_dmraid_use_udev.patch - Taken over from SLE12 A fips_add_aesni-intel.patch - Do not touch /run vs /var/run bnc#922676 D 0106-dracut-Enable-converting-of-directory-var-run-var-lo.patch - Update dracut to version 042 Remove these already included or unneeded patches: D dracut_v041_to_HEAD.patch D 0011-Correct-paths-for-openSUSE.patch D 0068-95fcoe-uefi-Test-for-EFI-firmware.patch D 0170-enable-logitech-hidpp.patch Adjust/refresh: M 0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch M 0016-Add-new-s390x-specific-rule-files.patch M 0017-45ifcfg-use-distro-specific-scripts.patch M 0019-40network-Fix-race-condition-when-wait-for-networks.patch M 0020-00warpclock-Set-correct-timezone.patch M 0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch M 0048-40network-Only-enable-network-interfaces-if-explicit.patch M 0053-01fips-fixup-loading-issues.patch M 0056-81cio_ignore-handle-cio_ignore-commandline.patch M 0057-01fips-Include-some-more-hmacs.patch M 0058-dracut-add-warning-when-including-unsupported-module.patch M 0059-99suse-Add-SUSE-specific-initrd-parsing.patch M 0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch M 0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch M 0066-40network-always-start-netroot-in-ifup.sh.patch M 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch M 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch OBS-URL: https://build.opensuse.org/request/show/314510 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=219
126 lines
5.1 KiB
Diff
126 lines
5.1 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-functions.sh | 21 +++++++++++++++++++++
|
|
dracut.8.asc | 11 +++++++++++
|
|
dracut.sh | 5 +++++
|
|
3 files changed, 37 insertions(+)
|
|
|
|
Index: dracut-042/dracut-functions.sh
|
|
===================================================================
|
|
--- dracut-042.orig/dracut-functions.sh 2015-06-11 17:39:47.000000000 +0200
|
|
+++ dracut-042/dracut-functions.sh 2015-06-24 18:02:08.741336717 +0200
|
|
@@ -1436,6 +1436,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() {
|
|
@@ -1498,6 +1509,10 @@ install_kmod_with_fw() {
|
|
fi
|
|
fi
|
|
done
|
|
+
|
|
+ if [[ "$check_supported" = "yes" ]]; then
|
|
+ check_supported_kmod $1
|
|
+ fi
|
|
return 0
|
|
}
|
|
|
|
@@ -1544,6 +1559,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-042/dracut.8.asc
|
|
===================================================================
|
|
--- dracut-042.orig/dracut.8.asc 2015-06-11 17:39:47.000000000 +0200
|
|
+++ dracut-042/dracut.8.asc 2015-06-24 18:02:08.741336717 +0200
|
|
@@ -479,6 +479,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-042/dracut.sh
|
|
===================================================================
|
|
--- dracut-042.orig/dracut.sh 2015-06-11 17:39:47.000000000 +0200
|
|
+++ dracut-042/dracut.sh 2015-06-24 18:02:08.745336946 +0200
|
|
@@ -193,6 +193,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
|
|
--loginstall [DIR] Log all files installed from the host to [DIR]
|
|
--uefi Create an UEFI executable with the kernel cmdline and
|
|
@@ -391,6 +394,7 @@ rearrange_params()
|
|
--long noimageifnotneeded \
|
|
--long early-microcode \
|
|
--long no-early-microcode \
|
|
+ --long check-supported \
|
|
--long reproducible \
|
|
--long loginstall: \
|
|
--long uefi \
|
|
@@ -583,6 +587,7 @@ while :; do
|
|
--printsize) printsize="yes";;
|
|
--regenerate-all) regenerate_all="yes";;
|
|
--noimageifnotneeded) noimageifnotneeded="yes";;
|
|
+ --check-supported) check_supported="yes" ;;
|
|
--reproducible) reproducible_l="yes";;
|
|
--uefi) uefi="yes";;
|
|
--uefi-stub)
|