Installing Ubuntu Intrepid Ibex (8.10) on an X301

From ThinkWiki
Revision as of 22:40, 1 April 2009 by Blk (Talk | contribs) (Compiling custom fast-boot-patched kernel: adapt for 2.6.29)
Jump to: navigation, search

Please improve on this preliminary effort.


Now that Intrepid is out the door, get it while it's fresh!


pretty much all of the fn+... keys work (not all tested yet) tested: lock screen, brightness, sleep, hibernation, battery status, thinklight


Works OOB


Works OOB: The Ubuntu 8.10 Kernel (2.6.27) ships with support for the IWL5100 (iwlagn driver)


Works fine. It is spinning lightly almost all the time, but acceptable (like in windows)

Power Mgmt

Seems to work fine. The gnome power manager reports ~3h30 which sounds about right. The [Fn] + [F3] combination even causes the applet to pop up info :)


Works fine OOB

Suspend and Hibernate

Closing the lid puts the machine to sleep, i often managed to resume from ram but i also got frozen (mouse moveable but switching to console doesn't work, screen remains black except for the pointer (i have a black screensaver)) - caution here (solution below) - The Installing_Debian_(stable)_on_an_X300#Suspend_.26_Hibernate article suggests removing the e1000e module which i haven't tried but may help. The 2.6.28-rc3-git1 kernel features a suspend fix for the iwl-agn (wireless) driver, so if that was an issue, it might be gone with the next kernel (not shipped with ubuntu 8.10)

This script offers a solution to the black-freeze-on-resume problem. my suspend now works flawlessly


Works out of the box on the generic kernel, i've run into some trouble with my custom kernel - feel free to report on what i'm missing. alsamixer reports the Conexant chip being used so i've selected that one in the snd-hda-intel driver (selecting them all didn't help either)

i haven't extensively tested this feature untested remain:

  • usage with a sound server (esd)
  • microphone
  • headphone

-works correct so far with pulseaudio

-headphone port works

If no sound in applications such as Firefox, check the following: User name may be missing from audio group. Add it with:

sudo vi /etc/group

and add your user name to the audio group:


In addition the PCM channel may be on zero. Slide it to maximum. Do this by double clicking the speaker icon and then clicking "mixer". Push the slider to max. Alternatively in a terminal session run:


Select PCM and set to maximum output.


works fine in ekiga (green LED lights up as well) if it doesn't work you might want to try

sudo adduser youruser video

Graphics Chipset and Driver Information


The chipset is called: Mobile Intel® GM45 Express Chipset

It was initially referred to as IGD_GM "Intel Integrated Graphics Device" in the Intel driver

Next, support for G4X "Intel 4 series chipsets" was added

IGD_GM was then renamed to it's official name GM45

Finally, the defines IS_GM45 were merged into IS_G4X because they are identical as at 2008-11-06.

Direct Rendering Infrastructure

DRI is supported with the package libgl1-mesa-dri

The DRI driver is i965

$ grep AIGLX:\ Loaded /var/log/Xorg.0.log
(II) AIGLX: Loaded and initialized /usr/lib/dri/

The DRM driver is i915

$ lsmod | grep drm
drm                   110304  3 i915

External Displays

vga port works as expected. you can activate it through xrandr or the screen resolution preferences.

with xrandr HDMI-1 shows up as well, but i couldn't test it yet (no adaptor/displayport device)


  • displayport

Display port may not yet be supported by the intel driver: There have however been commits since then mentioning displayport.

The follow xorg.conf works with an external 24" dell display connected via VGA:

Section "Device"
   Identifier      "Intel GM45 Express"
   Driver          "intel"
   Option          "monitor-VGA"   "DELL2407WFPHC"
   Option          "monitor-LVDS"  "Laptop"
Section "Monitor"
   Identifier      "DELL2407WFPHC"
   Option          "PreferredMode"  "1920x1200"
#   Option          "Left Of" "Laptop" # causes crash on intel 2.5
Section "Monitor"
   Identifier      "Laptop"
Section "Monitor"
   Identifier      "HDMI-1"
   Option          "Ignore"  "true"
Section "Screen"
   Identifier      "Default Screen"
   Device          "Intel GM45 Express"
   Monitor         "Laptop"
   DefaultDepth    24
   SubSection "Display"
       Depth       24
       Virtual     3360 2100
Section "ServerLayout"
   Identifier      "Default Layout"
   Screen          "Default Screen"

Compiz / 3D Acceleration

Works OOB, requires p

The Intel i965 driver supports 8192x8192 resolution in the Intrepid packages, however the mesa dri driver libgl1-mesa-dri currently only supports 2048x2048. This means is your combined resolution is greater than that (i.e you have an external display attached), mesa eyecandy will be disabled.

Bug link:

$ glxinfo -l | grep 2048

There is crude patch which has had mostly positive feedback, but no-one seems to be sure: I've not tested it yet. It's also not clear when it will be fixed upstream.

