Installing Red Hat 7.2 on a used IBM Thinkpad 600E

I bought a used laptop and installed Red Hat 7.2 Linux on it in April 2002. I am publishing my experiences here in the hope that they might be useful to somebody else.


Purchase

I decided to get a used Thinkpad because of its reputation for quality, and I felt reasonably confident that I could get Linux running on it. Amongst other confidence-building measures, IBM has an app note discussing how to configure the 600E for Red Hat Linux 6.0. There are also several web pages discussing Linux on the 600E available on the Linux Laptop site. I should also note that the 600E incorporates a 3-button mouse, which makes it ideal for running X.

I decided to try to buy the Thinkpad on eBay because the prices seemed good. I watched the auctions for several days to get an idea about what various models would sell for; Thinkpad 600E machines tended to go for around $400 +/- $50, which I felt was very reasonable. I bid unsuccessfully on several machines before I won an auction for a 600E type 2645. It had 64M RAM, a 4 Gig HD, built-in CD ROM, 3Com PCMCIA Ethernet, built in modem, and a 300 MHz Pentium II processor. My final price was $340 + shipping & taxes = $370 which I felt was a good deal. It was delivered about 1 week later. It arrived in good shape, was clean, and had all the cables. There *does* seem to be a problem with the battery; I haven't decided yet what to do about it.

