My experience installing Mandrake 9.2 on a Compaq 2538cl laptop computer

Introduction

I recently purchased a Compaq 2538cl laptop and wanted to install Mandrake 9.2 on it because that is the distro I use on all my other comuters. As easy as the normal Mandrake install is, I was surprised how difficult it was on this laptop. Most of the problems I encountered were with the Mandrake installation rather than the hardware. This is a journal of this journey, mostly for my own edification but also to possibly help anyone going through the same troubles. This is the document I wish I had found at the beginning.

To bypass this rather long winded narrative and get to the meat, go straight to the summary.

In this endeavor, as in most, Google is your friend. I was a little discouraged at the amount of mis-information on these topics. I've noticed that I have to wade through much more noise to find the information I'm looking for. The information is out there, but I had to really dig to find it.

I always do a network install rather than burn ISO images for two major reasons. First, it's actually faster than a CDROM install. Second, and most important, Mandrake saves the installation media in it's urpmi database. At any time after the initial install, if I need to install a package, I simply type "urpmi package-name" and the installation is done over the network. I don't have to hunt down the CDROM's and I don't have to play disk shuffle to find the right one. See my method for setting this up here.

No boot right off the bat

When I booted the network install floppy, everything proceeded normally until it got to auto detecting my hardware. The network interface was no problem, and the pcmcia seemed to go okay too, but when it got to my "Texas Instruments TSB43AB21 IEEE-1394 Controller" the system just froze. Several attempts gave the same result.

I thought that maybe the network boot was a problem, so I burned the ISO's and tried a CDROM install. Same problem. A little Googleing showed a number of people experiencing the same problem and not many knew the solution. Some suggested booting "linux nofirewire" to no avail. Finally I found a suggestion to try "linux noauto" which got me into the install but I was afraid that none of my hardware would be auto discovered.

After the slightly abnormal install, I had the familiar Mandrake desktop with one notable item missing. My battery indicator!!!

This puppy doesn't have APM

A bit more Googleing suggested I adjust my BIOS to turn on APM. Booting into the BIOS showed that it doesn't exist on this model. Actually, there is very little in the BIOS compared to what I'm used to. More Googleing suggested that this model uses ACPI (Advanced Configuration and Power Interface), not to be confused with APIC (Advanced Programmable Interrupt Controller). I think todays engineers need more training in acronyms, or more properly, sensitivity to those who have to read them. This alphabet soup is really confusing, especially since I am more that a little dyslexic.

I found that I should see entries in /proc/acpi but that directory didn't even exist, which told me that acpi wasn't configured in the default Mandrake kernel. Here is where I made my first big mistake which I will describe if only for comedic value.

I downloaded kernel-source (which isn't included in the download ISO's BTW) and tried to configure ACPI. It said it was already configured but it wasn't showing up in /proc/acpi so I was sure it wasn't there. I thought that maybe it wasn't loading the modules for battery, ac adapter etc, so I set them to load with the kernel. Big mistake!!!

I recompiled the kernel and set it up to boot in LILO, and booted it and voila, I still had no /proc/acpi. More Googleing suggested that I might want to try acpi=on on the kernel append string. Another suggested that there was an "off by one error" when using acpi=on and that I should try acpi=force. Both of these options caused my computer to freeze solid.

Try reading the directions

I was then led the Mandrake 9.2 errata page which states:

Error scenario: When enabling ACPI in the kernel (by removing acpi=ht from the kernel boot options), the system freezes very early Why: There seems to be a bad interaction with Local APIC, which is enabled by default in the kernel. This can be seen by adding vga=0 to try to see the last kernel message before it locks solid (a message like "Looking for DSDT in initrd... not found"). This seems to happen with certain HP laptops. Other reports also indicate that if you remove AC power from a laptop (ie. Dell latitude C640; possibly others) it will freeze requiring a power off. (re: Bugzilla #5821)

Solution: Add "nolapic" to the kernel boot options to resolve both issues.

Notice that is nolapic (with an l (letter ell)) just to add to the alphabet soup confusion.

Well, I replaced acpi=ht (which is very confusing because that looks like it is being enabled, not disabled) with nolapic on the kernel append line and rebooted and voila again. This time I had /proc/acpi and it had contents but the item I was most interested in, /proc/acpi/battery was empty. As I discovered after several days of Googleing and troubleshooting, and head scratching, Mandrake was loading the modules anyway, right on top of the drivers I had configured into the kernel, so there were actually two copies of each driver. My aha moment was when I noticed that battery appeared twice in /proc/acpi.

I recompiled the kernel again, changing all the modules back into modules and it worked. Then came the realization that I could have avoided this enitre fiasco if I had read the directions in the first place. The simple change of a boot parameter from "acpi=ht" to "nolapic" works with the stock default Mandrake kernel. That was all I needed to do.

Okay, now how about suspend to disk

Before I got ACPI working, I tried the power switch to see if it would suspend to disk like my old Gateway laptop. It instantly turned the power off, no shutdown, no suspend, just power off. How rude!

Well, now that I had ACPI working, I was anxious to see if it would now suspend to disk, so I again hit the power switch. This time it did an orderly shutdown, turning off all services, and then it powered off the machine. Not exactly what I was looking for but progress. More Googleing told me about the directory /etc/acpi/events which contained two files, lid and power and their contents were:

/etc/acpi/events/lid:
event=button/lid LID
action=/usr/sbin/pmsuspend

/etc/acpi/events/power:
event=button/power (PWR.|PBTN)
action=/sbin/poweroff
This was encouraging. The shutdown was obviously initiated by this file triggering /sbin/poweroff which occured when I pressed the power switch. It should follow that if I close the lid, it will suspend to disk. Fat chance!!! Closed the lid and waited 10 minutes, nothing.

I tried to run /usr/sbin/pmsuspend manually to see if it would report an error and it didn't exist, but /usr/sbin/pmsuspend2 did. I made the change to /etc/acpi/events/lid and tried again. Again nothing. I tried to run it manually again and it told me that I didn't have enough swap space to swap to disk.

It was right. When I installed I figured with 1GB of ram, I wouldn't need that much swap, so I only allocated 800MB to swap. I re-partitioned the disk (not so easy so do this right the first time) and gave it 2GB of swap.

Once again I closed the lid and watched. Nothing! Damn!!! Once again I tried /usr/sbin/pmsuspend2 manually and it told me that I needed to add "resume=/dev/hda8" (my swap partition) to the linux append line to be able to recover from suspend. I added this to lilo.conf, reran lilo and rebooted. I closed the lid, and after about 15 seconds, (which seemed like an eternity) I noticed disk activity. Another 15 seconds and the machine powered off.

Did it really suspend to disk? I opened the lid and powered it on and it started booting from scratch, not what I was expecting. I figured I had more troubleshooting to do. I hit enter to boot the default kernel and after a bunch of dots (......) on the screen, I was right back where I was when I shut the lid. It worked!!! Ain't life grand?

Summary

To install Mandrake 9.2 on the beast

To enable ACPI

To enable Suspend-To-Disk

To enable networking

To enable PCMCIA