Installing Ubuntu 7.10 (Gutsy Gibbon) on a Thinkpad T60

From ThinkWiki
Revision as of 09:51, 16 February 2008 by Rperkins (Talk | contribs) (Build a custom kernel)
Jump to: navigation, search

Features

Graphical Configuration Tool

Some Thinkpad T60s laptops ship with ATI video cards. Previously Ubtuntu 7.04 Open Source video drivers could be graphically configured with a minimal utility that allowed to choose a single resolution. However, users could be compelled to use the non-free ATI video driver (Fglrx) because ATI shipped a more featureful utility, Catalyst Control Center. Gusty Gibbon now ships a more fully-featured utility, making the Open Source video drivers a more attractive choice.

Desktop 3D effects

Compiz Fusion is enabled by default and will bring 3D desktop visual effects that improve the usability and visual appeal of the system. Ubuntu 7.10 automatically detects whether the hardware is capable of running compiz; if not, it falls back to normal desktop.

Installation

Installation of Gutsy Gibbon on the ThinkPad T60 went without a hitch.

Dual booting

I was able to resize an existing ext3 partition and perform a new install of Ubuntu 7.10 without removing Feisty Fawn. If you are resizing or installing Gutsy Gibbon on a clean partition while maintaining other operating system partitions, I would suggest reinstalling the Grub boot loader so a fresh partition is created with Gutsy Gibbon and other existing OSes like Feisty Fawn or Fedora.

Known Issues

ATI Fglrx breaks over suspend resume

If your laptop uses the ATI Fglrx driver and you have a perfectly fine Ubuntu Feisty 7.04 installation, Fglrx breaks on a suspend/resume after an upgrade to 7.10. The Open Source driver is available as an alternative; else it is recommended to not upgrade until Ubuntu bug 121653 is fixed or either:

Failure to display usplash during boot

If you see a black screen during the boot process in the internal panel, edit the file /etc/usplash.conf and check that the resolution is OK:

 # Usplash configuration file
 xres=1024
 yres=768

After that, issue the command:

 $ sudo update-initramfs -u

And reboot..

Failure to auto-detect resolution on ATI Fglrx

NOTE!
I cannot reproduce this failure. Tested on

- T60 with ATI Mobility Radeon X1400 at 1400x1050 (Flexview)

- T60p with ATI Mobility FireGL V5250 at 1400x1050 (Flexview)

It is possible to have a fresh install of Gutsy, however, you will have to type several commands to load the ATI restricted drivers. The trick is two-fold.

  1. Gutsy will auto attempt to set the resolution. When it fails, it will give you an error message saying that it will try again in two minutes. This means you have small windows of opportunity (2 minutes each) to type in your needed commands.
  2. The resolution will be stretched such that the command prompt will be off the screen (bottom). You will have to hit Enter about 10-14 times in order to see what was at the bottom of the screen.

With that said, this is how you can install Gutsy:

  1. Boot off Live CD - highlight Install with Safe Mode Graphics, then press F6 for additional options.
  2. In the command line at the end, delete "quiet" and change "splash" to "nosplash"
  3. Start the install. After awhile, your screen will start flashing as Gutsy tries to find a resolution. Just let it go until you get a blue screen saying that it will try again in two minutes. Press Enter to exit.
  4. Press enter about 10-14 times until you can see a command prompt.
  5. $ sudo apt-get update
  6. $ sudo apt-get install -y xorg-driver-fglrx
  7. $ sudo depmod -a

You may need to hit enter a few times to see what's going on.

Then Enter:

  1. $ sudo aticonfig --initial
  2. $ {{{1}}}

Hopefully you'll get all of this typed in under 2 minutes. But if not, don't worry. If the screen starts flashing, just let it go until you see the blue screen with the error message saying that it will try again in 2 minutes.

When you're finished, let the 2 minute timer run out by just waiting. This time, however, when the screen starts flashing, it will start the X server.

  1. Install Ubuntu.
  2. Reboot.
  3. When you boot for the first time, you will have to REPEAT THE PROCESS. However, you may need to login as well as confirm your sudo password, which will be tricky since you may not be able to see the prompt off screen. One alternative is to:

Hit CTRL + ALT + F2 which will take you to a login screen. Login, and repeat the process, ignoring the flashing screens that will appear every 2 minutes. When you are finished with your typing:

  1. $ startx

