By: Marcin Wielgoszewski
Last Update: January 15, 2007
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:
xterm will look like like the following ($ signifies a user, # as "root"):
$ cat /etc/slackware-version
Slackware 11.0.0
# 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.
|
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 |
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.
Change directory to /usr/src
# cd /usr/src
Check for symlink (i.e. /usr/src/linux->/usr/src/linux-2.4.33)
# ls -alc
# file linux
Remove the symlink
# rm linux
Unpack the tarball
# tar -zxvf linux-2.6.19.tar.gz
# tar -jxvf linux-2.6.19.tar.bz2
Make a new link to the new kernel
# ln -s /usr/src/linux-2.6.19 /usr/src/linux
Change directory to /usr/src/linux
# cd /usr/src/linux
Clean up any files we don't need
# make mrproper
Configure the kernel; My .config is available for reference here
# make menuconfig
Compile the kernel, modules, and install the modules
# make bzImage
# make modules
# make modules_install
In this step we remove old symbolic links, and create new ones
First, remove the old symlinks
# rm -rf /boot/System.map
# rm -rf /boot/vmlinuz
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
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
/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
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.
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.
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
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 youlynx users# lynx --source http://gsb.freerock.org/net-install | sh
`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
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
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.
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
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