Installing Ubuntu 6.06 Kubuntu 6.06 Gentoo 2006.0 on a ThinkPad T60p

From ThinkWiki
Jump to: navigation, search

Installing Ubuntu Dapper

To get it going:

  • Get Dapper i386 (I used the Daily ISO DVD).
  • Install the default distribution.

It will work, but you need an SMP kernel, and accelerated and higher resolution graphics, so:

  • Install the i686-smp kernel (search for 'linux-kernel' in synaptic).
  • Search for fglrx in synaptic, and install the fglrx modules, X driver and ATI control panel.
  • Edit /etc/X11/xorg.conf, so each of the "Modeline" entries contains a 1600x1200 resolution as well (or whatever the top resolution of your LCD panel is), and change the driver section as follows:
Section "Device"
    Identifier "ATI Technologies, Inc. ATI Default Card"
    Driver "fglrx"               <----- ADD THIS LINE
    #Driver "vesa"               <---- COMMENT OUT THIS LINE
    BusID "PCI:1:0:0"
    ChipID 0x71c5                <----- MAYBE ADD THIS LINE

[On my UXGA t60p the ChipID line was actually fatal to getting fglrx to start up (/var/log/Xorg.0.log showed the driver falling back to VESA and fgl_glxgears would crash). Without that ChipID line my chip was identified as:

Chipset: "MOBILITY FireGL V5200 (M56 71C4)" (Chipset = 0x71c4)

which appears to correspond exactly to my machine's spec, and fgl_glxgears worked fine.]

Reboot, and you should be done. Check "cat /proc/cpuinfo" shows two CPUs, and run fgl_glxgears and check you get around 580 frames a second.

I've reported bug 46527 on the lack of screen driver detection, so hopefully this will get even easier.

Note you do NOT need to install ATI drivers from the ATI site. The Ubuntu drivers are sufficient.

Thanks to Rich Tango-Lowy (see below) for the hint re chip detection.

Kubuntu Dapper Live CD

If you're trying to install from the Kubuntu Desktop CD, you'll never make it to the login screen because the ATI display driver isn't recognized.

  • Ctrl-Alt-F1
  • sudo nano /etc/X11/xorg.conf
  • change the display driver line that looks like:
         Driver    "ati"


         Driver    "vesa"

[I think I remember that it was "ati", but I could be wrong. In any case this is very clearly the only Driver line in the ATI device specification section]

  • Save and exit
  • sudo /etc/init.d kdm restart

Now you get a login screen.

Installing Gentoo 2006.0

Boot from Live CD

Upon booting off the live cd you will come to the kernel selection prompt. Enter:

   gentoo doscsi

I had some trouble getting the wired NIC to be linked to the driver, often getting an error that the EEPROM failed a check. If this happens, you can try re-inserting the module,

   >rmmod e1000; modprobe e1000

or rebooting and trying again. The wireless card isn't supported by the live cd so you're going to have to stick to wired for now.

If you have a T60 with a Core 2 Duo processor (instead of Core Duo), you have the option of installing a 64-bit linux. Use an amd64 (called this for historical reasons) install/live cd, and enter this at the boot prompt:

  gentoo-nofb noapic

The noapic option is needed on the 2006.1 cd to prevent a crash during boot. Once you have compiled your own kernel you no longer need it.

/etc/make.conf Settings

The make.conf settings are the first thing you want to setup correctly before you proceed with the rest of the install process. All future updates will depend upon these settings as well. If you use a 32-bit profile (x86) use these settings

CFLAGS="-march=prescott -O2 -pipe -msse3 -fomit-frame-pointer"
VIDEO_CARDS="fglrx vesa fbdev"
INPUT_DEVICES="keyboard mouse synaptics"
FEATURES="sandbox ccache distlocks autoaddcvs parallel-fetch"

If you use a 64-bit profile (amd64 - Core 2 Duo processors only) use this instead

CFLAGS="-O2 -pipe -march=nocona"
INPUT_DEVICES="keyboard mouse synaptics"
VIDEO_CARDS="radeon vesa fbdev"

For a more complete discussion of the CFLAGS to use for a Core Duo processor, see this forum thread. Some users recommend that the USE variable has the ibm value in it (eg. USE="ibm") but the Gentoo website says this is only for Power PC64 systems; I don't think we should use it. If anyone can shed more light on this, please update this section.

Kernel Settings

I was able to get the laptop running from i686 gentoo sources and recommend this to anyone installing Gentoo on their T60p. Alot of graphics support is left out of the kernel since the best graphics performance is with ATI's propietary drivers which you can emerge at the end of the kernel compile.

Processor type and features

  • Turn on Symmetric multi-processing support.
  • Set processor family to Pentium M (with the new 2.6.21+ you may choose Core 2/newer Xeon) for the Core Duo or EM64T for the Core 2 Duo with amd64 profile.
  • Turn off toshiba and dell laptop support.
  • Set Maximum number of CPUs to 2 (for obvious reasons, each CPU adds 8kb to the kernel.)
  • Set timer frequency to 1000 Hz since this is a desktop system.
  • Found on a forum posting that "Hotpluggable CPU" should be set to get acpi sleep to work. Go figure...

Power management options

  • Turn on all ACPI settings (especially IBM Thinkpad Extras) except ASUS/Medion and Toshiba Laptop Extras.
    • on newer gentoo-sources (2.6.22-r5) this item is hidden in "Bus options" - "Support for PCI Hotplug" - "ACPI PCI Hotplug driver" - "ACPI PCI Hotplug driver IBM extensions"
 Note: see this entry on ACPI Video for BIOS 2.x and kernels < 2.6.20-rc?
  • Turn on CPU Frequency scaling.
    • Turn on powersave, userspace, ondemand and conservative governor.
    • Turn off ACPI Processor P-States driver.
    • Turn off all AMD and Cyrix options.
    • Turn on Intel Enhanced SpeedStep and Intel Speedstep on ICH-M chipsets (ioport interface).
    • Turn off Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface).
    • Turn off Intel Pentium 4 clock modulation, nVidia nForce2 FSB changing and Transmeta LongRun.

