Difference between revisions of "Installing Ubuntu/Breezy on a ThinkPad T42"

From ThinkWiki
Jump to: navigation, search
(Fix typo)
 
(18 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
==General installation==
 
==General installation==
Here comes installation instructions for {{Ubuntu}} Breezy Badger on  
+
Here comes installation instructions for {{Ubuntu 5.10}} on  
 
{{T42}} 2374-ZEP.
 
{{T42}} 2374-ZEP.
  
 
Get a copy of Ubuntu from [http://www.ubuntulinux.org UbuntuLinux.org].
 
Get a copy of Ubuntu from [http://www.ubuntulinux.org UbuntuLinux.org].
 +
 +
 +
You should update your {{path|/etc/apt/sources.list}} here mine:
 +
#deb cdrom:[Ubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted
 +
 +
#deb http://dk.archive.ubuntu.com/ubuntu breezy main restricted
 +
 +
## Uncomment the following two lines to fetch updated software from the network
 +
deb http://mirrors.dotsrc.org/ubuntu breezy main restricted universe multiverse
 +
deb-src http://mirrors.dotsrc.org/ubuntu breezy main restricted universe multiverse
 +
 +
## Uncomment the following two lines to fetch major bug fix updates produced
 +
## after the final release of the distribution.
 +
deb http://mirrors.dotsrc.org/ubuntu breezy-updates main restricted universe multiverse
 +
deb-src http://mirrors.dotsrc.org/ubuntu breezy-updates main restricted universe multiverse
 +
 +
## Uncomment the following two lines to add software from the 'backports'
 +
## repository.
 +
## N.B. software from this repository may not have been tested as
 +
## extensively as that contained in the main release, although it includes
 +
## newer versions of some applications which may provide useful features.
 +
## Also, please note that software in backports WILL NOT receive any review
 +
## or updates from the Ubuntu security team.
 +
#deb http://mirrors.dotsrc.org/ubuntu breezy-backports main restricted universe multiverse
 +
#deb-src http://mirrors.dotsrc.org/ubuntu breezy-backports main restricted universe multiverse
 +
 +
deb http://mirrors.dotsrc.org/ubuntu breezy-security main restricted universe multiverse
 +
deb-src http://mirrors.dotsrc.org/ubuntu breezy-security main restricted universe multiverse
 +
 +
#deb ftp://ftp.nerim.net/debian-marillat/ etch main
 +
 +
{{cmduser|sudo apt-get update}}
  
 
==Kernel support==
 
==Kernel support==
 
How to get the correct kernel:
 
How to get the correct kernel:
{{cmduser|sudo apt-get linux-686}}
+
{{cmduser|sudo apt-get install linux-686}}
  
 
===Kernel modules===
 
===Kernel modules===
 
{{Todo|Load the different kernel modules, and their configuration}}
 
{{Todo|Load the different kernel modules, and their configuration}}
 
Important to turn off dynamicClocks in radeonfb in kernels before 2.6.14:
 
{{path|/etc/modprobe.d/radeonfb.modprobe}}:
 
options radeonfb default_dynclk=-1
 
  
 
ibm_acpi module:
 
ibm_acpi module:
  
 
Turning on experimental features:
 
Turning on experimental features:
 +
 
{{path|/etc/modprobe.d/ibm_acpi.modprobe}}:
 
{{path|/etc/modprobe.d/ibm_acpi.modprobe}}:
  options ibm_acpi hotkey=enable,0xff9f experimental=1
+
  options ibm_acpi hotkey=enable,0xffff experimental=1
 +
 
  
 
Starting with wireless off:
 
Starting with wireless off:
Line 34: Line 64:
 
{{Todo|Hibernate, suspend, buttons, lid, speedstep}}
 
{{Todo|Hibernate, suspend, buttons, lid, speedstep}}
  
 +
Because of "options ipw2100 disable=1" the wireless lan is initially turned off by a software feature.
 +
The default script in Breezy does not turn on the software part.
 
Modification to turn on wireless:
 
Modification to turn on wireless:
 
{{path|/etc/acpi/wireless.sh}}:
 
{{path|/etc/acpi/wireless.sh}}:
Line 49: Line 81:
 
  # It's powered off. Switch it on.
 
  # It's powered off. Switch it on.
 
      echo -n 0 > $DEVICE/device/power/state;
 
      echo -n 0 > $DEVICE/device/power/state;
      echo -n 0 > $DEVICE/device/rf_kill;
+
      '''echo -n 0 > $DEVICE/device/rf_kill;'''
 
      echo 1
 
      echo 1
 
  fi
 
  fi
 
     fi
 
     fi
 
  done
 
  done
 +
 +
==== Using Fn-F5 to enable/disable Bluetooth ====
 +
 +
First, to make sure Fn-F5 is available as a hotkey, either do
 +
 +
  # If you want Fn-F5, use this, and verify the mask in:
 +
  # /etc/modprobe.d/ibm_acpi.modprobe
 +
  echo 0xff9f > /proc/acpi/ibm/hotkey
 +
 +
  # For Fn-F6, use this one. You'll need to change the mask in
 +
  # /etc/modprobe.d/ibm_acpi.modprobe
 +
  echo 0xffff > /proc/acpi/ibm/hotkey
 +
 +
Next, create a shell script called /etc/acpi/bluetooth.sh:
 +
 +
  #!/bin/bash
 +
  # Enable/disable builtin Bluetooth on IBM Thinkpads
 +
  BLUETOOTH=/proc/acpi/ibm/bluetooth
 +
  STATE=dis
 +
  if grep -q disabled $BLUETOOTH; then
 +
          STATE=en
 +
  fi;
 +
  echo ${STATE}abled > $BLUETOOTH
 +
 +
Next, create an ACPI event file /etc/acpi/events/ibm-bluetooth
 +
 
 +
  # This is called when the user presses Fn-F5 button and calls
 +
  # /etc/acpi/bluetooth.sh for further processing.
 +
  event=ibm/hotkey HKEY 00000080 00001005
 +
  action=/etc/acpi/bluetooth.sh
 +
 +
You might need to restart acpid for it to start working.
  
 
==Xorg==
 
==Xorg==
Line 101: Line 165:
 
To run nice a few things and scripts need modification as follows:
 
To run nice a few things and scripts need modification as follows:
  
====Kernel options====
+
====Load modules on startup====
 +
Unfortunately it seems not all relevant modules are loaded automaticly when using InitNG.
 +
 
 +
Please help finding the proper scripts to do this.
 +
 
 +
Just add the proper modules to {{path|/etc/modules}}.
 +
 
 +
This is my list:
 +
lp
 +
mousedev
 +
psmouse
 +
 +
#Additional ACPI features
 +
ibm_acpi
 +
 +
#Frequency scaling
 +
cpufreq_userspace
 +
cpufreq_powersave
 +
speedstep_centrino
 +
 
 +
====Grub kernel options====
  
 
To enable initng an option must be appended to the kernel load command in grub.
 
To enable initng an option must be appended to the kernel load command in grub.
  
 
{{path|/boot/grub/menu.lst}}:
 
{{path|/boot/grub/menu.lst}}:
  kernel          /vmlinuz-2.6.12-9-686 root=/dev/hda9 ro quiet splash video=radeonfb init=/sbin/initng
+
  kernel          /vmlinuz-2.6.12-9-686 root=/dev/hda9 ro quiet splash video=radeonfb '''init=/sbin/initng'''
  
 
====Runlevel====
 
====Runlevel====
{{path|/etc/initng/default.runlevel}}:
+
Add bootitems to the default bootlevel:
 +
 
 +
Ex: {{cmduser|sudo ng-update add daemon/powernowd default}}
 +
 
 +
This is my {{path|/etc/initng/default.runlevel}}:
 
  system
 
  system
 
  daemon/acpid
 
  daemon/acpid
Line 122: Line 210:
 
  daemon/klogd
 
  daemon/klogd
 
  daemon/gdm
 
  daemon/gdm
daemon/hpiod
 
 
  daemon/cupsd
 
  daemon/cupsd
 
  daemon/powernowd
 
  daemon/powernowd
 +
 +
 +
Coldplug is not added to the system.runlevel. We need this to automatically load modules, like sound and wireless.
 +
Add coldplug to the system runlevel {{path|/etc/initng/system.runlevel}}:
 +
 +
{{cmduser|sudo ng-update add system/coldplug system}}
  
 
===Scripts===
 
===Scripts===
Line 134: Line 227:
 
         pid_file = /var/run/dbus/pid
 
         pid_file = /var/run/dbus/pid
 
         daemon {
 
         daemon {
               DAEMON=/usr/bin/dbus-daemon
+
               '''DAEMON=/usr/bin/dbus-daemon'''
               NAME=dbus
+
               '''NAME=dbus'''
 
               DAEMONUSER=messagebus
 
               DAEMONUSER=messagebus
 
               PIDDIR=/var/run/dbus
 
               PIDDIR=/var/run/dbus
Line 141: Line 234:
 
               DESC="system message bus"
 
               DESC="system message bus"
 
   
 
   
               if [ -e /etc/default/dbus ]; then
+
               if [ -e '''/etc/default/dbus''' ]; then
                 . /etc/default/dbus
+
                 . '''/etc/default/dbus'''
 
               fi
 
               fi
 
   
 
   
Line 176: Line 269:
 
         PIDDIR=/var/run/hal
 
         PIDDIR=/var/run/hal
 
         NAME=hal
 
         NAME=hal
         DAEMONUSER=hal
+
         '''DAEMONUSER=hal'''
 
         DESC="Hardware abstraction layer"
 
         DESC="Hardware abstraction layer"
 
   
 
   
Line 217: Line 310:
 
     }
 
     }
 
     #pid_file = /var/run/gdm.pid
 
     #pid_file = /var/run/gdm.pid
 +
}
 +
 +
====cupsd.i====
 +
Somethings wrong in the way the initNG scripts loads cups with hplip.
 +
 +
I did an ugly hack: {{path|daemon/cupsd}}
 +
service daemon/cupsd {
 +
need = system/initial system/mountroot net/lo
 +
# use = daemon/printconf daemon/hpiod daemon/hpssd
 +
# daemon = /usr/sbin/cupsd
 +
# daemon_args = -f
 +
daemon {
 +
    /etc/init.d/hplip start
 +
    /etc/init.d/cupsys start
 +
}
 
  }
 
  }
  
Line 240: Line 348:
 
down, saving you battery power, and shutting off the loudest component of
 
down, saving you battery power, and shutting off the loudest component of
 
most computers.
 
most computers.
{{cmduser|sudo apt-get noflushd}}
+
{{cmduser|sudo apt-get install noflushd}}
  
 
===ifplugd===
 
===ifplugd===
Line 248: Line 356:
 
onboard network adapters, since it will only configure the interface
 
onboard network adapters, since it will only configure the interface
 
when a cable is really connected.
 
when a cable is really connected.
{{cmduser|sudo apt-get ifplugd}}
+
{{cmduser|sudo apt-get install ifplugd}}
  
 
{{path|/etc/default/ifplugd}}:
 
{{path|/etc/default/ifplugd}}:
  INTERFACES="eth0"
+
  INTERFACES="'''eth0'''"
  HOTPLUG_INTERFACES="eth0"
+
  HOTPLUG_INTERFACES="'''eth0'''"
  ARGS="-q -f -u0 -d10 -w -I -b"
+
  ARGS="-q -f -u0 -d10 -w -I '''-b'''"
 
  SUSPEND_ACTION="stop"
 
  SUSPEND_ACTION="stop"
  
Line 265: Line 373:
 
==Known problems==
 
==Known problems==
 
{{Todo|List of bugs from kernel, Xorg and Ubuntu}}
 
{{Todo|List of bugs from kernel, Xorg and Ubuntu}}
 +
 +
==Links==
 +
*[http://www.columbia.edu/~em36/ubuntubreezythinkpadt42.html Ubuntu Breezy on a ThinkPad T42]
 +
*This guide is listed at the [http://tuxmobil.org/ibm.html TuxMobil Linux laptop and notebook installation survey (IBM/Lenovo)].

Latest revision as of 22:18, 26 August 2007

General installation

Here comes installation instructions for Ubuntu 5.10 on T42 2374-ZEP.

Get a copy of Ubuntu from UbuntuLinux.org.


You should update your /etc/apt/sources.list here mine:

#deb cdrom:[Ubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted

#deb http://dk.archive.ubuntu.com/ubuntu breezy main restricted

## Uncomment the following two lines to fetch updated software from the network
deb http://mirrors.dotsrc.org/ubuntu breezy main restricted universe multiverse
deb-src http://mirrors.dotsrc.org/ubuntu breezy main restricted universe multiverse

## Uncomment the following two lines to fetch major bug fix updates produced
## after the final release of the distribution.
deb http://mirrors.dotsrc.org/ubuntu breezy-updates main restricted universe multiverse
deb-src http://mirrors.dotsrc.org/ubuntu breezy-updates main restricted universe multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
#deb http://mirrors.dotsrc.org/ubuntu breezy-backports main restricted universe multiverse
#deb-src http://mirrors.dotsrc.org/ubuntu breezy-backports main restricted universe multiverse

deb http://mirrors.dotsrc.org/ubuntu breezy-security main restricted universe multiverse
deb-src http://mirrors.dotsrc.org/ubuntu breezy-security main restricted universe multiverse

#deb ftp://ftp.nerim.net/debian-marillat/ etch main

$ sudo apt-get update

Kernel support

How to get the correct kernel: $ sudo apt-get install linux-686

Kernel modules

TODO
Load the different kernel modules, and their configuration

ibm_acpi module:

Turning on experimental features:

/etc/modprobe.d/ibm_acpi.modprobe:

options ibm_acpi hotkey=enable,0xffff experimental=1


Starting with wireless off: /etc/modprobe.d/ipw2100.modprobe:

options ipw2100 disable=1

ibm_acpi modules compilation

Kernel 2.6.12-9 included in Breezy only included ibm_acpi version 0.8. However a version 0.11 is available, and included in 2.6.13.

http://bugme.osdl.org/show_bug.cgi?id=4947

ACPI

TODO
Hibernate, suspend, buttons, lid, speedstep

Because of "options ipw2100 disable=1" the wireless lan is initially turned off by a software feature. The default script in Breezy does not turn on the software part. Modification to turn on wireless: /etc/acpi/wireless.sh:

#!/bin/bash
# Find and enable/disable wireless devices

for DEVICE in /sys/class/net/*; do
    if [ -d $DEVICE/wireless ]; then
# $DEVICE is a wireless device. Check if it's powered on:
	if [ `cat $DEVICE/device/power/state` = 0 ]; then
# It's powered on. Switch it off.
	    echo -n 3 > $DEVICE/device/power/state;
	    echo 0
	else
# It's powered off. Switch it on.
	    echo -n 0 > $DEVICE/device/power/state;
	    echo -n 0 > $DEVICE/device/rf_kill;
	    echo 1
	fi
    fi
done

Using Fn-F5 to enable/disable Bluetooth

First, to make sure Fn-F5 is available as a hotkey, either do

 # If you want Fn-F5, use this, and verify the mask in:
 # /etc/modprobe.d/ibm_acpi.modprobe
 echo 0xff9f > /proc/acpi/ibm/hotkey
 # For Fn-F6, use this one. You'll need to change the mask in
 # /etc/modprobe.d/ibm_acpi.modprobe
 echo 0xffff > /proc/acpi/ibm/hotkey

Next, create a shell script called /etc/acpi/bluetooth.sh:

 #!/bin/bash
 # Enable/disable builtin Bluetooth on IBM Thinkpads
 BLUETOOTH=/proc/acpi/ibm/bluetooth
 STATE=dis
 if grep -q disabled $BLUETOOTH; then
         STATE=en
 fi;
 echo ${STATE}abled > $BLUETOOTH

Next, create an ACPI event file /etc/acpi/events/ibm-bluetooth

 # This is called when the user presses Fn-F5 button and calls
 # /etc/acpi/bluetooth.sh for further processing.
 event=ibm/hotkey HKEY 00000080 00001005
 action=/etc/acpi/bluetooth.sh

You might need to restart acpid for it to start working.

Xorg

Relevant part:

Section "InputDevice"
	Identifier	"Configured Mouse"
	Driver		"mouse"
	Option		"CorePointer"
	Option		"Device"		"/dev/input/mice"
	Option		"Protocol"		"ImPS/2"
	Option		"Emulate3Buttons"	"true"
	Option		"EmulateWheel"		"true"
	Option		"EmulateWheelButton"	"2"
	Option		"ZAxisMapping"		"4 5"
EndSection

Section "InputDevice"
	Identifier	"Synaptics Touchpad"
	Driver		"synaptics"
	Option		"SendCoreEvents"	"true"
	Option		"Device"		"/dev/psaux"
	Option		"Protocol"		"auto-dev"
	Option		"HorizScrollDelta"	"0"
EndSection

Section "Device"
	Identifier	"ATI Technologies, Inc. Radeon Mobility 7500 (M7 LW)"
	Driver		"radeon"
	BusID		"PCI:1:0:0"
	Option		"DynamicClocks"	"off"
	Option		"AGPMode"	"4"
	Option		"AGPFastWrite"	"yes"
EndSection
ATTENTION!
Options DynamicClocks "on" may hang your machine

Initng

Very great initiative for optimizing the boot process. Initng

Dep packages can be found: http://alioth.debian.org/projects/pkg-initng/

Installation: $ sudo dpkg -i initng_0.3.3-2_i386.deb

To run nice a few things and scripts need modification as follows:

Load modules on startup

Unfortunately it seems not all relevant modules are loaded automaticly when using InitNG.

Please help finding the proper scripts to do this.

Just add the proper modules to /etc/modules.

This is my list:

lp
mousedev
psmouse

#Additional ACPI features
ibm_acpi

#Frequency scaling
cpufreq_userspace
cpufreq_powersave
speedstep_centrino

Grub kernel options

To enable initng an option must be appended to the kernel load command in grub.

/boot/grub/menu.lst:

kernel          /vmlinuz-2.6.12-9-686 root=/dev/hda9 ro quiet splash video=radeonfb init=/sbin/initng

Runlevel

Add bootitems to the default bootlevel:

Ex: $ sudo ng-update add daemon/powernowd default

This is my /etc/initng/default.runlevel:

system
daemon/acpid
daemon/dbus
daemon/hald
daemon/vixie-cron
daemon/ifplugd
system/alsasound
system/speedstep
system/laptop-mode
daemon/syslogd
daemon/klogd
daemon/gdm
daemon/cupsd
daemon/powernowd


Coldplug is not added to the system.runlevel. We need this to automatically load modules, like sound and wireless. Add coldplug to the system runlevel /etc/initng/system.runlevel:

$ sudo ng-update add system/coldplug system

Scripts

dbus.i

daemon/dbus.i has a few faults, on Ubuntu it is "dbus" not "dbus-1"!

service daemon/dbus {
        need = system/initial system/mountfs system/bootmisc
	
        pid_file = /var/run/dbus/pid
        daemon {
              DAEMON=/usr/bin/dbus-daemon
              NAME=dbus
              DAEMONUSER=messagebus
              PIDDIR=/var/run/dbus
              PIDFILE=$PIDDIR/pid
              DESC="system message bus"

              if [ -e /etc/default/dbus ]; then
                . /etc/default/dbus
              fi

              if [ ! -d $PIDDIR ]; then
                mkdir -p $PIDDIR
                chown $DAEMONUSER $PIDDIR
                chgrp $DAEMONUSER $PIDDIR
              fi
              if [ -e $PIDFILE ]; then
                PIDDIR=/proc/$(cat $PIDFILE)
                if [ -d ${PIDDIR} -a  "$(readlink -f ${PIDDIR}/exe)" = "${DAEMON}" ]; then
                  echo "$DESC already started; not starting."
                else
                  echo "Removing stale PID file $PIDFILE."
                  rm -f $PIDFILE
                fi
              fi
              echo -n "Starting $DESC: "
              $DAEMON --system $PARAMS
              echo "$NAME."
              }
}

hald.i

daemon/hald.i

service daemon/hald {
    need = system/initial system/mountfs daemon/dbus
#    use = daemon/acpid

    daemon {
        PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
        DAEMON=/usr/sbin/hald
        PIDDIR=/var/run/hal
        NAME=hal
        DAEMONUSER=hal
        DESC="Hardware abstraction layer"

        if [ -f /etc/default/hal ] ; then
          . /etc/default/hal
        fi

        if [ ! -d $PIDDIR ]; then
          mkdir -p $PIDDIR
          chown $DAEMONUSER:$DAEMONUSER $PIDDIR
        fi

        echo -n "Starting $DESC: "
        $DAEMON --daemon=no $DAEMON_OPTS
        echo "$NAME."
        }
}

gdm.i

daemon/gdm.i, to add locale support to the GDM login screen:

service daemon/gdm {
    need = system/initial system/mountfs system/hostname net/lo system/modules system/bootmisc
    use = daemon/xfs system/static-modules system/coldplug system/netmount    
#    daemon = /usr/sbin/gdm
#    daemon = /usr/bin/gdm
#    daemon_args = -nodaemon
    daemon {
	PATH=/bin:/sbin:/usr/bin:/usr/sbin
	if [ -r /etc/default/gdm ]; then
	    . /etc/default/gdm
	    if [ -z "$LANG" ]; then
		:
	    else
		export LANG
	    fi
	fi
	
	gdm -nodaemon
    }
    #pid_file = /var/run/gdm.pid
}

cupsd.i

Somethings wrong in the way the initNG scripts loads cups with hplip.

I did an ugly hack: daemon/cupsd

service daemon/cupsd {
	need = system/initial system/mountroot net/lo
#	use = daemon/printconf daemon/hpiod daemon/hpssd
#	daemon = /usr/sbin/cupsd
#	daemon_args = -f
	daemon {
	    /etc/init.d/hplip start
	    /etc/init.d/cupsys start
	}
}

Helpfull tools

Rovclock

Utility to overclock and underclock the ATI radeon chip. Can be used to underclock to reduce power, especialy when on batteries.

Get it from: http://www.hasw.net/linux/

Stable clock speeds: Core: 100MHz Memory: 120Mhz for LCP only, 180Mhz when using DVI out on port replicator.

Ex: $ sudo rovclock -c 100 -m 120

noflushd

Noflushd is a daemon that spins down disks that have not been read from after a certain amount of time, and then prevents disk writes from spinning them back up. It's targeted for laptops but can be used on any computer with IDE disks. The effect is that the hard disk actually spins down, saving you battery power, and shutting off the loudest component of most computers. $ sudo apt-get install noflushd

ifplugd

ifplugd is a daemon which will automatically configure your ethernet device when a cable is plugged in and automatically unconfigure it if the cable is pulled. This is useful on laptops with onboard network adapters, since it will only configure the interface when a cable is really connected. $ sudo apt-get install ifplugd

/etc/default/ifplugd:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I -b"
SUSPEND_ACTION="stop"

gnubiff

gnubiff is a mail notification program that checks for mail and displays headers when new mail has arrived. Has a tray icon for gnome. Supports SSL which I needed. http://gnubiff.sourceforge.net/

$ sudo apt-get install gnubiff

Known problems

TODO
List of bugs from kernel, Xorg and Ubuntu

Links