Debian GNU/Linux on an IBM ThinkPad X24

This page describes how I got Debian woody up and running on my Thinkpad X24 in 2002. Since it was written I have had to do a complete reinstall of sarge (dead hard drive) and the machine is currently running sarge with a 2.6 kernel. I don't have time to document the installation now (it wasn't completely trivial) but would be happy to answer questions. See my home page for contact details.

Preliminary

I used Partition Magic to shrink the W2K partition (/dev/hda1) down to 10 Gb, leaving ~ 16 Gb for Linux.

Starting the installation

I bought my laptop without any external storage devices (to spare my budget). I had a USB CD-ROM and floppy available from other machines. As I've pretty much always installed Debian from floppy and then network, I decided to go the same route with this machine. Problem: the standard `compact' kernel won't boot off a USB floppy; in fact, it locks up part-way through the boot process. (I initially assumed that this was because of the missing floppy, but subsequently found that the kernel won't boot even off the hard drive.) Fortunately, Google turned up a reference to the modified boot floppy collection provided by Kenshi Muto here which has a 2.4.18 kernel rather than the standard 2.2.20 version. The README file is in Japanese, but the process is pretty much self-explanatory if you're used to a Debian floppy install. I was able to boot using the rescue floppy and root floppy provided with the option root=/dev/sda.

Partitioning

256 Mb swap partition as /dev/hda3, the rest as a single root partition on /dev/hda4. Because Kenshi Muto's kernel is 2.4.18 rather than the standard 2.2.20, I was able to make the root partition ext3 from the start.

Network install

The internal ethernet is detected as an Intel EtherExpress Pro, and so the driver is built in to the usual boot floppy kernels, including Kenshi Muto's. So a network install is pretty trivial.

Kernel

I skipped the default Debian lilo installation, as I wanted to be sure I got W2K in the lilo config in the right way, and compiled up a 2.4.19 kernel with the appropriate options. Lilo copies the MBR (will need to put this back if restoring from the IBM hidden partition is ever necessary). W2K on /dev/hda1, Linux on /dev/hda4, all works fine. This was the point at which I discovered that the default (2.2.20) kernel doesn't boot even from the hard disc. I discarded it. I was pleased to discover that the factory W2K install is on FAT32, not NTFS, so that it can safely be mounted read-write under Linux.

Disc

The IDE controller is detected as an ICH3M. I enabled DMA by default in the kernel and compiled in Intel PIIXn chipset support and tuning support. The disc access speed as reported by hdparm -tT /dev/hda is just under 24 MB/s.

Console

The console works fine, BUT if you boot the machine up attached to a monitor, it will turn off the automatic expansion of the console to fill the LCD. This is irritating, but fixable through the BIOS setup at boot-time. Also, you can use a non-standard console in the kernel to give a sensible-sized kernel window.

XFree86

The graphics card is a Radeon Mobility M6 LY. The vesa driver in XFree86 4.1 will talk to this card after a fashion, but it's slow to initialise, messy during shutdown and startup, slow to change to a text virtual console and crash-prone. It seems much better to use the radeon driver in XFree86 4.2 which supports this card. Unfortunately, Debian 3.0 stable comes with XFree86 4.1... I installed the 4.2 xserver-xfree86 package from unstable, combined with the libc6 and associated packages from testing, using the pinning feature of apt-get.

Now I think 4.2 is in testing...

Subsequently I got the card to drive a second monitor (double-head, i.e. two independent screens) with this config file. The maximum resolution of the second monitor is 1024x768, as (as far as I can tell) the card doesn't have enough memory for more.

Sound

The sound card is an Intel AC'97; the kernel driver for `Intel ICH (i8xx)' works fine.

Battery

At the moment I'm seeing battery life around 3.5 hours, even when the system has been quite heavily used during that time. I never use hibernation, so I'm not worried by the fact that that probably won't work. Suspend works fine.

Internal Wi-fi

The built-in wireless network card identifies as `Harris Semiconductor: Unknown device 3873 (rev 01)'. This card is driven by the Prism 2 PCI driver to be found in the Linux WLAN project. .

I needed to download, build and install linux-wlan-ng-0.1.16-pre6. (There is a version of this in the Debian stable tree, but it's older, and you still have to build the modules against the kernel by hand, so it seems easiest to build the whole package from source.)

Having done that, I did

modprobe prism2_pci
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
wlanctl-ng wlan0 dot11req_mibset mibattribute=p2CnfRoamingMode=1
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11PrivacyInvoked=true
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKeyID=0
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKey0=##:##...
wlanctl-ng wlan0 lnxreq_autojoin ssid=####### authtype=opensystem
dhclient wlan0
to get it up and running, where the # signs denote information specific to my configuration. The only problem here was working out the obscure syntax to make WEP work. Finally, I put these commands in a script and used sudo to allow my main user (i.e. me) to switch from the default (wired) networking configuration to wireless mode. All works perfectly.

After a suspend, it's necessary to re-run the wlanctl commands from the above script. This is as expected.

For reference, the wireless access point I used for this was a D-Link DWL-1000AP. This claims to need windows, but in fact is web-configurable out of the box provided you know the default password (`private'). Put it on a network with DHCP and you're away. (NB not a good idea to web-configure it over the wireless network.)

At some point I will put some stuff on a page about the cheap and cheerful semi-secure WLAN I'm using at work.

IRDA

I did some minimal testing of this, compiling in the obvious kernel drivers, and couldn't get it to work. But I never use it anyway.

USB

Seems to work fine with the USB floppy. A Logitech USB mouse worked out of the box, once I'd compiled the USB HCI support into the kernel. My old Argosy USB CD-ROM seems not to work unless it's plugged in after boot time, but this thing has only ever just worked under Linux, so I'm not that bothered. Note that this machine only has USB 1.

Modem

This is a Lucent AMR software modem for which, as far as I can tell, there is no Linux support (but check here for updates).

CD/DVD

Subsequent I acquired a FreeCom Traveler II DVD drive with PCMCIA interface (having discovered, which Freecom don't tell you, that their Firewire interface doesn't work with a PCMCIA firewire card). I am still trying to get this to talk to Linux, though I'm not greatly bothered, as it's really only Windows that needs to see it.