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, 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. Compiz does not yet work, as the Sandybridge GPU 3D mesa driver is not yet available as a PPA for lucid and the card is blacklisted. Using the compiz packages from compiz-ppa did not help, as they do not seem to contain the fix.
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
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.