Install Slackware 13.0 on a Thinkpad T400

From ThinkWiki
Jump to: navigation, search

This guide is based on Slackware 13.0 using the stock kernel 2.6.29.6 starting from a Windows Vista installation. This guide is based upon the guide for installing Slackware 12.2 on a T400.

Installation

  • Before beginning, I suggest creating a set of Rescue and Recovery disks just in case something accidentally happens during the installation process. Also, I suggest creating a set of Vista recovery disks. You shouldn't have any need for them if you follow the steps and this guide. However recovery disks are comforting to have considering Lenovo tends not to provide disks and rather provides just a recovery partition on the hard drive.
  • If you wish to keep windows vista and the recovery partition, you will need to resize the partition. This is best done with a tool such as Gparted. Gparted has Live version available which can be installed on a flash/CD/DVD drive and then booted. Be sure only to resize the Windows Vista partition, the largest partition, also make sure that the round to cylinders option is not checked. If the partitions are rounded to the cylinders, the recovery partition as well as the windows Vista partition may no longer work. Once you have resized the partition, you can allocate an extended partition in which you can make partitions for linux. Be sure to make at least one for the linux installation and another for the swap. REboot and make sure that everything is still working. The Lenovo Recovery software will notice something has changed and want to attempt a "recovery", just tell it no. Make sure both Windows Vista and the Lenovo Recovery software are still working.
  • There are no extra procedures to install Slackware 13.0 to the T400. The installation process goes smoothly. There are many guides on how to install Slackware so please use them if you're having troubles. Note, if you are keeping Windows Vista then the partitions are not alligned with the cylinders. Programs such as cfdisk will refuse to modify the partition table and fdisk will complain but still work. I use lilo for booting and you will have to give lilo, -p ignore, in order to install lilo. Don't forget to make the linux partition bootable.
  • Note If you have switchable graphics, make sure to toggle the setting in the BIOS to use either your Internal or Discrete card. See Switchable Graphics. At this point in time I haven't fully explored the switchable graphics capability of the T400, however by setting the bios to integrated or discrete does serve to turn off the unused graphics card which can offer power saving of up to 10 watts.
  • If you choose to install LILO to the MBR, the Vista recovery disk will allow you to revert back to the windows boot loader if you ever choose to do so. Instructions can be found here.
  • If you don't install LILO to the MBR which may be a safer thing to do, then you can use the program such as EASYBCD to specify that the linux partition should be booted rather than the Vista partition. Make sure to set an adequate delay in the boot menu, so that you may select when desired the Vista partition. After you have changed the booting preferences, make sure that you are able to boot to Linux, Vista and the Recovery partition.

What Works

Hardware Component Status under Slackware 13.0 Notes
Intel Core 2 Duo (Penryn) T9400 Works Check here to enable CPU frequency scaling.
14.1" TFT display (WXGA+) 1440x900 resolution + LED backlight Works See Xorg - Video Settings
Intel GMA 4500MHD Graphics Works See Xorg - Video Settings
ATI Mobility Radeon HD 3470 Graphics Untested See Xorg - Video Settings
Intel Gigabit Ethernet (10/100/1000) PCI-Express Works Nothing special to do.
3GB PC3-8500 DDR3 memory Works Nothing special to do.
160GB 7200rpm 2.5" SATA HDD Works Nothing special to do.
Serial Ultrabay Slim CD-RW/DVD combo Drive Works Nothing special to do.
UltraNav (TrackPoint and TouchPad) Works See Trackpad and Trackpoint section
Intel WiFi Link 5100/5300 WLAN controller Works Configure using /etc/rc.d/rc.inet1.conf
ThinkPad 11b/g/n Wireless LAN Mini-PCI Express Adapter II(Found in newer models) Works See Archwiki for the best guide to setting this card up. I suggest studying the output of [WICD] log for determining the commands needed to connect to wifi networks.
Bluetooth Untested The bluetooth interface does successfully startup.
Integrated Fingerprint Reader Untested
HDA Intel CONEXANT Sound Card Works Run alsaconf + alsamixer

Initial Setup

There are many guides to get you started with Slackware. I suggest Dugan's guide.

Console Resolution

The console resolution options given in the Slackware setup are mostly incorrect. To fix this, edit /etc/lilo.conf and replace the existing vga=XXX with one of the below numbers, then re-run lilo. Note, there a different versions of the T400 laptop available some of which support 1440x900.

Modes:

640×480 768x480 800×600 960×600 1024×768 1280×800 1440×900
256 color palette 769 864 771 867 773 870 873
16-bit (5:6:5) 785 865 788 868 791 871 874
32-bit (8:8:8) 786 866 789 869 792 872 875*

*Doesn't work, screen is distorted and unusable. Other 32-bit resolutions are ok.

To verify the setting run dmesg | grep vesafb:

vesafb: framebuffer at 0xe0000000, mapped to 0xf8880000, using 5062k, total 7616k
vesafb: mode is 1440x900x16, linelength=2880, pages=1
vesafb: scrolling: redraw
vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0

Xorg - Video Settings

The following settings should be used for the Monitor and Device sections in /etc/X11/xorg.conf. This is a base configuration. If you have external displays, projectors, etc. you will have to look elsewhere to learn how to set these up.

Note As of now I use the Intel video card with linux. I have not found many resources discussing the ATI Mobility Radeon HD 3470 card that is also found on the T400. If you want to use this card instead of the Intel card, then you may want to consult the Unofficial ATI Linux Driver Wiki and the fglrx driver guide.

# **********************************************************************
# Monitor section
# **********************************************************************

# Any number of monitor sections may be present

