Installing Red Hat Enterprise WS 3.0 or Fedora Core 2 on the IBM Thinkpad T42p 2379-DYU


2379-DYU Specs:



For my overall impressions of the 2379-DYU Thinkpad, visit my review page.

Contents


IMPORTANT! Fedora Core 2 Installation Bug and Dual Boot

Be warned!   There is a bug in the Fedora Core 2 installation that messes around with the hard disk geometry recorded in the partition table.  Specifically, it sets the number of cylinders from 255 (which is what Windows wants) to 16.  Although this in theory should have no effect at all for either Windows XP or Linux, it can cause a Windows boot failure.  The bug is completely recoverable and can be easily worked around while installing FC2.  I did not learn of this bug until after I installed FC2, but fortunately I lucked out and it did not cause me problems.  As soon as I completely back up my hard drive, I will try the fix.  Follow this link to lwn.net for information on how to work around this bug.

UPDATE 06/22/04 : I tried the fix and it worked just fine.  Now, the proper CHS for my drive is 9729/255/63.  I had to use the --force option with sfdisk, which for me did not complain about partitions on the drive being mounted (which they were) but rather said "I don't like these partitions - nothing changed".  Afterward writing the new geometry and partition table, it gives some more warnings but I simply rebooted and everything is fine.

UPDATE 2/10/05: Installation of stock FC2 2.6.10 kernel and ATI proprietary drivers

For the first time in over 6 months, I decided to mess with my FC2 installation.  This was brought on by my linux desktop at work experiencing a hard drive crash.  A hard drive was going to take 2 weeks to replace under warranty, so I figured I would simply connect my T42 to the existing monitor, mouse, and keyboard and use it as a desktop replacement.  After doing all of the updates described below, I am actually so happy with this setup I might just buy a port replicator and give my desktop machine (once the replacement drive arrives) to somebody else.

In any case, the problem I had was that a feature of the VESA driver I had been using (see Fedora Core 2 Installation below) only outputs to the external VGA port at 60Hz regardless of resolution.  The flicker on my 22" CRT monitor at 60Hz is enough to make my eyeballs pop out in under 3 seconds.  So I decided to try and install the proprietary ATI drivers, which I heard were fairly decent these days (and now work with 2.6 kernels).  The problem is that the current 8.8.25 version of their drivers are offered for XFree86 4.1-4.3, and X.Org 6.8.  Of course, FC2 comes with X.Org 6.7!  I could not get the X.Org 6.8 drivers to work with FC2.  Somebody did manage to get them to work with FC2, however, and the RPMs are stored at the repository rpm.livna.org, which is both yum-able and apt-able.  They are built against specific FC2 stock kernels, however, so I decided to ditch my custom 2.6.6 kernel and install 2.6.10-1.12_FC2.  As far as I can tell, ACPI and speedstepping work fine with this kernel.  Since I hardly ever use SWSUSP2 anyway (the e1000 LAN driver does not like unsuspending for some reason), I have not bothered to try and reintroduce this into the kernel.

ATI Driver Installation: Point yum or apt at the archive at rpm.livna.org (archive config instructions at availible on the website) and install "ati-fglrx" and the appropriate "kernel-module-fglrx-your_kernel_here" RPM.  Once these are installed, execute "fglrxconfig".  The options I used are as follows:
fglrxconfig will then write everything to the file /etc/X11/XF86config-4 (which is pretty stupid of it if you ask me).  Copy this file to /etc/X11/xorg.conf and change the "XkbRules" field from "xfree86" to "xorg".  Restart the X server and you should be in business!   For 2.6.10-1.12_FC2 kernel and the livna.org drivers, everything has worked fine.  I can even have the screen blank automatically when the lid closes and unlike my last experience with the ATI drivers, the screen will properly restore when turned back on.  Also, it continues to send output to the external VGA port even when the laptop screen is blanked, so I can plug in my external monitor, keyboard, and mouse and shut the laptop itself and still use it.

