Linux on a Thinkpad i1452
Scott Bronson
21 August 1999

Here are my thoughts on the i1452 in general.

Distribution

In this document, I will often refer to SuSE 6.1, the Linux distribution that I am using. The reasons I'm using SuSE are nothing more than:

Use whatever distribution you would like. In the following text, where there's a distribution-specific step, I'll describe how it works on SuSE, and you'll have to figure out how to do the same thing with your distribution's file hierarchy and commands.

Installation

A snap. Except for sound, SuSE's install got everything right.

Partitioning: The machine ships with a blank 2.6G partition, perfect for installing Linux. If you're worried about ultra performance, security, or reliability, you'll probably want to create separate partitions for /tmp, /var/spool, /var/log, /var/tmp, etc. I'm not, so I just created partitions for / and /home. I did not like the SuSE installer's tendency to put everything in extended partitions so I did everything manually using fdisk.

Number Size File System Notes
1 2 Gb DOS As shipped by IBM, pre-installed with Win98, about 83% full from the factory.
2 96 Mb swap A good swap size for 64 Mb of memory and no need for ultra reliability.
3 2.2 Gb ex2fs Contains all of the distribution and /opt, mine is currently 75% full
4 ~400 Mb ex2fs Contains all the files I care about. I can swap distributions by erasing partition 3 without having to worry about backing up my home directory. One day I would like to try out Debian.

Printed by the fdisk command, this is how my partition table appears:

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       261   2096451    6  DOS 16-bit >=32M
/dev/hda2           262       274    104422+  82  Linux swap
/dev/hda3   *       275       542   2152710   83  Linux native
/dev/hda4           543       592    401625   83  Linux native

X: SaX correctly ID'd the graphics chip (NeoMagic MagicMedia 256AV) and screen size (1024x768), and the X server to use (XF86_SVGA). 8 and 24-bit color depths work, but 8 is ugly and 24 is so slow that 16-bit is definitely the way to go. The trackpoint is simply a 3-button PS/2 Mouse (protocol=PS/2, device=/dev/psaux). Monitor vendor is "!!! LCD !!!" and name is "XGA 1024x768@60Hz".

