Automatically using the right kmdl module with the newest kernel

Axel Thimm Axel.Thimm at ATrpms.net
Sat Apr 14 13:48:14 UTC 2007


On Sat, Apr 14, 2007 at 09:28:19AM -0400, Jason Edgecombe wrote:
> Hi,
> 
> I'm doing kickstarts in RHEL5. I have extra repo statements in the 
> kickstart file that point to an updates repo which has RedHat updates 
> including the kernel. I also have a repo with extras like the openafs 
> rpms from atrpms.net.
> 
> How can I have the install automatically pick the right openafs-kmdl rpm 
> to go with the kernel.  Yum can do it if I use the yum-plugin-kdml rpm. 
> Is there any way to activate yum-plugin-kmdl during the install or some 
> other way to pick the right kdml to go with the latest kernel. I would 
> prefer to now have to hard-code the kmdl rpm version in the kickstart file.
> 
> What are my options besides hard-coding the kmdl rpm version or running 
> yum in %post?

You will have to do it in %post. What I do is the following (this is a
script that is called by %post as well as stand alone):

[...]

kernels=`rpm -qf /boot/vmlinuz-* | grep -v "^file .* is not owned by any package"`
uname_rs=`rpm -ql $kernels | grep ^/boot/vmlinuz- | sed -e's,^/boot/vmlinuz-\(.*\)$,\1,'`

[...]

if [ -f $installtree/$packagelist ]; then
    echo === `date`  kmdls
    for kmdl in `cat $installtree/$packagelist | sed -e's,#.*,,' | grep -- -kmdl`; do
        for uname_r in $uname_rs; do
            package=${kmdl}-$uname_r
            echo $package
            rpm -q $package > /dev/null || smartdo install $package
        done
    done
    echo === `date`  non-kmdls
    for package in `cat $installtree/$packagelist | sed -e's,#.*,,' | grep -v -- -kmdl`; do
        rpm -q $package > /dev/null || smartdo install $package
    done
fi

variables are set beforehand to point to proper NFS
locations. $installtree/$packagelist contains a package list for this
host, where kmdls are simply listed as "foo-kmdl". smartdo is a bash
function that feeds smart with packages this host needs to install,
but you could use yum shell instead as well. For reference here is
what it does:

smartdo () {
  verbout smart cmd: "$@"
  echo -e "$@" >&7
  echo "" >&7
}

fd 7 is either a pipe to smart's shell, or a simple file that is piped
into smart at the end of the kickstart's %post.

So at the end of the day the above will ensure that all kmdls of "foo"
have been installed for all kernels, be it the standard kernel, smp,
xen flavours, many different kernel versions or a mix.
-- 
Axel.Thimm at ATrpms.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/kickstart-list/attachments/20070414/7fef6a72/attachment.sig>


More information about the Kickstart-list mailing list