Boot time

  • 12sec from power to GRUB
  • 22sec to GDM, 18sec with tweaked readahead
  • 29sec from GDM into fully loaded session, 28sec with readahead (seems awfully slow to me.. fluxbox takes like 2sec..)


Native Upstart boot

Since i'm using this one i even ditched boot-readahead (still using desktop-readahead though) Described here

Concurent loading

edit /etc/init.d/rc set CONCURRENCY from none to shell


note that after some testing i've switched back to the none value, as some startups weren't clean


install readahead

sudo apt-get install readahead

profile your GNOME login (instructions: [1], then filter out all files under 100kb (guessed number, feel free to experiment). i filtered out small files since access times on SSD is very good, throughput not. The linked page states about loading in Xsession.d, forget about that and put your profiled files in /etc/readahead/boot and /etc/readahead/desktop. This will cause the boot process to profit and the desktop-files to load earlier (before X starts) to create a boot file, append "profile" to the GRUB prompt

filter out the small files boot file:

cat boot | xargs -i ls -lk {} | sort -rn -k +5 | awk "{print(\$8)}" > boot.sorted

now delete any line below the wanted threshold from the sorted file (i took "dash" as masker with 104kb) since the boot file is ordered, we want to keep that order

cat boot | while read line; do grep "$line" boot.sorted >>; done;

same for the desktop file:

cat desktop | xargs -i ls -lk {} | sort -rn -k +5 | awk "{print(\$8)}" > desktop.sorted

remove lines from sorted file...

cat desktop | while read line; do grep "$line" desktop.sorted >>; done;

Fingerprint Reader

Doesn't currently work as it's an AthenTec and not a Thompson chip.

Minimalistic installation instructions

The system you are installing when following these instructions will be a good starting point if you want a clean ubuntu system without all the bloat (which you may of course add yourself). For a simple installation just download and install the desktop version of ubuntu 8.10 (beta)

Boot from the Ubuntu Server AMD64 Disc (32bit also works, but what a waste) select Install Ubuntu Server

Choose language and country Select Keyboard layout

Don't worry about network interface right now.. (only ubuntu 8.10 Beta) choose your hostname then username and password change your proxy settings

At the software selection select:

  • OpenSSH server

you might want the Samba Server if you're sharing files on a mixed network

wait for the install to complete (5 min)

Reboot without the CD

login to you new system and switch to root

sudo -s

if you're using the beta and your network, download a newer kernel (amd64) from (this will require a second machine or other OS if you have)

copy it to usb stick

on the X301 mount usb stick with

mkdir /mnt/usb && mount /dev/sdb /mnt/usb

install kernel with

dpkg -i /mnt/usb/linux-image-2.6.27-7-generic_2.6.27-7.12_amd64.deb
umount /mnt/usb

if networking still doesn't work (try with ping edit the interfaces

nano /etc/network/interfaces

and add the line

iface eth0 inet dhcp

use [CTRL]+[X], [Y] to save and quite and start the interface

ifup eth0

it should now be ok...

now let's loose some fat:

apt-get remove --purge linux-image-server linux-image-2.6.27-4-server
apt-get remove --purge apparmor update-motd landscape-common installation-report \
libapparmor* libgpm2 memtest86+ ppp pppconfig pppoeconf reiserfsprogs \
strace tasksel tasksel-data ubuntu-minimal ubuntu-serverguide

rm -rf /var/log/landscape

and update the system with the newest upstream package catalog:

apt-get update

install sound:

apt-get install alsa

..and X

apt-get install xserver-xorg-video-intel xserver-xorg-input-mouse xserver-xorg-input-kbd xserver-xorg-input-synaptics


apt-get install gnome-session gdm

and the network manager:

apt-get install network-manager-gnome

now upgrade the base system with:

apt-get dist-upgrade

if you added the line to fix networking, it is now time to remove it again from /etc/network/interfaces as NetworkManager will do that for us

reboot the machine


gdm should now appear and you may log in to X/Gnome

start synaptic from the gnome menu, you might want to add additional filters like

  • Installed: check only "Installed"
  • Upgradable: check only "Upgradable" (shows also upgradable packages which aren't upgraded to a new upstream version (i.e. only featuring ubuntu-specific patches)
  • Residual Config: "Residual config"
  • Orphaned: check only "Orphaned" (install deborphan package to use this)
  • Autoremove: check only "Automatic removable"

if you know you'll need one of the following packages, don't delete it or just reinstall it later on.. they should all be safe to delete (at least my system still works)

select the "Installed" filter and remove (right click, then mark for complete removal):

  • alacarte
  • app-install-data
  • aptitude
  • apt-xapian-index
  • cupsys
  • ed
  • esound-clients
  • gnome-user-guide
  • gnome-utils
  • libbeagle1
  • libmbca0
  • ltrace
  • mobile-broadband-provider-info
  • mtr-tiny
  • netcat netcat-traditional
  • oss-compat
  • parted popularity-contest
  • python-beagle python-debian
  • python-gnupginterface
  • python-openssl
  • python-pyopenssl
  • python-software-properties
  • python-twisted-bin
  • python-twisted-core
  • python-xapian
  • python-zopeinterface
  • radeontool
  • rsync
  • tcpd
  • tcpdump
  • ufw
  • unattended-upgrades
  • update-manager-core
  • vim-tiny
  • xdg-user-dirs
  • xserver-xorg-input-all
  • xserver-xorg-input-vmmouse
  • xserver-xorg-input-wacom

right now the system is pretty much stripped down and we can build up from here :)

some things i got from the missing-recommands tabs:

  • acpid
  • deborphan
  • evince
  • gnome-screensaver
  • gnome-system-tools
  • vim

once deborphan is installed: delete anything from the custom filter orphaned

what i also installed:

  • evolution
  • firefox
  • mesa-utils (for glxgears)
  • seahorse
  • totem-gstreamer
  • mozilla-plugin-gnash

what i still removed:

  • gnome-pilot
  • gnome-pilot-conduits

You may now want to install following packages:

  • gnome-terminal
  • gedit
  • gcalctool
  • cpufrequtils
  • powertop
  • system-config-printer-gnome (+ your printer driver)
  • linux-firmware (or download the firmware yourself from, or extract iwlan-5000-1.ucode from that package and put it into /lib/firmware)
  • libdvdcss from (read legal advices)

And remove those:

  • libv4l-0
  • libgtksourceview-common
  • libgtksourceview1.0-0
  • python-gnome2-desktop
  • gnome-app-install

Compiling custom fast-boot-patched kernel

install these packages:

  • libncurses5-dev
  • make

Get most recent 2.6.29 kernel from [[2]] untar it..

sudo -s
cd /usr/src
tar xjf /home/foo/downloads/linux-2.6.29.tar.bz2
ln -s linux-2.6.29 linux
cd linux

The Fastboot patch is already included in 2.6.29. It just requires the boot parameter fastboot (described below)

Get the kernel .config file and put it inside the root of your kernel source. This will make a good start. Not that i did not include support for IPv6, firewall and PCMCIA so you'll need to add those if wanted.

if you want to change the configuration:

make menuconfig

build the kernel:

make -j3

install kernel and modules:

make install
make modules_install

..adapt your /etc/grub/menu.lst file to boot the new kernel make sure to switch the root=UUID=.. for root=/dev/sda1 or you'll get a kernel panic when booting (can someone explain this to me why UUID won't work (because of not using an initrd?)) also remove the initrd line.

