I purchased a Thinkpad T41p from IBM Certified Used equipment in May, 2004. The model number (which designates it as 'Certified Used') is T2373XQX, but it is a T41p through and through. The specs are as follows:
I've had this laptop for about 48 hours by this point, and I'm thrilled. I can't say enough good things about it. IBM has always made a good laptop, and this one is top-notch. After years of using middling Dell and Toshiba laptops, it's quite refreshing to use a machine with absolutely no compromises.
Some quick notes:
I decided I wanted to keep Windows XP on this box, at least for a while, on the outside change I might need it. Since I have a 60G drive, allocating 20G to Windows isn't really much of a sacrifice.
I used Partition Magic 7.0 to shrink the Windows partition to 60G, and to create the proper partitions for linux. In retrospect, I goofed one thing: I went through the trouble of creating a 64M partition at the front of the drive for my /boot partition, remembering the old days when Linux couldn't boot unless the kernel was in the first 2G of the drive. That's not necessary any more, but I did it anyways. No harm, no foul.
The final partition map is as follows:
peter@veronica peter $ sudo /sbin/fdisk -l /dev/hda Disk /dev/hda: 56.4 GB, 56490650112 bytes 240 heads, 63 sectors/track, 7297 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System /dev/hda1 * 11 2719 20480008+ 7 HPFS/NTFS /dev/hda2 2 10 68040 5 Extended /dev/hda3 7159 7297 1050840 82 Linux swap /dev/hda4 2720 7158 33558840 83 Linux /dev/hda5 2 10 68008+ 83 Linux Partition table entries are not in disk order
A note on drive size: IBM ships their Thinkpads with a 'hidden' partition, which is supposed to contain the necessary data to recover the machine to factory-original state, rather than shipping the CDs to do so (somehow, I think M$FT is behind this). In my tinkering, I managed to break this, but I haven't made use of the extra 5G. If drive space becomes important, I might have to go look for it.
So with the drive partitioned, time to start the Gentoo installation. I used the latest Live CD I could find (Gentoo 2004.1), and started. Booted like a charm, though the gigabit ethernet jack was not setup as part of the boot process. That was fixed quickly:
# modprobe e1000 # net-setup eth0
Filesystems: I decided to go with ext3 as my filesystem across the board - I've heard that while reiserfs is great, it's not necessarily laptop-friendly (e.g. constant drive spinning). I like reiserfs plenty, but ext3 is fine for my needs.
At this point, I went forward with a standard Gentoo installation, starting with a stage1 tarball (see the Gentoo Installation Handbook for further instructions). Here are the relevant settings from /etc/make.conf:
CFLAGS="-march=pentium3 -O2 -pipe -msse2 -fomit-frame-pointer -fforce-addr -frename-registers -fprefetch-loop-arrays -falign-functions=64"
CHOST="i686-pc-linux-gnu"
USE="apm arts avi crypt cups dvd encode gif gtk2 imap imlib jpeg -kde libwww maildir mikmod motif ncurses oci8 oggvorbis opengl oss pam pcmcia pdflib png python -qt quicktime radeon readline sasl sdl slang spell svga tcpd X xml2 xmms xv zlib"
CXXFLAGS="${CFLAGS}"
VIDEO_CARDS="radeon"
The only change I made was to disable java (USE="-java") before Bootstrapping, as it apparently speeds up compilation of gcc et al by a large amount, without breaking future java support (this is mentioned in the Handbook). If you do this, make sure to unset USE when finished.
I decided to go with the 2.6.x kernel series, using the mm- patches (improved laptop support).
# emerge mm-sources
My Kernel Config is not finalized at this point. It is set up with use of the ATI Binary drivers in mind - AGPGART and the Intel AGP chipsets are modules, DRM support is compiled in, but none of the DRM chipsets in the kernel are selected.
After compilation, I also emerged the Intel Gigabit Ethernet driver module:
emerge e1000
The following modules have been added to my /etc/modules.autoload.d/kernel-2.6 :
e1000 rtc agpgart intel_agp
Configuring XWindows was surprisingly straightforward, for once.
# emerge xfree # emerge gnome # ACCEPT_KEYWORDS="~x86" emerge ati-drivers
At this moment, what Gentoo considers to be the stable ATI drivers have some known problems with laptops (e.g. suspend issues). Make sure you're installing version 3.7.6 or later of these drivers, or you may run into trouble later.
# modprobe fglrx # opengl-update ati
Added the following line to /etc/modules.autoload.d/kernel-2.6:
fglrx
At this point, use fglrxconfig to generate your XF86Config-4. Mine worked fine as generated, with no tweaks, but here it is: XF86Config
My glxgears scores are about 2000-2100. I assume that's about right.
Sound worked perfectly from the get-go. I enabled ALSA in my kernel config, and added support for Intel i8x0/MX440 hardware (Device Drivers -> Sound -> ALSA -> PCI Devices). I also enabled the OSS API options for ALSA.
I've got wireless up and running, and things work well, but I'm running proprietary drivers that taint the kernel. I'm actually curious as to open-source solutions on this one, please let me know if you've got any information on this.
That being said, setup is easy:
# emerge wireless-tools # emerge wavemon # ACCEPT_KEYWORDS="~x86" emerge madwifi # modprobe ath_pci
At this point, you're good to go - just a matter of wireless config:
# ifconfig ath0 up # iwconfig ath0 essid "MyAccessNode" # dhcpd ath0
You can put the necessary wireless config information in /etc/conf.d/net. My full config is quite basic (DHCP for both interfaces, an open and unencrypted access point):
# everything gets IP via DHCP iface_eth0="dhcp" iface_ath0="dhcp" # wireless options for ath0 wireless_essid_ath0="MyAccessNode" # Managed is default wireless_mode_ath0="Managed" # Setup any other config commands. This is basically the iwconfig argument # without the iwconfig $iface #wireless_config_ath0=""
ACPI works, I'm still in the process of full configuration. Make sure you compile full support for ACPI in the kernel, along with support for sysfs (the now-and-future interface for ACPI).
# mkdir /sys # mount -t sysfs none /sys # emerge acpid # /etc/init.d/acpid start
At this point, the ACPI daemon is running, and monitoring all the various ACPI events. You can create scripts that will be executed by acpid when events are triggered (e.g. lid closure, power button pressed, etc). I haven't worked too much on this yet.
I also installed cpufreqd. If you're not familiar with it, cpufreqd handles CPU throttling based on various scenarious. For example, if I'm running on battery power and not running anything cpu-intensive (by my definition), cpufreqd throttles the system down to 600Mhz, extending battery life greatly. In the couple of days I've used it, it seems to be doing the job.
# emerge cpufreqd # /etc/init.d/cpufreqd start
One of the reasons setup was so easy was that plenty of people before me have installed various Linux distros on the T4x-series before me. It's only fair that I list them here: