CrunchBang on Thinkpad X220

Desktop Replacement
Hardware Modifications
Upgrade BIOS From USB
About CrunchBang
System Modifications

Desktop Replacement:

It has been over two and a half years since my last Debian-related post so I thought it necessary to provide an update. I have since donated my desktop machine to a worthy cause in favour of the more-mobile Thinkpad platform. My semi-retired Debian desktop is now providing headache-free internet access at the local library, where one of the librarians had long been toying with the idea of using open source. The successful implementation of my machine prompted their acquisition of a further two Ubuntu machines.

My new Thinkpad, on the other hand, has been running CrunchBang Linux (#!) for over a year and a half, and I could not be happier. Although not a pure Debian system, #! is still a lean derivative.

Hardware Modifications:

Hardware changes I’ve made so far include: installing an Intel 30GB 525s MLC mSATA SSD drive to act as my system drive; and running 2 x 4 GB Corsair PC3-10600 DDR3-1333 RAM in dual channel mode.

Upgrade BIOS From USB:

After grabbing the latest BIOS-update bootable iso from the Lenovo support site, it is necessary to extract its [otherwise hidden] contents via a perl script called

To fetch the script:
$ wget ''

Then, extract the contents of the downloaded *.iso file to any new target file:
$ perl ./ /path/to/_bios_update_cd.iso > /path/to/_target_image_.img

To write the image to your USB (located at /dev/sdX):
$ sudo dd if=/path/to/_target_image_.img of=/dev/sdX bs=512K

Then hit F12 at bootup to choose the bootable medium.

About CrunchBang:

Out-of-the-box, #! does everything I need it to do on a laptop (wifi management; power-saving; keyboard accessibility-support,) at a fraction of the resources required were I to customize a larger/slimmer distribution to suit my needs. Were I to install Debian, I would have arrived at my ideal setup at a much later date.

Crunchbang provides a superb arsenal of open-source productivity applications, and I found myself bored witless during post-install. It defaults to using Openbox - which is not exactly a tiling WM that I’m accustomed to using - but I have made peace with that by implementing split-panes in tmux which, considering the smaller LCD screen real-estate, works reasonably well.

For work-purposes, I have implemented KVM + Qemu to manage a guest Windows XP OS - the guide I used can be found here - and I have been able to leverage the power of this fantastic little unit to conduct business.

System Modifications:

System changes I’ve made so far include: switching from grub2 to syslinux (see here); colourizing init feedback (see here); mounting system paths on the SSD drive with TRIM support (with fstab: -o discard); enabling Thinkpad-specific battery savings (with tlp and thinkpad-smapi); relocating /var paths and browser profiles to tmpfs (with profile-sync-daemon).

To get wifi working again after a system suspend-resume event, my executable /etc/pm/sleep.d/20_fix_wifi contains:
case "${1}" in resume|thaw) rmmod iwlwifi && modprobe iwlwifi ;; esac

Additionally, I had CrunchBang show verbose shutdown messages by modifying /etc/slim.conf to show:

xserver_arguments -nolisten tcp -novtswitch

As my Crunchbang box is essentially a Debian Wheezy machine, I will henceforth address it as my debian box in all future blog entries.