mine looks like this:

title           Ubuntu (development branch), kernel 2.6.29
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.29 root=/dev/sda1 usbcore.autosuspend=1 fastboot ro quiet

Compiling intel xorg drivers


With my shiny new kernel i wasn't able to start X as exa was failing.. so after some googling i recompiled the driver. - this will hopefully be fixed before the final release - (it is fixed in the 2.5.0 driver, ubuntu currently has 2.4.1)

While this will work perfectly fine with the light new kernel, the generic ubuntu kernel displays ugly artifacts in firefox and gnome-terminal. So i'd rather wait if you're considering using the generic kernel.

You revert these changes by reinstalling xserver-xorg-video-intel and libdrm2 with

apt-get install --reinstall xserver-xorg-video-intel libdrm2 libdrm-dev

Install these packages from apt

  • automake
  • xutils-dev
  • libtool
  • xserver-xorg-dev
  • xorg-dev
  • pkg-config
  • mesa-common-dev
  • (libdrm-dev) - currently also has to be compiled from source because of incompatibilities with intel's 2.5.0 driver


Get the source from git:

git clone git:// drm
cd drm
./configure --prefix=/usr

now edit the "libtool" file and comment out the line with "directory not ending" aswell as the line before it. (won't install to /usr otherwise, only /usr/local)

make -j3
sudo make install


git clone git:// xf86-video-intel
cd xf86-video-intel
./configure --prefix=/usr
make -j3
sudo make install

Install Intel xorg drivers from the Driver Testing Archive

xserver-xorg-video-intel version 2.5.1 is available from the following archive:

Other tweaks

Don't start the rsync daemon at boot-time:

sudo update-rc.d -f rsync remove

Power-saving settings: insert these lines into /etc/sysctl.conf


If you have lots of RAM (4Gb):


with 2Gb i recommand a value of 40 instead of 0

Switch getty for mingetty

Install mingetty

apt-get install mingetty

edit /etc/event.d/tty1 through 6 and change the last line to

exec /sbin/mingetty tty1

(you could add the --noclear switch on tty1 to leave the boot-messages) also comment out the lines starting with

start on ...

if you do not wish to span ttyX (in my case 4..6)

edit /etc/default/console-setup and change


in my case 3, since i never need more than 3 TTYs


Article skeleton from the Ubuntu 8.10 on X200 article

Article --Blk 20:09, 21 October 2008 (CEST)