[Yum-devel] how to require a kernel module

Jack Neely jjneely at ncsu.edu
Tue Mar 9 22:55:09 UTC 2010


On Mon, Mar 08, 2010 at 01:30:34PM +0100, Farkas Levente wrote:
> hi,
> on rhel/centos-5w we've a lot's of kernel module (thanks to the elrepo)  
> and we can build our own on a nearly standardized way for rhel/centos.  
> but i now run into a problem how to add a require kmod line into another  
> package's spec file. it seems to very easy, if i've got package x.spec:
> Requires: y-kmod
> first question whether y-kmod or kmod-y (tha package name or the virtual  
> provides)? and if we go a bit further and have a i386 machine with 4gb  
> ram which install by default kernel-PAE and like to install x into that  
> machine i wish to pull (yum pull) kmod-x-PAE and not kmod-x since it  
> can't be used on a PAE kernel. what's more if x pull kmod-y that also  
> pull the none PAE kernel too which is also not a good think. there are  
> two plugins in yum-utils yum-kernel-module and yum-fedorakmod, but none  
> of the seems to working (yum-fedorakmod instal the proper kmod-x-PAE too  
> if i set installforallkernels=1, but still install the non PAE one and  
> the none PAE kernel too).
>
> so what's the good and proper solution to require y kernel module into  
> package x (in a way that works with yum on all kernel variant)?
>
> i even like to modify any of the yum-kernel-module or yum-fedorakmod to  
> be able to use, but the problem is that i can't write conditional  
> requires in a package spec file which depend on the runtime kernel  
> variant:-(
>
> if there would be some tricky yum plugins which do this:
> - if yum needs to install a package
> - check whether the package provide kabi-module or kernel-module. if yes  
> it's a kernel module.
> - if it's a kernel module than check the currently running kernel (and  
> optionally all installed kernel) and install the proper kernel module  
> variant. eg. if the running kernel is:
>   - kernel-2.6.18-164.11.1.el5 then install kmod-ocfs2
>   - kernel-PAE-2.6.18-164.11.1.el5 then install kmod-ocfs2-PAE
>
> anybody has any solution to this?
> thanks in advance.
> regards.
>

For RHEL5-ish systems still using the kmod v1 standard, you need to
require "foo-kmod".  That's the virtual provides that all the variants
should provide.  

Yum/RPM don't know how to properly dep solve that without the
yum-fedorakmod plugin.  Yes, the installforallkernels=1 will make sure
that the other matching variants are installed for each kernel.

However, if kmod-foo gets in the transaction set, the fedorakmod plugin
doesn't know to remove it if the normal kernel package isn't installed.
Which probably means the normal kernel package gets sucked into the
transaction set as well in some cases.

Although, fair warning:  There is also the kmod v2 standard used by the
rpmfusion folks and friends for current Fedora releases which handles
this a little better.  (I've not yet fixed fedorakmod to work with their
corner cases so currently it doesn't work for kmod v2.  However, kmod v2
is much more functional with out yum plugins.)

Jack Neely

-- 
Jack Neely <jjneely at ncsu.edu>
Linux Czar, OIT Campus Linux Services
Office of Information Technology, NC State University
GPG Fingerprint: 1917 5AC1 E828 9337 7AA4  EA6B 213B 765F 3B6A 5B89


More information about the Yum-devel mailing list