Then once you're in Ubuntu, immediately click on the restricted drivers icon and enable ATI's fglrx. Then reboot.

Post-Installation Setup

ATI Fglrx with Compiz

ATI Fglrx users need to manually install the Xgl X server to run Compiz:

$ sudo apt-get install xserver-xgl

And reboot...

Fix suspend/resume

If you suffer from Ubuntu bug 121653 and you choose to fix it via the two following methods, first you need to make a few changes to /etc/default/acpi-support:

POST_VIDEO=false
RADEON_LIGHT=true
ENABLE_LAPTOP_MODE=true

Upgrading to FGLRX-8.443.1

This driver fixes the issues with suspend/resume. Uses the new codebase so, if you want stabillity, stick to 8.40.1 It is not recommended to use it with AIGLX yet, but works perfectly with XGL. (That's not my experience; I installed 8.443.1 with Envy and saw lots of graphic garbage on the screen. For my FireGL 5200, 8.40.4 with a cucstom kernel as described below works much better --Dave)

Install dkms:

$ sudo apt-get install debhelper build-essential dkms

Download ati-driver-installer-8.443.1-x86.x86_64.run from an ATI.

Run:

$ chmod a+x ati-driver-installer-8.443.1-x86.x86_64.run

Build the packages:

$ sudo ./ati-driver-installer-$VER-x86.x86_64.run --buildpkg Ubuntu/gutsy

Install:

$ sudo dpkg -i *.deb

Disable 8.37.1 from the restricted modules. Edit /etc/default/linux-restricted-modules-common and add to the list:

 DISABLED_MODULES=fglrx

Make sure that you are using the ATI restricted driver under 'System - Administration - Restricted Drivers.'

Active Protection System (Reduced Power Version)

Build a custom kernel

NOTE!
There are several options, e.g.:
  1. Without any package manager (make and make install)
  2. The debian way (make-kpkg and module-assistent): one package per module
  3. The ubuntu way (see below): most of the modules in two packages: linux-restricted-modules and linux-ubuntu-modules


The following commands will generate these files (2007-12-23):

linux-headers-2.6.22-14-thinkpad_2.6.22-14.47_i386.deb
linux-image-2.6.22-14-thinkpad_2.6.22-14.47_i386.deb
linux-image-debug-2.6.22-14-thinkpad_2.6.22-14.47_i386.deb
linux-restricted-modules-2.6.22-14-thinkpad_2.6.22.4-14.10_i386.deb
linux-ubuntu-modules-2.6.22-14-thinkpad_2.6.22-14.37_i386.deb

First you need to get the hdapsd disk-protect patch (disk-protect-2.6.22.9-2.patch) at [1].

Then get the kernel source:

$ sudo apt-get build-dep linux-source-2.6.22
$ apt-get source linux-source-2.6.22
$ cd linux-source-2.6.22-2.6.22

Patch the kernel (optional, required for Active Protection System (hdapsd)):

$ patch -p1 < ../disk-protect-2.6.22.9-2.patch

Rename the kernel flavour: generic -> thinkpad

$ mv debian/config/i386/config.generic debian/config/i386/config.thinkpad
$ mv debian/abi/2.6.22-14.46/i386/generic debian/abi/2.6.22-14.46/i386/thinkpad
$ mv debian/abi/2.6.22-14.46/i386/generic.modules debian/abi/2.6.22-14.46/i386/thinkpad.modules

Create a dummy control file entry:

$ mv debian/control debian/control.orig
$ sed s/-2.6.22-14-generic/-2.6.22-14-thinkpad/ debian/control.orig > debian/control

Change kernel config: SLUB -> SLAB (optional, workaround for ATI Fglrx and suspend/resume failure)

$ echo CONFIG_SLAB=y >> debian/config/i386/config.thinkpad

Make further changes to the kernel config (optional):

 $ cp -r . ../src-copy
 $ cat debian/config/i386/config debian/config/i386/config.thinkpad ../src-copy/.config
 $ pushd ../src-copy
 $ make menuconfig
 $ popd
 $ rm debian/config/i386/*
 $ cp ../src-copy/.config debian/config/i386/config.thinkpad

Edit---Rperkins 09:51, 16 February 2008 (CET) I think the second command listed above( the one that starts with cat ) should be as follows:

$ cat debian/config/i386/config debian/config/i386/config.thinkpad > ../src-copy/.config

Basically the redirection was left out. the purpose of this step is to cat the split config files into a single config file so it can be tweaked with menuconfig. notice if you dont put the redirection in there ( the arrow) , you will get an error on the command because the 3rd file doesnt exist.-----end Edit

Rebuild kernel config:

$ chmod 755 debian/scripts/misc/splitconfig.pl
$ chmod 755 debian/scripts/misc/oldconfig
$ debian/scripts/misc/oldconfig i386

Now build the kernel:

$ AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-thinkpad
$ cd ..

And install the kernel headers:

$ sudo dpkg -i linux-headers-2.6.22-14-thinkpad_2.6.22-14.47_i386.deb

Get ubuntu modules source:

$ sudo apt-get build-dep linux-ubuntu-modules-2.6.22
$ apt-get source linux-ubuntu-modules-2.6.22
$ cd linux-ubuntu-modules-2.6.22-2.6.22

Create a dummy control file entry:

$ mv debian/control debian/control.orig
$ sed s/-2.6.22-14-generic/-2.6.22-14-thinkpad/ debian/control.orig > debian/control

Build the ubuntu modules:

$ fakeroot debian/rules binary-debs flavours=thinkpad
$ cd ..

Get restricted modules source:

$ sudo apt-get build-dep linux-restricted-modules-common
$ apt-get source linux-restricted-modules-common
$ cd linux-restricted-modules-2.6.22-2.6.22.4

Create a dummy control file entry:

$ mv debian/control.stub.in debian/control.stub.in.orig
$ sed s/-@@ABIVER@@-generic/-@@ABIVER@@-thinkpad/ debian/control.stub.in.orig > debian/control.stub.in
$ debian/rules debian/control

Fix debian/rules (not required for me --Sascha worked out for me --Tobi):

$ mv debian/rules debian/rules.orig
$ cat debian/rules.orig | sed 's/patch\ \-p0/TEMP=\/tmp\ patch\ \-p0/g' \
 | sed 's/dh_installdirs\ \-pfglrx\-control/chmod\ \-R\ u\+w\ \.\ \;\ dh_installdirs\ \-pfglrx\-control/g' \
 > debian/rules
$ chmod u+x debian/rules

Build the restricted modules:

$ fakeroot debian/rules binary-debs flavours=2.6.22-14-thinkpad ati_flavours=2.6.22-14-thinkpad nv_flavours=2.6.22-14-thinkpad
$ cd ..

Install the kernel and the modules:

$ sudo dpkg -i \
    linux-restricted-modules-2.6.22-14-thinkpad_2.6.22.4-14.10_i386.deb \
    linux-ubuntu-modules-2.6.22-14-thinkpad_2.6.22-14.37_i386.deb \
    linux-image-2.6.22-14-thinkpad_2.6.22-14.47_i386.deb

Reboot to load the kernel.

Install Active Protection System

A [#Build a custom kernel|patched kernel]]), tp-smapi kernel modules >= 0.32 and hdapsd userspace daemon newer than 2007-05-24 are needed.

First get tp-smapi modules (no ubuntu package available, so get debian's tp-smapi-source package at [2]):

$ wget http://ftp.de.debian.org/debian/pool/main/t/tp-smapi/tp-smapi-source_0.34-1_all.deb
$ sudo dpkg -i tp-smapi-source_0.34-1_all.deb

Build tp-smapi modules:

$ m-a -u . -t build tp-smapi

And install tp-smapi-modules:

$ sudo dpkg -i tp-smapi-modules-2.6.22-14-thinkpad_0.34-1+2.6.22-14.47_i386.deb

First test:

$ sudo rmmod hdaps
$ sudo modprobe -a tp_smapi hdaps

Now get and install hdapsd userspace daemon (Ubuntu Gibbon's hdapsd package is too old, so get Hardy's version at [3]):

$ wget http://mirrors.kernel.org/ubuntu/pool/universe/h/hdapsd/hdapsd_0.0.20070803-1_i386.deb
$ sudo dpkg -i hdapsd_0.0.20070803-1_i386.deb

You need to update the udev rules:

$ sudo udevtrigger

Check /etc/default/hdapsd to make sure it is trying to protect your internal hard drive. Laptops with SATA drives (like my T60p) will need an edit for sure.

Reboot... and check your syslog for scsi_protect_queue() and scsi_unprotect_queue() log messages...

See also

References