Installing Fedora Core 6 on a ThinkPad T60

From ThinkWiki
Jump to: navigation, search

Installation

Installation of Fedora Core 6 (Zod) on a Thinkpad T60 (2623). The installation completes successfully but installs the i586 kernel instead of the required i686 kernel. The wrong kernel is due to a known bug in the Anaconda installer. Work-arounds and instructions for checking your kernel are on this page.

NOTE!
The installer on disc still does not correctly install the i686 kernel. Use the available updates.img patch or a network install. Check your kernel version before you proceed. --Whizkid 13:15, 19 December 2006 (CET)
NOTE!
According to Red Hat, if you boot the install disk using 'linux i686' when installing, then the i686 kernel will be installed. This does not work when upgrading.
NOTE!
[unverified] This may be outdated information - Retail copy of FC6 DVD install image installed the i686 kernel by default.
NOTE!
I have an FC6 DVD from a downloaded iso. Default installation installed the correct kernel (2.6.18 i686), and the updater went and got 2.6.20 (i686), but the updater thought that both kernels were i586 so when I went to install the ATI Video driver, it wanted to update my kernel. I reinstalled with 'linux i686 as mentioned above and now the installer sees them correctly as i686.

Keeping ThinkVantage Functionality

See the Rescue and Recovery page for details about the recovery partition and retaining access to it.

Works Out of the Box

Dual Cores (SMP processing)
As of Kernel 2.6.18, used in Fedora Core 6, there is no loger a single cpu and smp kernel image. SMP is now configured on-the-fly. FC6's kernel will automatically discover the T60's dual core cpu and bring up CPU0 and CPU1.
Wired Networking
Kernel recognizes eth0 and correctly loads the e1000 driver.
Video at 1400x1050
Fedora does not ship the proprietary ATi driver, as a reult the VESA driver is used. Installation of the ATi fgrlx driver is described later in this article.
Touchpad / Mouse
The TrackPoint middle button does not work as a scroll wheel by default.
PFPS: Note that although the touchpad and trackpoint work, Fedora Core 6 does a bad job of setting up xorg.conf. It is better to fix it up (see below).
Sound
The first-boot sound test fails to play the test sound. However, sound support is correctly configured and the snd-hda-intel driver is loaded at startup.
Important: The modem must be enabled in the BIOS. Make sure it is, or you may search a long time for the reason that you have no sound. I presume this is a driver bug.
Suspend to RAM
Works out of the box under Gnome. Gnome power management intregrates with HAL (Linux's hardware abstraction layer) and DBUS, which correctly put this computer into a suspsend to RAM state and wake it up correctly.

Requires Tweaking

  • Wireless Networking (Requires ipw3945 driver)
  • ATi OpenGL Direct Rendering
  • Hibernate
  • IrDA

Post Install

Replacing the Kernel

NOTE!
The steps below will not be required if the i686 version is already installed, which you can achieve using the notes above( Upon boot up type "linux i686" at the prompt).
NOTE!
[unverified] This may be unnecassary and outdated information. A FC6 "retail" DVD was tested and installed the i686 kernel by default.

As previously mentioned, the i586 kernel is installed on this machine instead of the i686 version. The i686 version is required to install the ATI video drivers and Intel Wireless drivers required to get this machine 100% operational. It is best to do this first, before updating any packages.

Installing the new kernel can be done by various methods as documented on the Red Hat Bugzilla bug. The safest method is to just to find the i686 kernel on your Fedora Core disk, and install it with the command:

 # rpm -Uvh --replacefiles --replacepkgs kernel-$(uname -r).i686.rpm

However, if you the kernel version of the i686 kernel if different that the i586 kernel you have installed and you do not use LVM, you might risk the following method using yum to do the kernel swap.

NOTE!
When I tried the yum method, I had to download 1GB worth of dependancies to reinstall. Afterwards the swap my system did not boot. Backing up grub did not help, because the problem was the initrd, and I did not have a good way or restoring the old version. However, using the Fedora Core 6 disk to "upgrade" from Fedora Core 6 to Fedora Core 6 did restore grub.

To swap kernels:

  1. Open up a terminal window are become root.
  2. Execute: yum remove kernel
  3. Make note of any other packages that will be removed due to dependency issues. The packages will have to be reinstalled in the next step.
  4. Install the kernel.i686 package and any other packages removed in the previous step.
  5. Fix your Grub configuration
  6. Reboot

On a minimal install, the only dependencies removed were gnome-session, compiz, gnome-volume-manager, and pcmciautils. Getting things back on track required:

# yum install kernel.i686 gnome-session compiz gnome-volume-manager pcmciautils

After [Yum] completes, you will have to fix the boot loader or you will be unable to boot after a restart.

If you have not used Fedora's default installation using LVM partitions, you can use the following configuration for grub. As root, fire up your favorite text editor and add the following lines to your grub configuration (/boot/grub/grub.conf) just below the initial comments:

title FC6 2.6.18-1.2798
        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-1.2798.fc6.img

If you have an LVM partition, use the method detailed at Redhat's site.

Getting Up to Date

Before completing installation, it's best to get up to date by running yum update as root or by using the new graphical updater, Pup, that ships with Fedora Core 6. After all updates are installed, reboot before continuing the post-install tasks.

Setting Up Additional Repositories

In order to get the ATI driver and the Intel Wireless working, you will need to add two repositories to your computer; Livna RPMs and AT-RPMs.

Enabling Livna's Repository
As root, rpm -ivh http://rpm.livna.org/livna-release-6.rpm .
Enabling AT-RPMs Repository
As root, use your favorite editor to create /etc/yum.repos.d/atrpms.repo and type in:
[atrpms]
name=Fedora Core $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/fc$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=0

Important: Disabling the AT-RPMs repository by default (using enabled=0) in the above configuration is important. Some repositories have been known not to play well together. See this post on the Fedora Forms for more information. However, AT-RPMs does provide a packaged version of the Intel wireless drivers and firmware that we'll use to set up wireless networking later. As long as AT-RPMs is disabled by default, Yum won't install software from their repository unless we explicitly tell it to do so.

ATi Video Driver (fglrx)

First check that your T60 has FireGL, this can be determined either by using scanpci or looking at your xorg.conf file. If you see in your /etc/X11/xorg.conf file:

 #Driver      "i810"

you have an ThinkPad T60 X or CTO series, and you can not install the ATI driver. If you see:

 #Driver      "vesa"

you probably have an ATI driver, and the following instructions should work.

Installing the fglrx driver is easy if you've enabled the Livna.org RPM repository as discribed earlier in this article. Unfortunately, the proprietary ATi driver currently does not support desktop effects or composite rendering used by default in Fedora Core 6.

To install the drivers, as root:

[root@scottt60 ~]# yum install kmod-fglrx.i686 xorg-x11-drv-fglrx

While the driver installs, X fails to use direct Open GL rendering. There are two things that need to be done to get the driver working. First, we must disable effects by adding these lines to the bottom of /etc/X11/xorg.conf:

Section "ServerFlags"
        Option  "AIGLX" "off"
EndSection

Section "Extensions"
        Option "Composite" "Disable"
EndSection

Next, we need to add ATi's driver directory to dynamic linker (ld) search path and update the linker configuration:

[root@scottt60 ~]# echo "/usr/lib/ati-fglrx/" > /etc/ld.so.conf.d/ati-fglrx.conf
[root@scottt60 ~]# ldconfig

After ldconfig completes, restart X. You can check if you've completed your installation correctly by running fglrxinfo. Your output should look like this:

[scott@scottt60 ~]$ fglrxinfo 
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Mobility Radeon X1400 Generic
OpenGL version string: 2.0.6174 (8.31.5)

Congratulations, your video configuration is complete.

Better UltraNav (touchpad) support [PFPS]

NOTE!
The following steps do not seem consistent with the previous section which is suppose to replace vesa with fglrx... However, the settings in the "InputDevice" section do seem to work. So perhaps it is better to just swap device settings and not replace tho whole xorg.conf file.

To get the touchpad to work right, it is much better to change /etc/X11/xorg.conf. There is quite a bit of information on how to do this scattered over the web, but very little information on why various changes have to be made. (I expect that the changes I made here are not specific to the T60, but would work on most Thinkpads with an UltraNav.)

I ended up crafting my own xorg.conf, which does the job, and produces no (extra) errors or warnings. (Note that the generated xorg.conf is very sparse, and generates warnings due to missing monitors and font directories. These appear to be benign.)

# Xorg configuration created by pyxf86config
# modified by pfps for Synaptics touchpad

Section "ServerLayout"
        Identifier     "Default Layout"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0"    "CorePointer"
	InputDevice    "TouchPad"  "AlwaysCore"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
        Option      "XkbLayout" "us"
EndSection

# synaptics touchpad device
Section "InputDevice"
   Identifier   "TouchPad"
   Driver       "synaptics"
   Option       "Device"        "/dev/input/mouse0"	# may not be needed
   Option       "Protocol"      "auto-dev"	# automatically find device?
   Option       "LeftEdge"      "1700"
   Option       "RightEdge"     "5300"
   Option       "TopEdge"       "1700"
   Option       "BottomEdge"    "4200"
   Option       "FingerLow"     "25"
   Option       "FingerHigh"    "30"
   Option       "MaxTapTime"    "0"		# turn off tapping
   Option       "MaxTapMove"    "220"
   Option       "VertScrollDelta" "100"
   Option       "MinSpeed"      "0.09"
   Option       "MaxSpeed"      "0.18"
   Option       "AccelFactor"   "0.0015"
   Option       "SHMConfig"     "on"
 EndSection

# default mouse - handles other pointing devices, including trackpoint
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Device" "/dev/input/mice"
        Option      "Protocol" "Auto"
        Option      "Emulate3Buttons" "no"
	Option	    "Buttons" "3"
EndSection

Section "Device"
        Identifier  "Videocard0"
        Driver      "vesa"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

Hibernation

Instructions for getting hibernate to work are available at https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=205144


Wireless Networking

Note: The instructions below are for the Intel PRO/Wireless 3945ABG Mini-PCI Express Adapter. Instructions for ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (currently using Madwifi) and ThinkPad 11a/b/g/n Wireless LAN Mini Express Adapter (using ndiswrapper) are available via their respective pages.

To use the T60's built in wireless networking driver, you will need to install ipw3945 driver. The AT-RPMs repository, mentioned earlier in this article, provides the necessary packages. ATRpms does not always keep the older versions, and there will be some delay after a new kernel is released until the required kernel module is available. Patience is appreciated.

If you are running a x86_64 architecture, it is sometimes best to use the ipw3945 instruction guide from sourceforge, ignoring any build errors during make, and start ipw3945d with the modprobe configuration below.

ATRpms has recently made this process very simple. As root:

# yum --enablerepo=atrpms install ipw3945

If you get an error stating "GPG key parsing failed: can't set attribute" then you need to import the key. Do so by

rpm --import http://ATrpms.net/RPM-GPG-KEY.atrpms

If the file /etc/init.d/ipw3945d was created, remove it. The ipw3945d daemon may freeze your computer while booting! Instead add the following lines to your /etc/modprobe.conf file:

install ipw3945 { ( /sbin/modprobe --ignore-install ipw3945; /sbin/ipw3945d ) >/dev/null 2>&1 || : ; }
remove ipw3945 { /sbin/ipw3945d --kill >/dev/null 2>&1 || : ; }; /sbin/modprobe --ignore-remove -r ipw3945

Now, type in:

modprobe ipw3945

If everything is okay, you will find an ipw3945d daemon is running and your wifi light on your laptop will start blinking. You can check that ipw3945d is running with the command:

ps -edalf|grep ipw3945

This should show one or more processes running.

Now you are prepared to configure your wifi card by running:

system-config-network

Chances are you will just need to add a new wireless device and activate. Once you know the interface your laptop will assign the wireless card (such as eth0), you may add it to the /etc/modprobe.conf file as follows:

alias eth0 ipw3945

In theory you should be able to select the interface name, but in practice this doesn't seem to work.

I do not recommend automatically activating wireless on boot, but you may do so as a device option with system-config-network.

Infrared (IrDA)

By default, Fedora will make the IR device appear as ttyS2, but the BIOS has the port default to COM2, or ttyS1. Paste this text into /etc/sysconfig/irda:

IRDA=yes
DEVICE=/dev/ttyS1
#DONGLE=actisys+
DISCOVERY=yes

Start (or restart) the irda service. Then ensure it starts for your favorite runlevel using either chkconfig or the Service Configuration tool. You can then use irdadump (as root) to confirm your configuration is correct by monitoring port activity when another IR device is near.

External Sources