A word about clone mode: the driver will automatically send the best resolution/refresh to the external monitor that works with the provided specifications.  If the desktop is larger than the max resolution of the external monitor, it will automatically turn it into a virtual desktop...pretty neat.  If you want to edit the specifications of the external monitor without the pain of rerunning fglrxconfig, simply change the lines Option "HSync2" and Option "VRefresh2" to the values appropriate to the new monitor.  I actually wrote several HSync2/VRefresh2 combos and commented them out: one for XGA, one for SXGA (both of these are common specs for projectors) and one for my CRT at work.  This way, I can simply uncomment the one I want and restart the X server.  For those who are interested, here is my xorg.conf configuration file.

Suspend-to-RAM: I have read that suspend-to-ram works for FC3 for kernels less than 2.6.10.  I have tried using ACPI suspend (even with no X running and the fglrx module unloaded) and it certainly suspends, but does not resume properly.

MadWifi Installation: Having a stock kernel means that I can now use precompiled MadWifi drivers for the IBM/Atheros mini-PCI wireless card.  I downloaded them from http://www.atrpms.net/name/madwifi/.

NTFS module: NTFS support is not compiled into the stock FC2 kernel.  But rpm.livna.org also has the precompiled ntfs.ko module, so just grab it from there as well.


Restore Options and the IBM_SERVICE Partition

New for the T42 is the replacement of the protected pre-desktop "partition" with the IBM_SERVICE partition.  The former was not actually a partition per se, but an unpartitioned part of the hard drive that was protected by the BIOS.  With the T42, the recovery area is now stored in a genuine vfat partition 4.28GB in size and named IBM_SERVICE.  PartitionMagic 7 had no problem deleting this partition, and no BIOS flags needed to be messed with.  Also new with the T42 is the ability to burn your own recovery CDs!  You no longer have to call IBM and beg them to send them to you (and admit to them that you are...GASP!...installing another operating system on their hardware).  Just start the Access IBM program, look under Rescue and Recovery (or something similar) and there will be an option to make recovery CDs.  I strongly suggest that you do this.  It takes 7 CDs.  Note that it seems to burn them rather slowly...much more slowly than burning and ISO image with the included RecordNow software.

After you have made your recovery CDs, whether or not you delete the IBM_SERVICE partition depends on your personal taste.  The IBM_SERVICE partition basically contains all the information to rebuild the Windows XP installation (plus all IBM installed software) on your hard drive.  Thus, you can reinstall Windows XP at the touch of a button...so a restore partition is not really that bad of an idea, provided you can live with the spent disk space.  Hitting the "Access IBM" button at boot time causes you to "boot" to this partition, and it gives your various backup and recovery options.  You should check it out at least once.  According to the IBM Rapid Rescue and Restore Ultra (RRnRU) documentation, if you restore Windows XP  from the IBM_SERVICE partition, you have the option of only restoring to the 1st NTFS partition on the hard drive and therefore not blowing away your Linux partitions.  Extra handy!  If you restore from CD, however, it will completely blow away the entire drive, repartition, and return it to factory-shipped condition.

Also, I would not recommend using RRnRU to actually back up your drive, although it has this functionality.  I have read warnings where it has to be "reinstalled" if ever the partition table if the drive is altered, and there are certain situations where you run the risk of invalidating your backups.  This kind of thing seems a little scary to me for backing up critical information, so I elected to use other backup software for my Windows XP backups.

I chose to delete the IBM_SERVICE partition, but first I backed up everything I needed to completely reinstall the Windows XP by hand and all IBM-installed software.  It turns out, that all of the information you need to completely reinstall Windows XP Pro from scratch is in the directories C:\I386, C:\DRIVERS, C:\SUPPORT, and C:\VALUEADD (actually, you might not need C:\DRIVERS, but you might as well include it).  I simply used BartPE to create a bootable CD with the these 4 directories on it.  All of the IBM installed software is located in C:\IBMTOOLS.  I copied these to DVD-R.  I think one can make a bootable DVD-R with BartPE as well, but I have not tried that yet.

