Slackware 11.0 on a Thinkpad T42

By: Marcin Wielgoszewski
Last Update: January 15, 2007

Contents

  1. A Note From the Author
  2. Specifications
  3. Partition Configuration
  4. Upgrade to Kernel 2.6.19
  5. LILO
  6. Configuring X11
  7. Upgrade to Gnome 2.14.3
  8. IBM Trackpoint
  9. Configuring Sound
  10. Intel 2200BG Wireless Card

A Note From the Author

I've decided to write this document to help whoever I can get Slackware up and running on their Thinkpad laptop. I first got my laptop in December of 2004, and this page has been tracking my progress. I update this page sporadically... usually whenever I get the chance and have actually gotten something new to work. I spiced up the look of this page, and I just wanted to share a couple tidbits before we get started. Below, I will define what each formatting style represents:

  1. All commands to be entered in at the terminal or xterm will look like like the following ($ signifies a user, # as "root"):

    $ cat /etc/slackware-version
    Slackware 11.0.0

  2. All snippets from text configuration files will look like the following (here, # comments a line):

    #!/bin/sh
    #
    # Copyright 2003 Patrick J. Volkerding, Concord, CA
    # Copyright 2003 Slackware Linux, Inc., Concord, CA
    #
    # This program comes with NO WARRANTY, to the extent permitted by law.
    # You may redistribute copies of this program under the terms of the
    # GNU General Public License.

Back to Contents

Specifications

  • Thinkpad T42 2378FVU
  • 14.1" 1400x1050 SXGA+ TFT Active Matrix
  • 1.7GHz Pentium M with Centrino Mobile Technology
  • 768MB PC3200 DDR RAM
  • 64MB ATI Mobility Radeon 9600
  • Intel PRO/Wireless 2200BG
  • Intel 10/100/1000 ethernet card
  • 40GB 5400RPM Hard Drive
  • 24x/8x/24x/24x CD-RW/DVD-ROM
  • 6-cell Li-Ion battery

Back to Contents

Partition Configuration

Before we are able to install Slackware, we need to partition the hard drive. To partition, we use fdisk.

# fdisk /dev/hda
Command (m for help):

Typing m will list a bunch of options you can use now. The ones we find most useful right now are:

a - toggle a bootable flag
n - add a new partition
p - print the partition table
t - change a partition's system id
w - write table to disk and exit

We are going to toggle a bootable flag for the partition which will have / or /boot mounted to it. For my system and partition configuration scheme, this will be /dev/hda1. Also, the swap partition we create needs to have its partition system id changed to 82.

Device
Boot
Start
End
Blocks 
ID
 System
Mount
/dev/hda1
*
1
30
226768+
83
 Linux
/
/dev/hda2
 
31
97
506520 
82
 Linux Swap
swap
/dev/hda3
 
98
230
1005480 
83
 Linux
/var
/dev/hda4
 
231
5168
37331280 
5
 Extended
 
/dev/hda5
 
231
360
982768+
83
 Linux
/opt
/dev/hda6
 
361
1653
9775048+
83
 Linux
/usr
/dev/hda7
 
1654
5168
26573368+
83
 Linux
/home

Back to Contents

Upgrade to Kernel 2.6.19

I downloaded the 2.6.19 kernel from Kernel.org to my /usr/src directory. If you are installing a different kernel, as updated kernels are released frequently, please take into account the filename differences. Also note what kernel was installed with Slackware as it may be different than mine here.

  1. Change directory to /usr/src

    # cd /usr/src

  2. Check for symlink (i.e. /usr/src/linux->/usr/src/linux-2.4.33)

    # ls -alc
    # file linux

  3. Remove the symlink

    # rm linux

  4. Unpack the tarball

    # tar -zxvf linux-2.6.19.tar.gz
    # tar -jxvf linux-2.6.19.tar.bz2

  5. Make a new link to the new kernel

    # ln -s /usr/src/linux-2.6.19 /usr/src/linux

  6. Change directory to /usr/src/linux

    # cd /usr/src/linux

  7. Clean up any files we don't need

    # make mrproper

  8. Configure the kernel; My .config is available for reference here

    # make menuconfig

  9. Compile the kernel, modules, and install the modules

    # make bzImage
    # make modules
    # make modules_install

  10. In this step we remove old symbolic links, and create new ones

    1. First, remove the old symlinks

      # rm -rf /boot/System.map
      # rm -rf /boot/vmlinuz

    2. Then copy the bzImage and System.map to /boot/

      # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.19
      # cp /usr/src/linux/System.map /boot/System.map-2.6.19

    3. Now, make the new symlinks

      # ln -s /boot/vmlinuz-2.6.19 /boot/vmlinuz
      # ln -s /boot/System.map-2.6.19 /boot/System.map

  11. Now, using your favorite text editor, open up /etc/lilo.conf and edit it to look something like this:

    # Linux bootable partition config begins
    image = /boot/vmlinuz
      root = /dev/hda1
      label = Slack-2.6.19
      read-only
    image = /boot/vmlinuz-ide-2.4.33
      root = /dev/hda1
      label = Slack-2.4.33
      read-only
    # Linux bootable partition config ends

  12. After you have added the above to your /etc/lilo.conf, we need to notify LILO of the changes. So, to do this run:

    # lilo

    or if lilo is not in your path run,

    # /sbin/lilo

We leave the old kernel image (vmlinuz-2.4.33) in place as well as in our LILO config file, just in case our new kernel image won't load correctly. Well, that's it... Easier than you thought huh? Now all you have to is reboot and select the new kernel on boot.

Back to Contents

LILO

I added and changed a couple things in the first part of my lilo.conf

# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
#
# Allow booting past 1024th cylinder with a recent BIOS
lba32
boot = /dev/hda
prompt
# load kernel image in fraction of the time
compact
# change timeout from default 30 seconds to 10 seconds
timeout = 100

You can download mine in it's entirety by clicking here.

Back to Contents

Configuring X11

You will need to build an xorg.conf file in your /etc/X11/ directory. If you have the same model and/or have a 1400x1050 resolution screen, I have one readily available for download here.

$ wget /xorg.conf
# mv ~/xorg.conf /etc/X11/

Now you should succesfully be able to start X with the command:

$ startx

Back to Contents

Upgrade to Gnome 2.14.3

I felt like upgrading to the latest Gnome that came out, since that is the window manager that I use and also because it has a few features that I'd like to use. One of them that is of interest to me is the "CPU Frequency Monitor" that watches variable-speed processors such as the Pentium M with Intel Speedstep technology. I downloaded the pre-built Gnome package for Slackware from Gnome.Slackbuild. I got these instructions off of the website, and they worked perfectly for me.

I chose not to use their "easy, one step installation" process, which is run by the command below. The reason for this, is because the net-install script uses the /var/slapt-get directory. Since my /var directory is only 1GB, I can't fit all the needed installation packages. If your /var directory is bigger than mine, you can make life easier and go right ahead and use it!

# links -source http://gsb.freerock.org/net-install | sh

or for you lynx users

# lynx --source http://gsb.freerock.org/net-install | sh

Installation via `slapt-get`

Add the FRG package repository mirror of your choice to /etc/slapt-get/slapt-getrc

SOURCE=<path of mirror>/frg-<version>

Since my /var directory is only 1GB, I am going to have to change slapt-get working directory to something with more room. I change this in the /etc/slapt-get/slaptget-getrc file as well

Then, you need to let slapt-get know what's available in the repositories by

# slapt-get --update

Now that that's done, we can go ahead download and install Freerock Gnome

# slapt-get --upgrade
# slapt-get --install frgnome

Installation via ISO

Download the iso and md5 file, and then check the iso

# md5sum -c frg-2.14.3.iso.md5

Then mount the iso and change to the iso directory

# mkdir /mnt/iso
# mount -t /iso9960 frg-2.14.3.iso /mnt/iso -o loop
# cd /mnt/iso

Then run either of these two commands depending on which installation you want

# ./min_install.sh
# ./full_install.sh

If you get any errors saying the kernel doesn't support loop instructions, I would make sure these options are set in your .config file and recompile and install your kernel

CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=m

Back to Contents

IBM Trackpoint

We have to get the Trackpoint driver written by Stephen Evanchik in order to get our Trackpoint to work. You will need kernel v2.6.x to take advantage of the increased functionality it provides. Refer to the section on installing the 2.6.19 kernel above.

Download the patch and then,

$ wget trackpoint-2.6.10.patch
# mv trackpoint-2.6.10.patch /usr/src/linux-2.6.10/trackpoint-2.6.10.patch
# patch -p1 < trackpoint-2.6.10.patch

After that, we must compile the driver, and compile PS/2 mouse support into the kernel. In our .config, we set the following lines:

CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m

After that, do steps 9-12 from the "Upgrade to 2.6.19 Kernel" section and you should be all set with the driver. You can modify the Trackpoint's behavior dynamically via the files in /proc/trackpoint/. To configure the device you need to edit /etc/modprobe.conf.

Here is what I have in mine:

options psmouse speed=160 sensitivity=160

This adjusts the speed and sensitivity accordingly. To enable Trackpoing scrolling, you will need to configure it using Xorg.

Back to Contents

Configuring Sound

Configuring sound on my Thinkpad T42, was no biggie. Just enable the drivers in the kernel and it should be all set. Below are the options in the kernel .config file I enabled to get sound working. If there's anything you find I should change, let me know.

# Sound
CONFIG_SOUND=y

# Advanced Linux Sound Architecture
CONFIG_SND=y
CONFIG_SND_TIMER=y
CONFIG_SND_PCM=y
CONFIG_SND_SEQUENCER=y
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_SEQUENCER_OSS=y

# Generic devices
CONFIG_SND_AC97_CODEC=y
CONFIG_SND_AC97_BUS=y

Back to Contents

Intel PRO/Wireless 2200BG

I wanted to get my wireless card working, because I'm always on the go with my laptop and I need to be able to access wireless internet at home and at school. So, I went to the IPW2200 project page at SourceForge which was originally created by Intel to enable support for the 2200BG and 2915ABG wireless miniPCI adapters.

To use this driver, you will need Kernel v2.6.8+, Wireless Extensions & Tools, the IPW2200 driver and the IPW2200 binary firmware image. Since we already have Kernel 2.6.19 installed, it already comes with Wireless Extensions(v19) which was implemented in the 2.6.13 kernel version. Wireless Tools(v27) is also included in Slackware, and we won't have to bother installing it.

We will need the following options set in our .config and compiled into the kernel, and for the support of wireless encryption you will need a few more options enabled, so be sure you have this set before you go any furthur

CONFIG_NET_RADIO=y
CONFIG_FW_LOADER=y
CONFIG_CRYPTO=y

Optional support for WEP

CONFIG_CRYPTO_ARC4=y
CONFIG_CRC32=y

Optional support for WPA, you will also need the previous options from WEP enabled as well

CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_AES_586=y

We need to have sysfs mounted. This facility is used to query and control the operation of the ipw2200 driver. You can do this by adding an entry to /etc/fstab if it hasn't already been done so.

none            /sys            sysfs   defaults                0       0

If the /sys directory does not already exist, you will need to create and mount it

# mkdir /sys
# mount -a

Install the ieee80211 modules

# tar xfvz ieee80211-1.1.6.tgz
# cd ieee80211-1.1.6
# make
# make install

Now we will build and install the driver

# tar xfvz ipw2200-1.0.8.tgz
# cd ipw2200-1.0.8
# make
# make install

Let's install the firmware now. The INSTALL document suggests that we install firmware to /usr/lib/hotplug/firmware, however it also says to check /etc/hotplug/firmware.agent to determine the specific location where you install firmware to in your specific distribution. After checking the firmware.agent file, I determined that /lib/firmware is the directory to where to install for Slackware, however that directory has not been created.

Create /lib/firmware directory (if it does not already exist) and extract the binary firmware images

# mkdir /lib/firmware
# tar xfvz ipw2200-fw-2.4.tgz

Now, you should be all set and you could reboot and it should load properly. To check this, do

# dmesg

If you have any errors at the end like shown below, chances are your firmware is installed to the wrong directory. Double check /etc/hotplug/firmware.agent on where to install firmware images to

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8
ipw2200: Copyright(c) 2003-2004 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw-2.4-boot.fw load failed: Reason -2
ipw2200: Unable to load firmware: 0xFFFFFFFE
ipw2200: failed to register network device
ipw2200: probe of 0000:00:0b.0 failed with error -5

Back to Contents