Installing Ubuntu 10.04 (Lucid Lynx) on a ThinkPad X220
Kernel & Graphics
In order to get an intel video driver to recognise the new Sandybridge, you have to add the Ubuntu kernel PPA and the intel-driver PPA from glasen and optionally x220 intel mesa PPA from fhackenberger (for 3D and desktop effects), update all package (this pulls in a new xorg version) and then install linux-image-generic-pae-lts-backport-natty (linux-image-generic-lts-backport-natty is an alternative if you don't have > 4GB memory). That pulls in a 2.6.38 kernel backported from Natty, which is required for the updated intel video driver (version 2.15) to work. It also contains an updated e1000e driver for your network card, which does not work with the Lucid kernels. Make sure you install the kernel AFTER upgrading libdrm (which is provided by intel-driver PPA from glasen, or run update-initramfs -u -k all). Otherwise the new libdrm will not be loaded and the xorg driver will not work.
You have to reboot to load the new kernel. Suspend works, even with USB 3.0 and 3D.
Just for reference here are the version of the critical packages I have tested:
linux-image-generic-pae-lts-backport-natty 2.6.38.8.18 xserver-xorg-video-intel 2:2.15.0~lucid~ppa4 libdrm-intel1 2.4.25~glasen~lucid~ppa1 libdrm2 2.4.25~glasen~lucid~ppa1 libgl1-mesa-dri 7.10.2-0ubuntu3
If you have compiz enabled, you might experience a hanging machine after logging in. If you are running Gnome, you can disable compiz on the terminal (before logging in using the GUI) by editing ~/.gconf/desktop/gnome/session/required_components/%gconf.xml and replacing compiz with metacity.
Wireless Lucid Kernel
In order to get wireless to work with the Lucid kernel (it did not connect to any AP on my X220 machine and could not upgrade because the Ethernet did not work either), you have to pass the parameter 11n_disable=0 to the iwlagn module. Simply do:
sudo modprobe -r iwlagn sudo modprobe iwlagn 11n_disable=0
As an alternative you can create the file /etc/modprobe.d/intel-5300-iwlagn-disable11n.conf with the following content:
options iwlagn 11n_disable=0
Then reload the wireless driver:
sudo modprobe -r iwlagn sudo modprobe iwlagn
I had to do that a few times, before it worked.