So now if I need to reinstall Windows XP at a later date, all I need to do is boot from the CD I created with BartPE, and it will automatically run Windows XP setup. After the install, I can stick the DVD in the drive and re-install all of the IBM-included software.


Repartitioning

I used PartitionMagic 7 to delete the IBM_SERVICE partition and shrink the NTFS partition down to 35 GB.  This worked flawlessly.  I highly suggest purchasing this product...the time it saves you is worth the money.  I did further partitioning using Disk Druid during the RHEL and FC2 installations.


Red Hat Enterprise WS 3.0 Installation

I first tried to install RHEL WS 3.0 on my Thinkpad.  The installation worked fine with no hitches at all.  Note that if you have the ATI Radeon 9600 or FireGL T2 (which is really a 9600), you should use the VESA driver, and not any ATI Radeon driver.  If you tell it to use the "ATI Radeon (generic)" driver, it will happily act like it is doing so, but it will actually use the VESA one anyway without telling you.

I was disappointed to realize that the RHEL kernel does not come with CPUFREQ compiled in.  Thus, it is not possible to use the speedstepping ability of the Pentium-M in RHEL.  I found a website where somebody had updated the kernel to include this ability, but when I tried this, I found I could not get X11 to work at all, and I also managed to break rpm.  So I would not recommend trying this unless you have time to spare.

The reason I had tried RHEL is because ATI claims to "support" it with its proprietary drivers.  I tried using these drivers, and although they do speed things up quite a bit, they also crash upon standby or suspend.  Note that you can remove the flgrx kernel module that they provide and get standby to work, but this also removes hardware acceleration, so there does not seem like there is much of a point to that particular "solution."


Fedora Core 2 Installation

Since I had read at least a dozen pages that said something like "I installed Fedora Core 1 on my T40 [or T41] and everything work out of the box!", I decided to take the path of least resistance and install Fedora.  Since FC2 had just come out, and was supposed to be more stable and FC1, I tried it out.  UPDATE 7/05/04: Originally I could not get CPUFREQ and speedstep-centrino working in FC2.  I figured that this was because they were not included for some strange reason (even though they were in FC1).  I have now been told that they both are actually compiled straight into the FC2 stock kernel, but do not work with the Dothan processor.  However, getting the latest FC2 errata kernel from RedHat will fix that.  I have not tried this myself, but if you do not want to recompile your kernel, try getting the latest FC2 kernel and see how that works.  If you still have to or want to rebuild the kernel, I make easy for you by giving you my kernel .config file below :).  Also, remember there is the FC2 installation bug explained above that, when not circumvented, messes with your hard drive geometry.

Since you know about the FC2 installation bug, follow the directions on lwn.net to prevent FC2 from mucking with your hard drive geometry.  Installation proceeded flawlessly for me.  As with RHEL, if you have the ATI Radeon 9600 or FireGL T2 (which is really a 9600), you should use the VESA driver, and not any ATI Radeon driver.  I have seen some cases where people have managed to get an ATI driver working, but the VESA one works fine for me, and recovers from standby and suspend, so I have not messed with it further.


Recompiling to Enable Speedstepping, Laptop-Mode, and Suspend

So FC2 is running just fine, but CPUFREQ is not.  You will need to recompile the kernel to enable this feature (or try downloaded the latest errata kernel which supposedly fixes this problem for Dothan processors).  Since I had to recompile, I decided to add all the latest laptop features.

First, get kernel 2.6.6 from kernel.org.  For detailed instructions on building a Linux kernel, I recommend the Digital Hermit Kernel Rebuild Guide.  Unpack the kernel source to /usr/src/linux-2.6.6.

If you want to be able to suspend to disk using swsusp2, then download this swsusp2 tarfile, untar it, cd to /usr/src/linux.2.6.6, and apply the patches in sorted order using "patch -p1 < patchfile".

