Linux on an IBM ThinkPad 560Z

On 9 January 1999 I installed RedHat Linux 5.2 on an IBM 560Z laptop, model 2640B0U. A quick summary is that the install went smoothly and everything (X windows, sound, PCMCIA, external diskette drive, external SCSI devices, ...) works. Since that time I have updated the machine in various ways. As of January 2000 it is running RedHat 6.1. It took me a while to get suspend/resume working to my satisfaction, but it does now.

Basic machine specs:

In my opinion it is a beautifully designed laptop with a bright and sharp display, a good keyboard, and a solid feel despite the low weight. It uses the usual ThinkPad trackpoint as a pointer, which I find quite acceptable, although for home use I often plug in an external PS2 mouse. See IBM's ThinkPad pages for more information about ThinkPads. Apropos Linux installation, see the Linux on ThinkPads pages and the Linux on Laptops pages.

The machine arrived with two partitions: hda1, a 2045 MB DOS 16-bit partition containing Windows 98, and hda5, an empty 4097 MB Win95 FAT 32 partition.

I did a CD install using the external floppy that comes with the ThinkPad to boot, an old external CD-ROM drive I had around with a PCMCIA SCSI card to connect it to the ThinkPad, and the RedHat 5.2 CD. I used the boot.img and supp.img from the RedHat 5.2 updates directory (update of 3 January 1999) to create a boot floppy and supplementary floppy. Likely the boot images on the CD would have worked fine--I didn't try.

I told Disk Druid to leave hda1 alone assigning it /dosc as a mount point, to delete hda5, and instead created a growable Linux native hda5 partition and a 64 MB Linux swap partition. The final partition table:

/doschda12045 MBDOS 16-bit
/hda54038 MBLinux native
 hda6  66 MBLinux swap

I then completed the installation process in a straightforward way. This created a working X configuration, but only 640 x 480, and stretched to fill the whole 800x600 screen, which looked poor. With a little trial and error I came up with an XF86Config that does 800 x 600 with 16 bpp and looks great.

I enabled sound using sndconfig, specifying Soundblaster, port 220, irq 5, dma 1.

Since the disk is bigger than we need and to save myself repartitioning, I kept Windows 98 around in its 2 MB partition. I set up lilo to offer it as a boot possibility, although we don't expect to use it much. I also created two 130 MB swap files in that partition and added them to /etc/fstab for additional swap space.

I installed the various RedHat 5.2 updates did some personal configuation and started using the machine.

I did not find it simple to get APM (automatic power management), and, in particular, suspend/resume, working to my satisfaction. Before I figured out how to do it correctly, it was quite easy to freeze up the machine so that a power-cycle would be needed to continue. Under RedHat 6.1 (kernel 2.2.12) I got it working the way I like, namely with the following behavior: 1) I enter suspend mode with the command "apm --suspend". If I then close the lid, I can resume just by opening the lid. Or if I don't close the lid after suspending, I can resume with the Fn-F12 key combination. The laptop is not set to suspend automatically whenever I close the lid. This works equally well if I suspend under X or console mode, and as far as I can tell works perfectly (all functions resume correctly).

In order to obtain this suspend/resume behavior I did the following:

  1. I compiled a new kernel with the following options relevant to APM:
    CONFIG_APM=y
    # CONFIG_APM_IGNORE_USER_SUSPEND is not set
    # CONFIG_APM_DO_ENABLE is not set
    # CONFIG_APM_CPU_IDLE is not set
    # CONFIG_APM_DISPLAY_BLANK is not set
    CONFIG_APM_POWER_OFF=y
    CONFIG_APM_IGNORE_MULTIPLE_SUSPEND=y
    CONFIG_APM_IGNORE_SUSPEND_BOUNCE=y
    CONFIG_APM_RTC_IS_GMT=y
    CONFIG_APM_ALLOW_INTS=y
  2. I installed the program tpctl from http://download.sourceforge.net/tpctl/tpctl-0.8.5.src.tar.gz and ran
    tpctl --pm-sedation-lid-closure=-
    so that closing the lid does not try to automatically suspend.


Last modified March 14, 2000 by Douglas N. Arnold