Section "Monitor"

    Identifier  "T400 LCD TFT"
    DisplaySize 380 238
    HorizSync   31.5 - 50.0
    VertRefresh 49-61

EndSection


# **********************************************************************
# Graphics device section
# **********************************************************************

# Any number of graphics device sections may be present

Section "Device"
    Identifier  "Intel"
    Driver      "intel"
EndSection


# **********************************************************************
# Screen sections
# **********************************************************************

Section "Screen"
    Identifier  "T400 Internal LCD"
    Device      "Intel"
    Monitor     "T400 LCD TFT"
    DefaultDepth 24

    Subsection "Display"
        Depth       24
        Modes       "1440x900"
        ViewPort    0 0
    EndSubsection

EndSection

X Resolution

Given the size (14.1") and resolution (1440x900) the correct dpi is 120.4.

This dpi setting generally makes things look larger than they should. To fix this, edit /usr/bin/startx and change defaultserverargs="" to defaultserverargs="-dpi 96"

To verify the setting run xdpyinfo | grep resolution

resolution: 96x96 dots per inch

Advanced Trackpad and Trackpoint Scrolling

The default settings don't utilize the trackpad's advanced functions (vertical/horizontal scrolling, etc) in X and the trackpoint scrolling does not work.

Trackpad:

Comment out the options line in /etc/modprobe.d/psmouse/ to recognize the trackpad as a SynPS/2 Synaptics TouchPad instead of a PS/2 Synaptics TouchPad in /proc/bus/input/devices.

Currently there is no available pre-compiled package for the Synaptics TouchPad driver for Slackware 12.2. However the 12.1 SlackBuild functions properly. The Synaptics TouchPad driver is available at SlackBuilds.org.

Trackpoint + Trackpad: Modify the InputDevices section of your /etc/X11/xorg.conf as below:

# **********************************************************************
# Input devices
# **********************************************************************

# **********************************************************************
# Core keyboard's InputDevice section
# **********************************************************************

Section "InputDevice"

    Identifier	"T400kbd"
    Driver	"kbd"

    Option "AutoRepeat" "500 30"
    Option "XkbRules"	"xorg"
    Option "XkbModel"	"thinkpad60"
    #Option "XkbLayout"	"us_intl"

EndSection


# **********************************************************************
# Core Pointer's InputDevice section
# **********************************************************************

Section "InputDevice"
	Identifier  "Synaptics Touchpad"
	Driver      "synaptics"
	Option	    "SendCoreEvents"	        "true"
	Option      "Device"			"/dev/psaux"
	Option      "Protocol"			"auto-dev"
	Option	    "HorizEdgeScroll"	        "0"
	Option      "LeftEdge"			"1700"
	Option      "RightEdge"			"5300"
	Option      "TopEdge"			"1700"
	Option      "BottomEdge"		"4200"
	Option      "FingerLow"			"25"
	Option      "FingerHigh"		"30"
	Option      "MaxTapTime"		"180"
	Option      "MaxTapMove"		"220"
	Option      "VertScrollDelta"	        "100"
	Option      "HorizScrollDelta"	        "100"
	Option      "MinSpeed"			"0.09"
	Option      "MaxSpeed"			"0.18"
	Option	    "AccelFactor"		"0.0015"
	Option	    "SHMConfig"			"on"
	Option	    "TapButton1"		"1"
	Option	    "TapButton2"		"2"
	Option	    "TapButton3"		"3"    
EndSection

Section "InputDevice"
	Identifier  "UltraNav Trackpoint"
	Driver      "mouse"
	Option      "CorePointer1"
	Option      "Device"              "/dev/input/mice"
	Option      "Protocol"            "ImPS/2"
	Option      "Emulate3Buttons"     "on"
	Option	    "Emulate3Timeout"	  "50" 	Option      "EmulateWheel"        "on"
	Option      "EmulateWheelTimeOut" "200"
	Option      "EmulateWheelButton"  "2"
	Option      "YAxisMapping"        "4 5"
	Option      "XAxisMapping"        "6 7"
	Option      "ZAxisMapping"        "4 5"
EndSection

Xorg Server Layout

If you have used the above settings in your /etc/X11/xorg.conf file, then make sure that your ServerLayout section calls the proper identifiers:

# **********************************************************************
# ServerLayout sections.
# **********************************************************************

Section "ServerLayout"

    Identifier  "T400"

    Screen "T400 Internal LCD"

    InputDevice "UltraNav Trackpoint" "CorePointer"
   #InputDevice "Synaptics" "CorePointer"
    InputDevice "T400kbd" "CoreKeyboard"

EndSection

Section "DRI"
    Mode 0666
EndSection

Enabling Fn + F# Keys

Follow Cowyn Li's guide. These add some basic functionality to the keys. For more advanced functionality you will have to create your own scripts.

In order for the X commands to function properly you will need to add:

xhost +local:root

To your windows manager startup file. For fluxbox this file is /home/user/.fluxbox/startup. I don't use KDE, but for KDE you would find its startup file and add the same line.

CPU Frequency Scaling

This version of Slackware has the latest version of lmsensors. This version is not currently supported by cpufreqd, a daemon that has been used with previous Slackware versions for handling CPU frequency scaling. Install cpufrequtils. With the cpufreq-set and cpufreq-info one may set the cpu speed as well as the governors for the cpu speed. The possible governors include: performance, ondemand, conservative, powersave and userspace(you set the speed manually). To have the governor dynamically change based on perhaps the state of the battery or the presence of the ac-adapter, the acpi daemon can be used, see Cpufrequtils.

Problems/Issues

Boot Hot Keys

  • F1 = BIOS
  • F11 = Boot recovery partition
  • F12 = Select boot device