Laptop-mode is already included as part of the 2.6.6 kernel.  Download and apply the three kernel patches on the laptop-mode website.

The hardest part of building the kernel is configuring it.  But you can use my Kernel config file to save yourself some time.  This should have all necessary options for any of the T42s out there.  It uses ACPI (not APM), but ACPI seems to work fine for me, as well as for most other Thinkpad owners.

Now that you have patched the kernel, you can configure and build it:
  1.  cd /usr/src/linux.2.6.6
  2.  make mrproper
  3.  Copy my kernel config file to /usr/src/linux.2.6.6/.config
  4.  make menuconfig or make xconfig to review my kernel configuration choices
  5.  make
  6.  make modules_install
  7.  make install
This will automatically update grub, so you should now be able to reboot into the new kernel.


Installing ThinkPad Buttons (TPB)

Most of the important Thinkpad keys seem to function under Linux, the only shortcoming is that keys like "volume", "mute", and "brightness" do not show their settings on the screen when pressed.  This is where TPB comes it.  TPB provides an on-screen-display (OSD) and user-configurable actions for keys like the volume, mute, contrast adjustment, sleep (Fn-F4), Access IBM, and the oh-so-nifty Thinklight.  You will need to install the xosd RPM (available with apt or yum) first, then tpb-0.6.0 which is also part of the FC2 distribution.  So far, I just use the default configuration, and almost everything seems to work fine.  I have not yet figured out how to recognized the Fn-F3 and Fn-F12 keys, however.


Configuring your T42 to conserve power

Optimizing your T42's ability to save power is a delicate dance between ACPI--which notices events such as the lid being shut, Thinkpad buttons being pressed (if you installed TPB), or the ac-adapter being plugged and unplugged--and SWSUSP2 which suspends to disk, Speedstepping which throttles your CPUs speed according to load, and laptop-mode which attempts to optimize hard drive behavior.  I describe how to set up each of these options below, then how to tie it all together by configuring ACPI.

For power management configuration, I learned everything I needed to know from these two excellent webpages:


Configuring Speedstepping

Make sure the kernel module "speedstep-centrino" is loaded (lsmod | grep speedstep).  If not, modprobe speedstep-centrino should solve that.  It may also be compiled into the kernel.  Install Volker's /etc/cpuspeed.conf file.

To verify that it's working, you should see a directory /sys/devices/system/cpu/cpu0/cpufreq.  There should also be a directory /proc/acpi/processor/CPU if ACPI is doing its thing.  A great way to keep an eye on your CPU speed is the GNOME-CPUFreq Applet.  FC2 RPMs for this are also available here.


Configuring SWSUSP2

In order to use SWSUSP2, you must append the line in your /etc/grub.conf file according to the instructions on the swsusp website.  Then, you must run the suspend.sh script according to the swsusp website instructions, which will create the files /etc/suspend.conf and /usr/local/sbin/hibernate.

Everything worked fine for me after un-suspending except for wired ethernet and USB.  The USB issue can be easily fixed by adding "ehci_hcd uhci_hcd" to SWSUSP_REMOVEMODS and SWSUSP_INSERTMODS in /etc/suspend.conf to force swsusp2 to remove the USB modules upon suspend and then reinsert them upon unsuspend.  The ethernet adapter problem is a little more complex, but I have discovered that manually shutting down the eth0 interface (ifdown eth0) and them removing the e1000 module (rmmod e1000) before suspend will guarantee that the module will load properly when networking is restarted after unsuspending.  For some reason, I cannot get this to work automatically (as in the case of USB).  I will update here when I experiment more.


Configuring Laptop-Mode

Laptop-mode is included in the kernel.  The only thing you need to do is install the the laptop_mode script which is part of the laptop-mode documentation included with the kernel (/usr/src/linux-2.6.6/Documentation/laptop-mode.txt).  You can get everything else you need from my ACPI configuration files in the next section.


Configuring ACPI

