Bug 1108166
Summary: | weak-modules fails to update initramfs for weak linked kernels | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Phil Perry <phil> |
Component: | kmod | Assignee: | David Shea <dshea> |
Status: | CLOSED ERRATA | QA Contact: | Shaohui Deng <shdeng> |
Severity: | high | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.0 | CC: | ajb, ccui, dag, lilu, pasteur, phil, toracat |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | kmod-20-5 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-11-19 03:31:00 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Phil Perry
2014-06-11 13:47:33 UTC
The weak-modules script isn't updating the initramfs because it's only comparing the list of modules before and after to determine whether to install a new initramfs. This can be fixed to look for blacklist files, but it also reveals a chicken-and-egg problem with installing blacklist files in kmod packages. dracut uses the currently loaded modules to determine which kernel modules to include in an initramfs. In the case of the nvidia driver, the nouveau driver will usually be loaded before the kmod package is installed, so the nouveau driver will be included in the updated initramfs and the nvidia driver will not (because it's not loaded). So, regardless of what weak-modules is doing, you'll probably want to add an explicit dracut invocation to the kmod package's %post, using --add-drivers nvidia --omit-drivers nouveau. Hi David, Thank you for your comments. Having had the chance to review the weak-modules script more closely, I'm still not overly clear why the initramfs of the "release kernel" (the kernel the module is built against) gets updated whereas the initramfs for other kABI compatible kernels are not updated. i.e, why dracut is run for the release kernel as the list of modules hasn't changed?? If you can also check blacklists (/usr/lib/modprobe.d/*.conf) for kABI compatible kernels and update the initramfs where a new blacklist exists then I think that would be beneficial (and would resolve this issue). From a packaging perspective, I'm not sure we want to be adding or removing drivers from the initramfs, as I don't believe it's necessary. If the blacklist is correctly incorporated into the initramfs image then that should be sufficient to stop the module loading, which is all we require from a packaging POV. BTW, another example of a package that blacklists another driver is kmod-r8168 Realtek ethernet driver: http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/kmod-r8168-8.038.00-1.el7.elrepo.x86_64.rpm In this case the package provides an alternative driver to the ubiquitous r8169 kernel driver which needs to be blacklisted (or otherwise prevented from loading). Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2015-2119.html |