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.