I learned almost everything I know about configuring ACPI from Alexander Wagner's website, and I highly recommend reading his ACPI section.  You can download and install my /etc/acpi directory and all of its files and this will get ACPI up and running for you.  My settings are as follows:
Viola!  You now have a power-efficient laptop that will also suspend to disk.


IBM (Atheros) a/b/g Wireless

Wireless is the other quintessential Linux headache.  Fortunately, it's relatively easy for the Atheros chipset if you know what you are doing.  I didn't, so it took me awhile, but that's why I am writing these instructions...so you don't have to repeat my mistakes. :)  Again, I highly recommend the MADwifi section of Alexander Wagner's website.

First, install the wireless-tools-26-4 RPM for FC2.  Then, follow the instructions for getting the latest drivers from the MADwifi FAQ.  Strangely, FC2 does not by default install uudecode (it's part of the sharutils package).  This is needed by the MADwifi build, so make sure to install the sharutils RPM.  As root, cd to the madwifi directory.  If you want to make the wireless LED come on when the modules are loaded, type export COPTS="$COPTS -DSOFTLED".  Then just do a make.  I got loads of warnings concerning unresolved symbols (mostly ieee ones), but rebulding my kernel with CONFIG_MODVERSIONS=n as suggested by the MADwifi FAQ did nothing to eliminate these.  The driver seems to still work fine, so as long as the kernel modules actually build, then forge ahead and do a make install.

This should install 3 modules: ath_pci.ko, ath_hal.ko, and wlan.ko.  When you reboot, Kudzu will detect your wireless card (hooray!) and promptly configure it incorrectly (boo!): the drivers operate through interface ath0, not eth1 as Kudzu will try and configure them as.  So just make your own /etc/sysconfig/network-scripts/ifcfg-ath0 file, or follow the link to mine which is set up to connect using DHCP.

To start the interface, ensure the drivers are loaded with modprobe ath_pci, then bring up the ath0 interface with ifconfig ath0 up.  Now try iwlist ath0 scan, and you should see information about all access points that your wireless card can detect.  If you need to, modify your settings to /etc/sysconfig/network-scripts/ifcfg-ath0, then type ifup ath0 and you should connect.

One tools that I found enormously useful was the wavemon package, which I also found (somewhere) in the form of wavemon-0.4.0b-65.i586.rpm.  Running this in a separate window while you try and connect to a wireless AP will give you a good picture of what is going on.

Here are a couple of hints as to the configuration of the card (make sure to bring up the card with iwconfig ath0 up before doing any of these):

Setting wireless mode:
Setting authentication mode:
In Fedora, iwpriv options can also be specified in the ifcfg-ath0 script using IWPRIV, e.g. IWPRIV="authmode 2".


Sound

Sound works out of the box using the snd-intel8x0 module.  The volume keys also work with TPB.


Bluetooth

I do not own any Bluetooth devices yet, but hitting Fn-F5 lights up the Bluetooth light!  See this website for information about Bluetooth setup.


Modem

The T42 comes with a Conexant HSF modem.  Note that this is completely different than the T40/41 and every other current Thinkpad model I have seen (even R50s) which all have the Agere Softmodem.  Foolishly I had assumed that the T42 had the Agere modem, so I spent many hours tearing my hair out trying to get it to work with the Smartlink drivers, as instructed by all other T40/41 Linux HOWTO sites.  In my defence, I point out two things: 1 - the Smartlink drivers actually work insofar as talking to the modem...it just cannot detect dialtones or handshakes, and 2 - it is nearly impossible to actually identify this as a Conexant modem.  The modem detection utilities such as scanModem and Linuxant's Listmodem do not work.

In any case, just download the HSF (softmodem) drivers from the Linuxant website and off you go.  I downloaded their "Generic" RPM and just "rpm -Uvh"ed it and it compiled for the custom kernel and installed with no problems.  Their free driver supports only up to 14.4kbps, but their full version is only $14.95 and supports up to V92 and FAX.


TuxMobil - Linux on Laptops, PDAs and mobile Phones