Suse Linux on the IBM Thinkpad X40

pic of X40 A new IBM Thinkpad, so time to install Linux. This time Suse 9.1. As always, the Linux on Laptops page has been very useful. Warning It is very easy to destroy data while installing any operating system, so make sure you have backed up anything you want to save.

Hardware

IBM Thinkpad X40; 40GB disk; 760MB memory; 1024x768 12" screen; Atheros 5212 802.11abg wireless; Intel Gigabit Ethernet.

This came with Windows XP Pro installed. As is popular these days, there were no reinstall/rescue discs included, but instead a small hidden partition on the disk contains a Restore and Rescue utility. Press the blue "Access IBM" or F11 on boot to start this. F1 will take you to the BIOS.

Note On the first boot of Windows it converts the FAT32 partition it lives on into a NTFS filesystem. If that worries you and you want to be able to mount the Windows partition from Linux you need to stop this happening. Until Linux support mountable NTFS you can use the ntfs tools to read the partition, but not write to it.

To prevent the conversion, you can move the program C:windows\system32\autoconv.exe to, say, noautoconv.exe. This you can do by booting off a rescue disk (e.g., choose rescue from the Suse boot CD) and doing it from there.

Squeeze Windows

If you want to keep the Windows partition you need to shrink it to make room for Linux. If the partition is still FAT, the Suse install can shrink it for you. If it is NTFS you can try a proprietary partition manager or resinstall Windows. Don't touch the rescue partition.

If you mess up the Windows partition it is easy (but time consuming) to reinstall Windows from the Restore and Rescue. Note: when you shrink the Windows partition, make a new partition in the gap, or else the Rescue utility will expand the Windows partition right back out again.

I didn't want to keep Windows, so I overwrote it in the partitioning phase, below.

Make a boot CD

Suse provide a boot.iso image to boot from, then the installation proceeds off the 'net (select "Manual install"). Use a mirror whenever possible.

Decide on Partitions

I made a root, a swap and a hibernate partition. The hibernate partition is of type (hex) 16 (hidden FAT16), ready for a hibernate file (see APM). If you kept Windows, the standard hibernate file probably works, so you don't need a hibernate partition.

Do the Install

Boot direct from the CD. I needed to tell it to use Ethernet driver e1000 and the usual names and IP addresses.

ACPI/APM

Select APM by appending acpi=off to the "Linux" boot line in /boot/grub/menu.lst. ACPI is still a bit wobbly, though it has lots of nice features like motherboard temperatures and similar.

Suspend (to memory) works, but see USB below.

As for standby (hibernate to disk), I made a filesystem (mkdosfs -F 16) on the hibernate partition, mounted it (mount -t vfat) and used tphdisk to make a save2dsk.bin file. The file size required is RAM + Video memory + 2M. Note that video RAM on the X40 is DVMT (shared with main system memory).

After a reboot, hibernate using Fn-F12 works, but is quite slow. It takes over a minute to save 760MB of memory and a similar time to restore. By comparison swsusp is a bit faster to save, but only just faster to restore.

Audio

Works, detected by Suse, module snd_intel8x0. An 82801DB AC'97 chipset which is supported by ALSA.

Modem

Detected by Suse, not tried.

Ethernet

Works, detected by Suse, module e1000. IPv6 is enabled by default, to turn this off put install ipv6 /bin/true in /etc/modprobe.conf.local

Addendum:
The e1000 sometimes fails after a suspend/restore with a firmware checksum error. Unloading and reloading the module show no improvement, but it is fixable by a reboot. Anybody got any ideas?

Wireless

Works, detected by Suse, module ath_pci. An Atheros 802.11abg card. Interface ath0 which runs happily at 54Mbit (translating to about 2-3MBytes/sec in real life). It works well, but hung the system once whilst running Kismet. As the driver has scanning support iwlist ath0 scan is a safer way to discover networks. apradar is a graphical interface to the same.

InfraRed Port

Not tried, but allegedly works.

USB

Works, USB2 detected by Suse. As a precaution I added uhci_hcd, usbserial and hid to POWERSAVE_UNLOAD_MODULES_BEFORE_SUSPEND and POWERSAVE_UNLOAD_MODULES_BEFORE_STANDBY in /etc/sysconfig/powersave/common as these modules reputedly cause problems on suspend/restore. Also reputedly, this is fixed in later kernels.

Secure Digital (SD) slot

Not tried.

Firewire

Not tried.

X Windows

Works, detected by Suse. Adding a USB mouse also works, though it did not recognise the mouse wheel. In /etc/X11/XF86Config add the line ZAxisMapping in the InputDevice section:
Section "InputDevice"
   Driver "mouse"
   ...
   Option "ZAxisMapping" "4 5"
EndSection
It is possible to enable DRI acceleration by putting the line Load "dri" in Section "Module" of /etc/X11/XF86Config. This increases glxgears from 240fps to 1250fps. The downside is that this is incompatible (in kernel 2.6.5) with suspend/restore: the screen comes back in a very weird state. The culprit is the i830 module, which appears to be unloadable without a reboot.

Addendum:
the X driver occasionally crashes and leaves the kernel in a bad state. I suspect this is prompted by video players like RealPlayer trying to do DRI. A workaround is to replace the i810 driver by the generic VESA driver (Section "Device" Driver "vesa"). The result will probably be to slow for video gamers (glxgears 120fps), but is amply fast enough for other users.

BIOS

F1 on boot to get to the Phoenix BIOS.

The default BIOS settings try to save power by turning everything off when your back is turned. I prefer to keep things running. In Config -> Power:

Notes

The hostname is set to linux.site. Fix in /etc/HOSTNAME or somewhere in the Yast2 system.

Suse does not load several essential packages by default: gcc, make, emacs, pine, and so on. Fortunately, installing them with yast2 is trivial. Always run update after installing a package to check for updates.

Suse has an interesting "scheme" mechanism scpm that allows you to switch between configurations as you move about. It's a little slow, but very thorough.

The keypad volume controls, mute, Fn-F4 for suspend, Fn-F12 for standby, Fn-Home and Fn-End for screen brightness and the light (Fn-PgUp) all work.

Suse employs resmgr to allow users access to various bits of hardware, such as the CD drive. This is configured via /etc/resmgr.conf and the default is to have a desktop class that is allowed use CDs, scanners and the like. The default way to join this class is to log in via XDM wherupon PAM magic grants you these rights. If you chose not to use XDM, you don't get to use the CD. A quick fix is to add the line

session optional pam_resmgr.so grant=desktop
to /etc/pam.d/login. This grants desktop privileges (i.e., CD use) to anyone who logs in using login. Do resgmr list to see what devices you can use. I also added
add /dev/sg0 desktop
to /etc/resmgr.conf to get grip to work.

Russell Bradford, September 2004.