Bus options

  • Turn on PCI Express support.
  • Turn on Message Signaled Interrupts.
  • Turn on PCCard support and CardBus yenta-compatible bridge support.

Networking support

  • Turn off Generic IEEE 802.11 Networking Stack.
  • Turn on IrDA (infrared) subsystem support and sub-options.
    • Ensure you get nsc-ircc
  • Turn on Bluetooth subsystem support and sub-options.
  • Turn off Amateur Radio support (unless you work with actual radios.)

Device Drivers

  • Turn off Memory Technology Devices.
  • Turn on ATA/ATAPI/MFM/RLL and Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support.
  • Turn on PNP EIDE and PCI IDE chipset support (PNP EIDE may not be necessary but I haven't tested it)
    • Turn on Include IDE/ATA-2 DISK support
    • Turn on Use multi-mode by default
    • Turn on Include IDE/ATAPI CDROM support
    • Turn on PCI IDE chipset support (not all of the sub-options have been tested but this makes the DVD drive work well)
      • Turn on Generic PCI IDE Chipset Support
      • Turn on Generic PCI bus-master DMA support
      • Turn on Intel PIIXn chipsets support
  • Turn off parallel port support.
  • Turn on SCSI device support. In "low-level device drivers", chose the Serial ATA (SATA) support. Build it as a part of the kernel, and not as a kernel module.
  • Turn off Fusion MPT device support.
  • Turn on IEEE 1394 (FireWire) support.
  • Turn on Network device support.
    • Turn off all options in all categories under Network device support except the stated ones below.
    • Turn on Intel(R) PRO/1000 Gigabit Ethernet support under Ethernet (1000 Mbit).
    • Turn on Wireless LAN drivers (non-hamradio) & Wireless Extensions and none of the sub-options underneath.
    • Most people do not need Fibre channel, ATM, WAN or PPP/SLIP support (if you do then turn it on. PPP is needed for GPRS/UMTS connectivity)
  • Character device options...
    • Serial drivers... [for IrDA]
      • Set Max 8250/16550 serial ports to (4)
      • Set Number 8250/16550 serial ports to register at runtime to (1)
    • Turn off Parallel printer support.
    • Turn on Intel HW Random Number Generator support.
    • Turn on /dev/nvram support.
    • Turn off /dev/agpgart (AGP Support).
    • Turn off Direct Rendering Manager.
    • Support for the Fritz Chip is located in "TPM Devices".
  • Turn on I2C support and Intel 82801 (ICH) hardware bus support.
  • Turn on Hardware Monitoring support and IBM Hard Drive Active Protection System (hdaps).
  • Turn off all Graphics support options except the stated ones below,
    • Turn on VESA VGA graphics support and set VESA driver type to vesafb.
    • Turn on Enable firmware EDID and Enable Video Mode Handling Helpers.
    • Turn on Support for the framebuffer splash.
  • IMPORTANT: Turn off all Wireless device support under USB support -> USB Network Adapters or you will tear your hair out trying to get wireless.
  • Turn on Sound card support.
    • Turn on Advanced Linux Sound Architecture.
    • Turn off all ISA, PCI, USB, generic and PCMCIA device options except the stated one below.
    • Turn on Intel HD Audio under PCI devices.
  • Turn off all MMC/SD Card support options.
  • Turn off LED devices.
  • Cryptographic options... (needed for the wireless card ipw9345)
    • Turn on AES chiphers
    • Turn on Michael MIC keyed digest algorithm

That should do it. (I know, that's it.) That should make sure that you have all the drivers necessary to boot the system and be able to use all your hardware (almost).

Portage Ebuilds

Always make sure you run this command before going any further so you can get the latest portage build and version...

emerge --sync && emerge portage

Since September 24 2006 I was able to make the latest ati-drivers work on the T60p without adding any lines to the unmask file (/etc/portage/package.unmask) under the gentoo-sources kernel. You should be able to run...

emerge ati-drivers

...without any problems. If you do have problems compiling, sometimes you may need to try emerging an unstable package. For more information on working with the ATI drivers, check out Gentoo's wiki here.

Don't forget to emerge all the Thinkpad software as well...

emerge tpb tp_smapi tpctl

Then you can start to setup the wireless in this order at the command line...

/bin/sh /usr/portage/net-wireless/ieee80211/files/remove-old /usr/src/linux
emerge ieee80211 ipw3945 ipw3945d wireless-tools

For some reason the wireless driver consists of two parts: the module itself, ipw3949.ko, and some sort of support daemon, ipw3945d. The ebuild updates the modules.conf file to automatically stop and start this deamon when the module is loaded or unloaded, respectively. Check if the following lines are present in /etc/modules.conf (or actually, in /etc/modules.d/ipw3945d - /etc/modules.conf is built from the separate files in /etc/modules.d when you run /sbin/modules-update)

install ipw3945 /sbin/modprobe --ignore-install ipw3945; sleep 0.5; /sbin/ipw3945d --quiet
remove ipw3945 /sbin/ipw3945d --kill; /sbin/modprobe -r --ignore-remove ipw3945

In other words, to load the module, and start the daemon, do

 modprobe ipw3945

To remove the module, and kill the daemon, enter

 modprobe -r ipw3945

Note: rmmod does not work - it doesn't use /etc/modprobe.conf, and therefore doesn't kill the daemon: while the daemon is running, you cannot unload the module. (You'll get an errormessage saying the module is in use).

If for some reason you need to kill the module manually, use

 /sbin/ipw3945d --kill

Ofcourse the normal 'kill' command also works, but you'll have to remove the pid file /var/run/ by hand.

xorg.conf Settings

A piece of code is worth a thousand words; here is my xorg.conf that works at 3000-5000 FPS so far. I am still trying to find better parameters, but this is the best I got it to run so far. I intentionally left out the InputDevice section since I disabled my Synaptics pad (I like the center joystick better.) Just modify your xorg.conf sections with what is shown below.

Section "Module"
       Load  "dbe"     # Double buffer extension
       SubSection "extmod"
       Option      "omit xfree86-dga"   # don't initialise the DGA extension
       Load  "freetype"
       Load  "dri"
       Load  "glx"

Section "Device"
       Identifier  "VideoCard"
       Driver      "vesa"
       Driver      "fglrx"
       VendorName  "ati"
       #ModelName   "FireGL V5200 (RV530 71DA)"
       BusID       "PCI:1:0:0"
       Option      "VideoOverlay" "on"
       Option      "UseFastTLS" "2"
       Option      "EnablePrivateBackZ" "on"

Section "dri"
       Group "video"
       Mode 0666

Section "Extensions"
       Option "XVideo" "Enable"

Section "Screen"
       Identifier "Screen"
       Device     "VideoCard"
       Monitor    "Monitor"
       DefaultDepth     24
       SubSection "Display"
               Viewport  0 0
               Depth     24
               Modes    "1280x1024" "1024x768" "800x600" "640x480"

Make sure you assign your username to the video group in the /etc/group file or you will net get DRI (Direct Rendering) support. When debugging your running X windows system, always check /var/log/Xorg.0.log for any errors or hints at what may be configured incorrectly. This is how I was able to get so far with the graphics.

Dual monitors

The T60p comes with a nice little VGA-out port on the side, and you may want to use a dual-monitor setup occasionally. Allegedly, using Xinerama with the fglrx driver will incapacitate your 3D rendering, and ATI's BigDesktop seems (at least to me) to be more trouble than it's worth. What I've done is set up Xorg to have two separate Screens, one for each Monitor. You won't be able to drag windows across both screens, and some applications don't like having windows on both monitors, but this approach works painlessly, even with monitors of different resolutions, and you get to keep your 3D rendering! Here are the relevant parts of xorg.conf:

Section "ServerLayout"
     Identifier     "Two Screen Layout"
     Screen          0 "Default Screen" 0 0
     Screen          1 "External Screen" RightOf "Default Screen"
     ## ...

## Video card - first head (internal)
Section "Device"
     Identifier      "ATI card 1"
     Driver          "fglrx"
     BusID           "PCI:1:0:0"
     ## ...
     Option          "MonitorLayout" "lvds, auto"
     Option          "DesktopSetup" "horizontal"
     Screen          0

## Video card - second head (external)
Section "Device"
     Identifier      "ATI card 2"
     Driver          "fglrx"
     BusID           "PCI:1:0:0"
     Screen          1

Section "Monitor"
     Identifier      "Generic Monitor"
     ## ...
     Option          "DPMS"

Section "Monitor"
     Identifier      "External Monitor"
     ## ...
     Option          "DPMS"

Section "Screen"
     Identifier      "Default Screen"
     Device          "ATI card 1"
     Monitor         "Generic Monitor"
     DefaultDepth    24
     SubSection "Display"
          Depth          24
          Modes          "1400x1050" "1024x768" "800x600"
          ViewPort       0 0

Section "Screen"
     Identifier      "External Screen"
     Device          "ATI card 2"
     Monitor         "External Monitor"
     DefaultDepth    24
     SubSection "Display"
          Depth          24
          Modes          "1680x1050" "1024x768" "800x600"
          Viewport       0 0

Note that there are two sections each for the video card (one for each head on the card), monitors, and screens. The laptop's screen is 1400x1050, and my external monitor is 1680x1050. Since it's a laptop, you probably won't be using dual monitors all the time, so it would be best to keep two different configurations (e.g., xorg.conf.two-monitors), and copy each to /etc/X11/xorg.conf when needed. Here is my whole dual-monitor xorg.conf. I also threw together a script for changing the setting given an and an xorg.conf.two-monitors in /etc/X11 (it also works for game configurations in case your monitors are different sizes - I included a Quake 3 example, commented out); run it with - for example - "sudo xorg-set-monitors 2".

Known Issues

Latency issue with e1000 nic

External Sources