booting: chos (does anybody know chos's home page?) is excellent, the best boot selector yet, and I've used LILO, WinNT's, and the hideously large BootMagic. It's easy to set up. You can probably use my /etc/chos.conf file, then simply run chos as root.

Under chos, you can specify boot-time command line options (choose a menu item and hit space instead of return), rendering the last two menu items strictly unnecessary. However, I like to be presented with all my options, rather than having to remember stuff like that.

After installation: if things are strange, you may need to play with your BIOS settings. For instance, PnP OS should be turned off.

Linux should now be up and working. That was the easy part. Now for Networking, Mail, PPP, Sound, etc...

Sleep/Standby Wrinkles

The only real problems I've noticed with Linux on the i1452 are related to standing by and sleeping.

Under both Linux and Windows, this machine has abysmal standby times (usually around 8 hours). However, when Windows puts the laptop to sleep, it writes all memory to the HD and then turns off all power. When power is restored, the machine reads its memory from the hard drive and everything is as it was. Alas, Linux currently cannot do this. You must either settle for the 8 hour standby or shut it down completely.

Also, when standing by, the system clock is not updated. Therefore, if the machine stands by for 4 hours, when you start using the computer again, the clock will be 4 hours behind. To fix it, when you wake the machine up, simply run the following command as root (it just updates the sysem clock from the hardware real-time clock):

# hwclock --hctosys

Finally, every time after bringing the machine out of standby, even though the caps lock LED is unlit Linux seems to think that caps lock is pressed! If you hit the caps lock key yourself, the LED remains unlit and keystrokes come out normal again. It is a minor annoyance, having to remember to hit caps lock every time after waking up the machine.

Mounting the Win98 Partition

If you want to access your Win98 partition from Linux, do the following as root (/c reminds me of the :c drive letter, you may call the directory whatever you'd like):

  1. Create the mount point

    % mkdir /c

    % chmod a+rw /c

  2. Mount the drive manually to make sure it works:

    % mount /dev/hda1 /c -t vfat

    If there were no error messages, quickly browse around /c and make sure everything looks right.

  3. If that worked, you can make it easier or automatic to mount by adding the following line to /etc/fstab:

    /dev/hda1 /c vfat noauto,user 0 2

  4. With step 3 completed, you can now use the following command to mount the Win98 partition (this is how my machine is set up):

    %mount /c

  5. If you want to have /c mounted automatically at boot time, change the "noauto" in step 3 to "auto".

Now I can use free space on the Windows partition for Linux stuff as well. One thing to be careful of is that, unlike Unix, the VFAT file system is not case-sensitive: "README" and "readme" are the same file. And, of course, the performance of VFAT is pretty bad compared to ext2fs.

Installing Sound

First, a warning: Alsa is still experimental, and in hot development. It's the best sound architecture I've seen yet, on any platform, but be preparered for error messages... All recent software seems to work fine; it's the older programs that give problems. If you value reliability over coolness, you might try to get OSS working instead.

  1. Install the Alsa drivers. SuSE includes the alsa RPM that does this.
  2. Set up the /etc/conf.modules file.

    Update: It appears that you can skip this step with SuSE 6.2; the default /etc/conf.modules file works fine.
    Update: But you do need to do this with SuSE 6.3/ALSA 0.4. I've included the steps needed for configuring Alsa 0.4 by hand, but do not do this! Take it easy and use the alsaconf command instead.

  3. From a root console, enter the following commands:
    ALSA 0.3:
    % depmod -a
    % modprobe snd-esssolo1
    % modprobe snd-pcm1-oss
    % amixer master 100; amixer master unmute
    % amixer pcm 100; amixer pcm unmute
            
    ALSA 0.4:
    % depmod -a
    % modprobe snd-card-es1938
    % modprobe snd-pcm1-oss
    % amixer set Master 100% unmute
    % amixer set PCM,1 100% unmute
            
  4. Now, basic sound should be working. Ensure the volume knob is set to 4 or so, then test by playing an au or wav format file.

    SuSE 6.2-: % aplay /usr/share/sounds/churchbell.wav     (churchbell.wav can be found in the snd_wav RPM)

    SuSE 6.3+: % aplay /usr/share/sounds/alsa/whistle.au

  5. If you want to have sound turned on at boot, rather than having to enter all the commands in step 3 every time, put them in a file and execute the file at boot time. Under SuSE, you just need to create the file /sbin/init.d/boot.d/S05soundon, and put the commands in there.

    ALSA 0.3: /sbin/init.d/boot.d/S05soundon

    ALSA 0.4: /sbin/init.d/boot.d/S05soundon

Installing PCMCIA

Since the Lucent WinModem on your laptop is useless, you'll probably want a PCMCIA modem (though for about the same amount of money, you could connect an external modem to the serial port). I bought a $99 Zoom PC Card 56K (which features an awful 4 foot telephone cord: unique and $20 for a replacement, grrr), but almost any PCMCIA modem should work. See David Hinds's PCMCIA information site for more info.

Installing could not have been easier: simply plug it in. The PCMCIA package (as shipped with SuSE 6.1) correctly identified and configured it, even creating the proper /dev/modem soft link. Awesome--now you just need to worry about configuring PPP...

Update: The following wrinkle no longer applies. As of PCMCIA package 3.1 (SuSE 6.3) this bug has been fixed.

There is a wrinkle, however. The card often fails to be recognized at boot time. David Hinds said in reply to my question that the problem is that O2Micro CardBus bridges go into some weird, unknown state. I've found that when this happens, try ejecting and inserting the card. Or (and this always works for me) boot the computer without any PCMCIA cards inserted. Then, once the machine is up and running, insert the card(s) like normal.

Update: The WinModem is not totally useless anymore. Richard J.M. Close and Pavel Machek found symbols in the Windows NT driver and did some reverse engineering. You can download the resulting test application at http://www.close.u-net.com/ and try it out by running the command "./ltmodem -d phone_number" (replace phone_number with a valid phone number). Version 0.0.7 recognizes the modem on my laptop, dials, and waits for a carrier, but it cannot communicate. However, after running it, my PCMCIA modem no longer responds and the sysbeep is a little garbled (though .wavs and MP3s still play just fine). Rebooting fixes these anomalies.

Installing PPP

This is so dependent on your distribution and ISP that I won't try to help here. However, I did find that on my setup I needed to set MRU and MTU (in the /etc/ppp/options file) to 296 or FTP would stall after transferring about 20K. This number can probably be increased a bit to improve performance, but I haven't felt like fiddling with it yet.

Installing Sendmail

I use the excellent install-sendmail package. May I never have to edit a sendmail.cf file by hand again! You can find it at Freshmeat or http://members.xoom.com/xeer/index.html.

This package sets up mail the way it should work on a laptop. You ca nown send and read mail offline using whatever mail client you desire. You can even mix them, using mailx, Elm, Netscape, or Balsa, depending on your terminal and mood. When you go online, type "fetchmail" to download all new messages off your mailserver, and "sendmail -q" to send all queued mail.

There is one drawback to this: there is currently no way to save all outgoing messages. This is a major problem for me, so I'm working on this. stay tuned...

Make sure to run "/sbin/init.d/sendmail stop" before running install-sendmail, and then "/sbin/init.d/sendmail start" to start it up with the new configuration.

Update: The SuSEConfig in SuSE 6.2 appears to overwrite the existing sendmail configuration files with no warning. Setting SENDMAIL_TYPE="no" in /etc/rc.config should prevent SuSEConfig from doing this. (SuSEConfig is run automatically by YaST).

I'm currently using elm to read mail, and either elm or Netscape (when I click on a mailto: URL) to send mail. I'd like to find a more MIME-compliant X11 mail client, but I've been unsuccessful so far (see http://www.trestle.com/linux/mailclients.html to join my search)

The End

You can find other good pages describing the i1452 and the I-series in general (they're all quite similar) at http://www.cs.utexas.edu/users/kharker/linux-laptop/.

Now your machine should be working as well as mine. Enjoy it! E-mail me if you have any questions: bronson@trestle.com