Next: Windows Previous: Wireless Contents

Experiences With a Dell Inspiron 4100

Rebuilding the Kernel

James F. Carter <jimc@math.ucla.edu>, 2001-12-19

To support the ATI Radeon Mobility graphics chip I need XFree86 v4.2.0 plus more bugfixes in the AGP and DRM support. Prior experiences with FlightGear on a NVidia GeForce 2 and kernel 2.4.5 involved crashes, not of the airplane but of the kernel.

As for support for the Agere ORiNOCO (Harris-Intersil Prism II) wireless card, SuSE 7.2 (kernel 2.4.4) includes wvlan_cs, which is obsolete, but not the up-to-date orinoco and orinoco_cs drivers.

Thus I conclude that I will not be able to avoid upgrading the kernel. The hoped-for plan was to do this in the context of a complete operating system upgrade, to SuSE 7.3, which has kernel 2.4.10, followed by installation of the most recent stable kernel. Sure.

http://www.kernel.org/ -- Latest stable version is 2.4.16. Reading from the kernel developers mailing list, about 2 weeks of mail on http://www.uwsg.indiana.edu/hypermail/linux/kernel/0112.0/0148.html, I find one report of kernel OOPS when orinoco_cs is used on SMP with kernel-based PCMCIA, and two reports of data corruption with RAID, at least one of which was clearly the controller's fault. Conclusion, 2.4.16 is in fact stable. (The patches are directed at pre-17's.)

Obtained kernel from http://www.us.kernel.org/... (dynamic mirror CNAME to:) http://kernel.blue-labs.org/pub/linux/kernel/v2.4/ Dated 2001-11-26. 23 Mb downloaded (at 87 Kb/sec, about 270 secs). I also ordered the SuSE 7.3 upgrade.

Notes from "make xconfig":

OK, I downloaded and compiled kernel version 2.4.16 and installed it on both machines. Works fine on Fafnir (the desktop, Dell Dimension XPS R400). But on Xena it runs partway through the boot process, about 20 secs, and freezes dead. Let's revert to 2.4.10.

Downloaded the kernel 2.4.10 from www.kernel.org. Well, that didn't help. Perhaps coincidentally, it froze when trying to start PCMCIA. However, the machine was alive enough for the APM BIOS to turn on the fan. Evidently it's in an infinite loop.

SuSE 7.3 arrived. The generic kernel version is 2.4.10 and it freezes with similar symptoms during an attempt to install. Having configured and successfully used my network, I can't get a ping answer out of the laptop after it freezes.

Degree of freeze: No response to keyboard. No answer to ping (in cases where net was configured prior to freeze). Cannot enter setup using dedicated key combo. But in 1 case the fan *did* come on after a while: BIOS is not dead and the CPU was doing enough to need the fan.

Disabling the APIC. To make a long story short: after compiling 18 kernels I found that the problem was with the APIC (Advanced Programmable Interrupt Controller). Here is the bug report and supporting material. SuSE customer support replied with a better workaround: with the SuSE generic kernel specify a boot parameter of ``disableapic''. On the boot menu of CD1 is an item labelled ``Safe Settings'' which includes this parameter (also no DMA, very slow). Sometime after 2.4.10 the parameter was changed to ``noapic'', so if one doesn't work, try the other. Kernel 2.4.19 et seq recognize by themselves when the APIC needs to be disabled.

For future reference: here's how to sneak your own kernel onto the SuSE bootdisk. This is how I actually installed SuSE, since I did it before customer service replied. Remember that you need the following items to be hardwired into the kernel, not as modules:

Section Item
Block Devices Normal PC Floppy Support
IDE, ATA, ATAPI Block Devices Enhanced IDE/MFM/RLL Support
IDE, ATA, ATAPI Block Devices IDE/ATAPI CDROM support
File Systems DOS FAT fs support
File Systems VFAT (Win95) fs support
File Systems ISO 9660 CDROM fs support
File Systems Minix fs support (maybe)
File Systems, Native Language Codepage 437 (maybe)
Insert the SuSE CD #1 in the CDROM drive and a blank floppy (without bad blocks) in the floppy drive. If you don't have a cable to connect your floppy to the parallel port, you will need to hotswap the drives, or to do it on a desktop machine.
mount /cdrom
cp /cdrom/disks/bootdisk /tmp
mount -t vfat -o loop /tmp/bootdisk /mnt
cp /boot/kernel_that_works /mnt/linux
umount /mnt
dd if=/tmp/bootdisk of=/dev/fd0 bs=18k

After that, I was able to boot the floppy (with CDROM #1 in the drive) and it started the upgrade process. However, at the end of the base system update (CD #1), it could not mount the image of the initrd. It booted its own installed kernel, which hung. So I used the rescue system from SuSE 7.2 (off its CD), mounting my root partition on /mnt. I renamed the 2.4.10-4GB kernel to something else, and retrieved the SuSE 7.2 kernel and System.map from where I had saved them, as well as my customized lilo.conf. I restored my symlink vmlinuz-2.4.16-21 from vmlinuz. I used this command line for lilo:

/mnt/sbin/lilo -t -v -r /mnt -C /etc/lilo.conf

The above is to test; omit -t -v to really install. You must use the new version of lilo from the root partition (rather than the one on the rescue disc) because the version of the boot block input has to match that of lilo itself. -r is to chroot onto the new root partition. -C must be specified relative to the changed root, i.e. do not prefix with /mnt.

After that, I booted my custom kernel, and whatever magic in the startup scripts started YAST2 to finish the update, after thrashing with the disc for about 30 seconds.


Next: Windows Previous: Wireless Contents