I had a pair of RH 7.2 disks which I picked up for free at LinuxWorld 2002 in New York. I used an old RH 7.1 boot disk to start the machine up, and started going through the installation. It was not as painless as I had hoped. :-(

Section summary


Disk Partitioning & Linux Installation

My laptop was delivered with a common proprietary OS already installed. Since I didn't want that OS on my machine, I could just reformat and repartition the whole disk without having to move anything around. I started off using fdisk to reformat & partition the disk. I have used fdisk many time in the past to create other Linux systems. I created my usual partitions (/ /usr/local /home and swap) & formatted them all. Then I tried to do the rest of the installation. Unfortunately, when it came time to write the / partition, the installer told me that there was not enough room. Since I had indeed allocated plenty of space on /, I had no idea what was going on. I screwed around with fdisk, and then disk druid for several hours. Finally, I ran the auto partitioner, and accepted its preferred partitioning. That seemed to work. I believe that the cure was that I allowed the creation of a /boot partition. If you have any idea what was wrong, please feel free to mail me.

The partitions I ended up with are as follows:
PartitionSizeMount Point
/dev/hda1393M/boot
/dev/hda21771M/
/dev/hda31496M/home
/dev/hda4 (/dev/hda5)248Mswap (extended partition)
In retrospect, I should have allocated more space to the root partition (/), because this partition is now around 85% full. I tend to install lots of my own software from the /usr/local/src directory, and all those tarballs tend to take up lots of space. Perhaps using 2Gig for the root partition would have been a better idea.

After partitioning, the install process was smooth. In a break from my usual procedure, I installed grub instead of lilo, and it has worked perfectly. As usual, I installed Gnome, as well as the software development packages. I recommend always installing the software development packages because gcc is thereby installed automatically. Believe me -- you want gcc -- there are lots of useful packages which are best installed as sources. Having gcc available is your best avenue to ensure future upgradability for your laptop. Also, you should install the Linux kernel source because you will need it later, when you try to bring up the modem.

After the installation, Linux ran happily. Gnome often ran smoothly, but the panel (the thing with buttons on the bottom of the screen) frequently croaked (segfault error) when Gnome was started up. I did a Google search of the web, and it turns out that this is a known bug with no proper fix at this time. *sigh* One work around is to just open a terminal window and relaunch the panel. (That is, issue the command "panel &".) Some usenet posters claim that this problem only exists for users whose .gnome directory was installed at system build time. They recommend deleting the .gnome directory, and letting Linux rebuild it with the next login. I tried that, but the panel died once again one or two logins later. However, I haven't seen panel die in the last several days, so maybe there's something to it . . .

Section summary


PCMCIA Card and Network configuration

My particular machine's ethernet port lives on a PCMCIA card. As delivered, the ethernet card itself was a 3Com Card Bus 10/100 ethernet card. The difference between Card Bus and regular PCMCIA is that CardBus is a 32 bit interface, whereas regular PCMCIA is only 16 bits. The size of the card used, however, is the same.

After starting Linux up for the first time, I discovered to my disappointment that the ethernet interface (eth0) didn't come up upon system boot. The loopback interface (lo), however, did. I had configured the system to get its IP address via DHCP, so networking should have just come up upon system boot as long as I was attached to a network. However, no notification about eth0 ever appeared in the messages spewed at boot time, and the system would time out when I tried to ping an external machine. (The local TCP/IP stack did work, however, because I could ping the loopback interface successfully.) Moreover, I could not bring up the ethernet interface by commanding "ifconfig eth0 up".

At first, I suspected that there was a software misconfiguration, such as a missing driver. I tried recompiling the kernal several times after playing around with the configuration (via xconfig), but eth0 stubbornly remained dead. (Also, the reconfigured and recompiled kernal spewed several boot warnings saying that my ext3 filesystem was not supported. However, this problem was benign, since the machine worked anyway.) None of the reconfigured, recompiled kernels seemed to work, however, and eventually I gave up this aveune of approach.

Next I tried fiddling around with the system startup scripts. RedHat keeps the system start-up scripts under /etc/rc.d (which is usual for un*x), and keeps the system start-up configuration parameters in a new location: /etc/sysconfig. At first I tried to force the ethernet interface to come up by simply placing the "ifup eth0 boot" command directly into /etc/rc.d/rc.init/network outside of the "if" clauses in the vain hope that the system was just incorrectly detecting a misconfiguration. This, however, didn't work. Therefore, I commented out my modifications to the code.

(Parenthetically, one thing I learned while playing around was that Red Hat 7.2 reads the hostname out of a new place: /etc/sysconfig/network. Standard un*x systems store this parameter in /etc/hosts. Therefore, to set your hostname and make the change permanent, you need place the hostname in both files.)

Next, I decided that maybe the fault lay with the PCMCIA interface. I surfed around Google for a while, and discovered that some additional configuration is necessary to make the 3Com card work. In particular, the PCMCIA-HOWTO recommends making the following modifications to the /etc/pcmcia/config.opts file for the Thinkpad 600E:

Unfortunately, after placing these directives in the config.opts file, eth0 still did not come up at boot itme.

Earlier, while playing around with the system init scripts, I did notice that the pcmcia system was scheduled to come up after networking. This might be a problem because reaching the network relies upon having the pcmcia system running. I had seen people on usenet complain that the pcmcia and network systems were brought up out of order. (Note that I have seen other posters asserting that this should make no difference.) The order in which the bring-up scripts is executed is apparently determined by the number in the script name. Therefore, to make the pcmcia system come up before networking, I changed the name of the pcmcia script to "/etc/rc.d/rc3.d/S07pcmcia". Since the networking bring-up script is named "/etc/rc.d/rc3.d/S10network", this causes the pcmcia subsystem to be brought up first. Note that both these file names are just links to the actual scripts which live in "/etc/rc.d/init.d". After making these modifications, I was able to see the ethernet interface when issuing the command "ifconfig eth0 up" and then doing "ifconfig -a". However, after rebooting eth0 was still not brought up, and no IP address was issued to the local DHCP client. On the other hand, I was able to read the card's MAC address, which suggested that I could now successfully communicate with the card. Accordingly, I began to suspect that something was wrong with either the network or the card's front end itself.

Therefore, I decided to try using another ethernet card. I borrowed a Xircom card from a friend. Booting the system using his card, ethernet came right up! A-ha! Hardware problem! I immediately went down to MicroCenter and bought a LinkSys CardBus 10/100 ethernet card from the yellow tag table. This card, too, performed flawlessly: At boot time, I received a message that eth0 had come up, and DHCP was able to get an IP address (which can be seen via "ifconfig -a"). So after messing around for several days, I finally discovered that my problem lay in the hardware. *Aaarg!!* Also, I don't really know which of the changes I made above were necessary, and which were not. However, the systems works well with the changes made, so I'm not going to change things back.

Section summary


Modem Configuration

The modem included in the 600E is based upon a DSP, which means that you need special DSP code as well as a driver to use it. In the past, Linux-based users of the 600E were SOL because the DSP code was only available for Windoze machines. However, IBM has recently stepped up to the plate and ported their ACP modem driver to Linux. (It's even GPL'ed!!) Their port is available here. Thank you, IBM!

So much for the good news . . . now on to the bad: I have tried to bring the ACP modem up on my machine, but -- naturally -- I have encountered problems, and have not been able to make it work fully as of 4.21.2002. First off, upon running ./configure, the script barfed, claiming that it couldn't find the linux source. Apparently, the Red Hat installer doesn't leave the source in /usr/src/linux if you choose the vanilla install. (Or perhaps I overlooked the option of installing the source.) Anyway, I had to use rpm to install the kernel source from the RPMS directory on CD one of the Red Hat installation package before ./configure would finish correctly.

Next, after compiling mwavem I couldn't get it to run. Instead, it issued an error when I tried to start it. After some investigation, I learned that mwavem wants to be compiled and run with exactly the same kernel configuration as the rest of the operation system. Since I had just loaded the sources off the CD, I guessed that the source config was different than the actual config. Therefore, I had to reconfigure and recompile the kernel. After that, mwavem started up and ran fine.

Now my problem is that I can dial up my ISP and make a modem connection, but pppd mysteriously fails. I haven't fixed that problem yet. However, I have heard a rumor that mwave doesn't work with ppp. Stay tuned for an update as I find more information!

I will complete this section when (if) I get the modem up and going.

Section summary


Sound

I haven't done this yet. This link describes in detail how to get sound working. Links to other web pages with sound info are given below.


Automatic Power Management Configuration

Since my battery appears dead, I haven't done this yet. Links to other web pages describing APM configuration are given below.


Conclusions

In summary, it took me several weeks of fiddling around to get enough Linux functionality running on my Thinkpad that it is useful, and I am not done yet. If you are reasonably experienced with Linux, and enjoy tinkering with your system, installing Linux on a Thinkpad 600E is a great way to build an economical laptop. On the other hand, if you are not a Linux geek, don't like fooling around with computers, or just want to get going immediately, you may be better off buying a pre-configured system.



Return to Stuart Brorson's home page.

Last update: 4.20.2002. Please send comments to Stuart Brorson.