Linux Step By Steps

2.4.x - 2.5.x Kernel Migration

Written by Bob Raymond on 25-March-2003.

NOTE: this SxS is written with the assumption that you are comfortable and familiar with building 2.4.x kernels.  If you are not, please work on a 2.4.x first with these instructions.

Distribution: Gentoo 1.4
Hardware: Athlon TBird 1.4, 512MB PC3200 DDR

There are several convincing reasons why one might try out the 2.5.x series of kernels.  I did so out of necessity, as I purchased a motherboard in October that had the Highpoint 374 IDE RAID controller, which didn't seem to work very well with the latest 2.4.x series of kernels. In October, there really wasn't too much difference between setting up a 2.5 kernel and a 2.4 kernel, but there was much more chance of breakage.  At the time of this article's writing, 2.5 kernels are maturing quickly and developers are calling for more testing from the end users. However, there are more differences in the configuration of the two kernel trees that I would like to address.

1. The configuration programs themselves.

In 2.4.x, one had the options of 'make config', 'make oldconfig', 'make menuconfig', and 'make xconfig.' The options are again available in 2.5.x. The main differences are in 'make xconfig,' which has been entirely rewritten to use either QT, or if you lack that, GTK.

Click here for a screenshot of the new xconfig in 2.5.x.

Config options are different now, for example, the Input device support section now allows for much in the way of tweaking, the filesystem menus have been reorganized into subgroups for CD filesystems, DOS filesystems, Pseudo filesystems, Misc. filesystems, and the three that were already in such groups: Network file systems, partition types, and native language support.
Linux filesystems are in the main menu under filesystems.

The build process has changed somewhat.  One no longer has to enter 'make dep' after configuration, instead the instructions call for 'make bzImage.'  I tend to type 'make modules' before typing 'make bzImage' out of habit, which ends up not only making the modules, but also compiling most of the in-kernel stuff.  Then running 'make bzImage' takes care of the compression.

2. New features

The need for ide-scsi in order to burn CD's has been eliminated, as of kernel 2.5.44.  You need to upgrade to the latest version of cdrtools to take advantage of this.

cdrecord -scanbus -dev=ATAPI
gives me:

Cdrecord 2.01a05 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jörg Schilling
scsidev: 'ATAPI'
devname: 'ATAPI'
scsibus: -2 target: -2 lun: -2
Warning: Using ATA Packet interface.
Warning: The related libscg interface code is in pre alpha.
Warning: There may be fatal problems.
Using libscg version 'schily-0.7'
0,0,0 0) 'ADAPTEC ' 'ACB-5500 ' 'FAKE' NON CCS Disk
0,1,0 1) 'ADAPTEC ' 'ACB-5500 ' 'FAKE' NON CCS Disk
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *

XFS support is now in the kernel, so no need to wait for SGI to release a new patch.

ALSA (Advanced Linux Sound Architecture) is also in the kernel, and OSS (Open Sound System) is now marked 'deprecated.'

3. What you need to use the new kernel


Kernels 2.5.48 onward have depended upon module-init-tools due to massive changes to how modules are loaded and unloaded.  During installation of module-init-tools (unless emerging it on Gentoo when this is done for you automagically), type 'make moveold' to rename the old insmod, modprobe, rmmod, and lsmod to insmod.old, modprobe.old, rmmod.old, and lsmod.old, and does the same with matching manpages.  2.4.x kernels should then automatically use the old programs.

Other than that, a willingness to live with bugs is helpful.

I encourage anyone who's ever thought about 'living dangerously' with the very core of your OS to try it now, and those who haven't thought about it to do the same. Overall performance has been zippier for me, and the annoyances of separately patching and installing for XFS and alsa are taken care of.

If the standard 2.5.x tree doesn't work out for you (esp. if you have a VIA chipset with USB as I do) I recommend Alan Cox's -ac tree:

Linux kernel documentation, module-init-tools documentation, various searches of the linux kernel mailing list.