Red Hat Linux 9 kernel from Severn (beta)

Red Hat are busy working on the new beta, code named Severn, which is going be the first officially released version of Fedora. They have released an updated version of the Linux kernel, based on 2.4.22 and with updates from the 2.4.23-preX series. Important things like ACPI have been included. If you'd like to try this kernel out on Red Hat Linux 9, you can download this patch and build the kernel yourself.

In order to apply this patch, you'll have to obtain this RPM from one of the mirrors:

kernel-2.4.22-1.2087.nptl.src.rpm

Once you install the above RPM, the source for building the kernels will be in /usr/src/redhat.

This patch includes includes variable HZ setting, which defaults to 1000. I did not apply preemptive kernel patch here, mostly because it would be a lot of work and my tests have shown that with HZ=1000 interactivity seemed quite OK.

That patch is here:

To patch, run this from the /usr/src/redhat directory:

bunzip2 -c /path/to/linux-2.4.22-Xrxv-source-2087.patch.bz2 | patch -p1

To build the kernels, you can run this from /usr/src/redhat/SPECS directory:

rpmbuild --sign -ba --target i386,i586,i686,p4,athlon kernel-2.4.spec

Yes, you can build a Pentium 4 specific kernel too! This will, of course, take huge amount of time, so be prepared to do something else in the meantime. The --sign option is only necessary if you want to sign those kernels with a GPG key. Also, list only the architectures that you want to build, of course.

Regular procps package shipped with Red Hat Linux 9 won't work properly with this kernel, due to HZ changes, but you can obtain a newer version that should be fine from here (2.0.16 or better should be OK):

Alternatively, read on and download my own package that has HZ=1000 hard coded.

I have tested this kernel with my HP-ZE4201 notebook and it seems to work fine. To enable ACPI, you have to add acpi=on to your grub.conf file, in the kernel line. Also, you'll have to force load ACPI modules in order to get ac, battery, fan, button, thermal and processor support. Something like this placed in /etc/rc.d/rc.local file:

/sbin/modprobe -q ac 2>/dev/null
/sbin/modprobe -q battery 2>/dev/null
/sbin/modprobe -q fan 2>/dev/null
/sbin/modprobe -q button 2>/dev/null
/sbin/modprobe -q thermal 2>/dev/null

should do the trick. The processor module will be pulled in by the thermal module.

WARNING: DO NOT REMOVE YOUR RED HAT SUPPLIED KERNEL! INSTALL THIS KERNEL WITH rpm -ivh INSTEAD!

Some older patches for Severn kernel are here:

procps package for HZ=1000

After running Red Hat Linux 9 kernel with my interactivity patch, I have noticed that system monitoring tools like top didn't work as expected. At one point I had 3 processes using 99.9% of the CPU, at the same time, on a single CPU machine. How's that for efficiency ;-)

Seriously, the problem is that HZ detection in procps doesn't detect that the HZ setting is 1000, so some of the calculations are performed with HZ 100. This then results in unrealistic process statistics.

To avoid the issue, I have hardcoded Hertz=1000 into the appropriate file if the release of the kernel contains the string "rxv" (i.e. command uname -r). If you're using HZ other than 1000, please review the patch from the source RPM, modify it and rebuild the binary.

The downloads are here:

My GPG key to verify the above RPMS:

Red Hat Linux 9 kernel interactivity patch

The Linux kernel shipped with Red Hat Linux 9 (and the updates) is based on stock kernel 2.4.20, plus a series of selected updates. Some of those updates are quite useful on the desktop (low latency patches, O1 scheduler), but there are some others that complete the set (e.g. preemptive kernel patch), which are missing.

So, this patch, based in part on work by Con Kolivas (CK, http://users.on.net/~ckolivas/kernel/) and in part on the preemptive patch by Robert M. Love (RML, http://www.kernel.org/pub/linux/kernel/people/rml/preempt-kernel/v2.4/), includes the following:

Please note that most of the above patches were modified in order to apply them to Red Hat Linux 9 kernel, which is itself heavily patched. Also, Red Hat supplied patches were modified as well. Rik van Riel's VM (RMAP), which is part ot the Red Hat supplied kernel (but not part of the stock kernel) has been ripped out. RMAP VM is not compatible with Andrea's VM. I was looking hard into 2.5.68 preemptive related stuff (mostly file kernel/sched.c), because that part of the kernel 2.4.20-20.9 from Red Hat looks a lot like 2.5. Some of the modifications in all these patches were not trivial, so there could be quite significant errors. Also, Red Hat has recently included some of the stuff that CK patches used to provide, so those parts from CK patches have been removed.

Also, Desktop Tuning patch was changed to be more agressive: HZ is set to 1000 and latencies are really, really low. If you don't like that, you can either change the patch or set latencies through /proc filesystem and using elvtune. It is a good idea to get the procps packages for HZ=1000 setting, because if you don't, your process monitoring tools might get a bit crazy ;-)

WARNING: IF THIS PATCH DOESN'T COMPILE, DOESN'T WORK, EATS THE CONTENT OF YOUR HARD DISK OR SETS YOUR COMPUTER ON FIRE, DON'T COME CRYING TO ME. THERE IS NO WARANTY OF ANY KIND!

Still with me? OK, the patches can be had in two forms. The first one applies to the installed kernel-source-2.4.20-20.9.i386.rpm source tree (i.e. /usr/src/linux-2.4.20-20.9). This is quite simple to do and I recommend this method. That patch is here:

The second option is a set of changes for the source RPM (i.e. kernel-2.4.20-20.9.src.rpm). Now, to get this going, you'll have to install the mentioned RPM, apply the patch to Red Hat source tree (i.e. /usr/src/redhat) and then build source and binary RPM yourself. This takes quite a bit of time, but if you insist, here is that patch too:

Please inspect the kernel-2.4.spec file before proceeding.

I don't intend to provide the actual RPMS because they are simply too big.

If you still running the older kernels, 2.4.20-9, 2.4.20-13.9, 2.4.20-18.9 or 2.4.20-19.9 (you shouldn't, but hey, do what you like :-), here are the original patches for them:

Note that the above patches might be based on slightly different versions of CK and ACPI patches, available at the time of their creation.

PPP RPMS with PPPoE support

These packages enable PPPoE support in PPP, something that's very useful for connecting to various ADSL providers. Note that these packages rely on kernel (that is Linux kernel 2.4.x) PPPoE support, so you'll have to compile that in or build as modules. These should work on RedHat Linux 7.3. As the matter of fact, they are based on RedHat PPP RPM for 7.3. One of the main features that I wanted to have is to be able to reconnect when the ISP drops the PPP connection and these packages seem to do that quite well. The PPPoE support from the current PPP CVS version (2.4.2b1) do not seem to work very well in that area.

This is what should be in /etc/ppp/options file:

plugin /usr/lib/pppd/plugins/pppoe.so

And something like this should be put into /etc/ppp/options.ethX file:

linkname pppX
name username@provider
mtu 1492
mru 1492
noipdefault
defaultroute
persist
lcp-echo-failure 3
lcp-echo-interval 60
holdoff 10

Make sure you have TCPMSS support in your kernel and iptables rule that enables it, if you intend to use the machine as a router. A nice piece of documentation on how to use PPPoE with kernel support is here:

UPDATE 16 May 2003: The GPG key used to sign the packages below has been changed. Please make sure you verify the packages against the new public key.

Here are the downloads:

My GPG key to verify the above RPMS: