Installing Fedora Core 6 on a ThinkPad T60

From ThinkWiki
Revision as of 19:39, 20 January 2007 by Docbill (Talk | contribs) (Wireless Networking)
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.

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 active in the BIOS, or you search a long time, why you get no sound. I read that 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.

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 kernal 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)

Note : The following directions do not seem to work. Before and after running them, the driver configured in the xorg.conf is i810. Manually changing this to fglrx just results in a system where X11 will not start.

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 be default in http://www.thinkwiki.org/index.php?title=Installing_Fedora_Core_6_on_a_ThinkPad_T60&action=edit&section=9Fedora 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

Wireless Networking

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 below script.

As root:

# yum --enablerepo=atrpms install ipw3945d ipw3945-ucode ipw3945-kmdl-`uname -r`.i686

Once installed, you must add a startup script to have ipw3945d started at boot. Create the following script in a file named /etc/init.d/ipw3945d

#! /bin/bash
#
# ipw3490d      Load / unload Intel ipw3490 daemon
#
# chkconfig: 2345 09 90
# description:  Load / unload Intel ipw3490 daemon
#
### BEGIN INIT INFO
# Provides: ipw3490d
### END INIT INFO

# Source function library.
. /etc/init.d/functions

if [ ! -f /etc/sysconfig/network ]; then
    exit 0
fi

case "$1" in
  start)
        echo -n "Starting ipw3945d: "
        /sbin/ipw3945d > /dev/null 2>&1
        echo
        ;;
  stop)
        echo -n "Stopping ipw3945d: "
        killproc ipw3945d
        echo
        ;;
  status)
        status ipw3945d
        ;;
  restart)
        cd "$CWD"
        $0 stop
        $0 start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit 0

Now, make it executable and add the script with chkconfig to be started on boot:

# chmod 750 /etc/init.d/ipw3945d
# chkconfig --add ipw3945d

Make sure things are setup correctly by running chkconfig --list ipw3945d. Your output should look something like:

# chkconfig --list ipw3945d
ipw3945d        0:off   1:off   2:on    3:on    4:on    5:on    6:off

If everything looks okay, reboot. Once restarted you should be able to run ifconfig eth1 and see information about your wireless card. If you prefer a GUI, you can run the network configuration tool (System, Administration, Network). Click New on the Devices tab, then Wireless Connection. "Intel Corporation PRO/Wireless 3945ABG Network Connection(eth1)" or something similar should appear in the list of wireless devices.


Note : The above steps seem incomplete. In particular, no matter what I did the network tool always tried to treat the ipw3945d as the wired card, and the e1000 as the wireless. I finally had to manually edit the /etc/sysconfig/networking/device files. I then had the problem that the settings still did not work. It turns out the problem is the configuration files are duplicated in /etc/sysconfig/network-scripts. Somehow, ip-up attempts to merge the files. So I ended-up hard linking the files in /etc/sysconfig/networking/device to /etc/sysconfig/network-scripts. Finially wireless networking works, but no matter what I try the wireless is eth0 and the e1000 is eth1. However, I guess this mapping does not really matter.

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