Today: But what if I need a new kernel?
A driver update (DUD) can of course update a single driver. But if that’s not enough and you need a whole new kernel to run an installation?
There are two parts to solve:
- replace the kernel used during installation and
- get the new kernel installed
1. Replace the kernel used during installation
For this it’s important to know which kernel packages you’ll actually need. Typically it will be
kernel-firmware. But older SUSE distributions (SLE 11 comes to mind) had the kernel packages split into
kernel-default-base – you’ll need them both.
To make things confusing, modern SUSE distributions also have
kernel-default-base – but it’s an alternative to
kernel-default. In this case we don’t need it.
If unsure, check
kernel-default. If it contains the actual kernel (e.g.
/boot/vmlinuz) then you don’t need
On some architectures modules are also taken from
xen-kmp-default. If that’s important for you, you can add this package to the kernel list as well.
In fact you can add any number of kernel packages or kmps you like.
In the past, sometimes a different kernel flavor was used. For example PowerPC had
kernel-ppc64 for a while. Simply use the flavor you need.
It’s a good idea to gather all the kernel rpms into a single directory for easier use:
> mkdir k > cp kernel-default.rpm kernel-firmware.rpm k > cp kernel-default-base.rpm k # only if needed # add any kernel-related rpms you need
Then, take your SUSE installation iso and run
> mksusecd --create new.iso \ --kernel k/* -- \ original_dvd1.iso
Note that the
--kernel option accepts a variable number of arguments, so you have to add an isolated
-- to terminate the argument list properly.
The output could look like this:
> mksusecd --create new.iso \ --kernel k/* -- \ SLES-11-SP4-DVD-ppc64-GM-DVD1.iso kernel version: 3.0.101-63-ppc64 --> 3.0.101-94-ppc64 CHRP bootable (ppc64) building: 100% calculating sha1...
The command above will actually get the list of required modules from the old installation iso. If you are missing some driver or the new kernel comes with some additional driver, the module will not be added to the new iso.
But there’s the
--modules option. It will add the listed modules together with any implicitly required modules via module dependencies.
For example, let’s add the
airport wifi-module to our PowerPC iso:
> mksusecd --create new.iso \ --kernel k/* \ --modules airport -- \ SLES-11-SP4-DVD-ppc64-GM-DVD1.iso kernel version: 3.0.101-63-ppc64 --> 3.0.101-94-ppc64 kernel modules added: airport, cfg80211, orinoco CHRP bootable (ppc64) building: 100% calculating sha1...
As you can see, it automatically adds
cfg80211 as well.
2. Get the new kernel installed
This is relatively simple. A driver update can do this:
> mkdud --create foo.dud \ --dist sle11 \ --install repo \ k/*
This creates a driver update for SLE 11 (which also applies to SP4) and the kernel rpms are installed via an auto-generated add-on repo (
Now we have the driver update that installs our kernel packages. But how do we use it?
We integrate it into our iso above!
> mksusecd --create new.iso \ --initrd foo.dud \ --kernel k/* -- \ SLES-11-SP4-DVD-ppc64-GM-DVD1.iso
mksusecd has an
--initrd option that directly accepts driver updates and integrates them into the iso.
3. Can I have a choice?
Maybe you just want to test this new kernel or sometimes need the old one and sometimes the new one. Can you make an installation iso that lets you choose the kernel?
Oh yes! 🙂
> mksusecd --create new.iso \ --add-entry 3.0.101-94 \ --initrd foo.dud \ --kernel k/* -- \ SLES-11-SP4-DVD-ppc64-GM-DVD1.iso
This does not replace the old kernel but adds a new boot entry
Installation - 3.0.101-94.
So you can install with old or the new kernel.
You can skip to the end and leave a response. Pinging is currently not allowed.