Last Updated: July 3, 2013.

Why I chose a Dell XPS 13

Kudos to Dell for running Project Sputnik! We now have a state of art laptop hardware platform that runs GNU/Linux software without compromising on hardware driver compatibility. Even better, you can buy the XPS 13 laptop from Dell with Ubuntu 12.04 LTS pre-installed. I ordered a machine a few days after Dell announced availability, and I had it in my hands by early December 2012. It will replace my Lenovo Ideapad, a machine that served me well but is limited by a small screen, a small keyboard, and the limited computational ability of its Atom processor. The XPS 13 is in a different league: the Intel Core i7 processor, 8G of RAM, and the 256G SSD makes it a pretty reasonable developer machine.

The Ubuntu based XPS 13 was delivered in what is clearly the Windows 8 packaging. Nothing in the delivered documentation (really just a quick start guide) suggests you will be running Linux. On powering up the machine I was dropped into the tail end of the Ubuntu Ubiquity installer and was asked to set up preferences (time zone, language etc.) and a user account. I was also given the option of creating recovery media on a USB stick during this process, or told to do it later by using the "system tool." Dell does not ship any recovery media in the box. Since I did not have a USB stick handy at the time, I chose to create recovery media later. I was then logged into a very nice looking destop where everything just worked.

It is worth nothing that When I bought this laptop it came with a 1366 by 768 display. The hardware has since been revised to a proper 1080p version. So my one and only serious complaint about the hardware has been addressed, but I'm stuck with the older configuration. Being an early adopter sucks sometimes!.

Generating Recovery Media

The decision to not generate recovery media on a USB stick on the initial power up of the machine led me to the only thing that did not "just work" on this machine! As it turned out I could not find any "system tool" that helped re-generate the recovery media. I made the mistake of assuming there was a GUI tool in a menu somewhere to do this. This bias probably came from the fact that the default desktop feels command line unfriendly to a long time Unix user (a terminal is not even to be seen in the default desktop).

The short answer to generating recovery media if you did not chose to do so at installation: run dell-recovery at a command prompt. The rest of this section might be of interest if you want to understand how Dell delivers your SSD to you.

Until I realized I should use command line completion to find a command like dell-recovery, my searching on the web for how to generate the recovery media led to the Sputnik ISO image. After downloading it I found that it did not actually work - it seems to be lacking a working touchpad driver which makes the installer unusable (on my hardware anyway). Also, it seemed pretty clear that that ISO was not the official Dell distribution anyway, so I was still without recovery media and feeling quite reluctant to experiment with my machine.

After a while I noticed that the recovery media is actually on it's own partition! This is what the delivered machine's SSD partition table looks like:

$ sudo parted -l
Model: ATA SAMSUNG SSD PM83 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  316MB   315MB   primary   fat32           diag
 2      316MB   2885MB  2569MB  primary   fat32           lba
 3      2885MB  240GB   237GB   primary   ext4            boot
 4      240GB   256GB   16.3GB  extended
 5      240GB   256GB   16.3GB  logical   linux-swap(v1)
Mounting /dev/sda2 suggested that it was basically an installer image. So, now the only question was how to boot into it. The nice folks at Canonical seem to make it impossible to easily get to a Grub prompt on boot. After much reading of files in /etc/grub.d/ it became clear that holding down or tapping on the Shift key during the boot sequence would drop me into the grub menu. This method turns out to be very timing dependent, but it will work. The last item in the grub menu, when it finally shows up, allows you to restore the factory settings.

Well, not quite the factory settings. What this installer does is re-install Ubuntu on /dev/sda3. But in the process it will ask you if you want to generate the recovery media. This time I said I wanted it and found that I actually ended up with two copies of the recovery media: one on the USB stick, and the other was left in ~/Downloads/factory_image.iso! Now I felt it was safe to really start messing with my shiny new machine without fear of bricking it!

At around this time I discovered dell-recovery which does all this, but in a much simpler manner. To my chagrin a man -k recovery found it immediately!

The recovery ISO that is created must be written with usb-creator-gtk to produce a bootable USB key. I found this mildly annoying since I'm not a big time Ubuntu user, and I know I will lose the USB stick before I lost my one and only Ubuntu hard disk. So, instead I backup the ISO file elsewhere, and when I need to make a USB key on a regular Linux system I can do this:

$ mount -o loop factory_image.iso /mnt
$ grub-mkrescue -o bootable_factory_image.iso /mnt
$ sudo cp bootable_factory_image.iso /dev/sdX # sdX being the USB key
This is good enough to restore my system, though you will not get the cool persistence features that the usb creator live image will give you.

Installing Debian 7.0 (Wheezy)

This is pretty straightforward. A few observations:

  1. The Dell recovery media does not seem to allow me to resize the Ubuntu partition so that I can install Ubuntu on a smaller partition and Debian alongside it. The advanced partitioner in the bundled Ubuntu installer is (seems?) unable to set a bootable flag on a newly created partitioner. If I set the flag using a virtual terminal the installer "dies unexpectedly" after it prompts me for configuration input. It then offers a very helpful dialog to report this to the Ubuntu folks, but then after collecting some information that is not shared with me it says it cannot do this because the installation has unsupported third party packages! Great! So I basically replaced the Ubuntu installation on /dev/sda3 with Debian (choose "Manual Configuration" in the partitioner and choose to reformat /dev/sda3 and use it as the root mount point).
  2. The latest Wheezy Debian Installer (RC1) works pretty well as long as you follow the instructions for non-free drivers to get the iwlwifi drivers installed (the bug that required manual intervention to get the wifi interface initialized is finally fixed). I had just one problem: I had to remove the second USB stick whith the non-free firmware once the wifi card was detected, otherwise the partitioner seemed to hang forever. Everything else just worked out.

Note: Since I did all this Wheezy has become the stable release. I suspect any of the stable Debian Installer Images will work just fine. There are also unofficial images available with the non free firmware that can make life easier, like this one. Finally, as I found out, the installer detects my Accel (Type A) USB 2.0 Gigabit Ethernet adapter so if you have something like that you don't have to worry about the non free wifi malarkey!

I initially installed only the base installation with 'SSH Server', 'Laptop Utilities', 'Base Installation' selected during installation. This was mostly because I was debugging a few issues with the installer and I don't have a local package mirror or a super fast internet connection that allows me to install the full desktop environment over and over again. The annoying thing about this is on booting into my brand new console prompt I'm left with an unconfigured wireless connection. For this machine I decided to go with network manager instead of using wpa_supplicant and /etc/network/interfaces to manage my wireless connections manually. But I'm still left with the problem of getting that software, and I don't have a wireless connection configured by default!

Now it is relatively straightforward to bring up a wireless connection manually, but only if you remember how to do it! Here is my manual hack for a WPA WiFi network:

# wpa_passphrase "My ESSID" "My Passphrase" > /tmp/wpa.conf
# ifconfig wlan0 up
# wpa_supplicant -i wlan0 -c /tmp/wpa.conf -f /tmp/wpa.log -B
# dhclient wlan0	
This brings up a DHCP connection that let me get on with the business of installing the rest of the tools I required. Note though that the steps above leave your passphrase stored in the log file in the clear!

As a console user the one thing I really needed to do was edit /etc/inputrc and set the bell-style to visible. Otherwise the machine beeps really loud. More notes coming soon!

I finally did get around to installing the default desktop (using tasksel) around the time Wheezy was finally released. It's GNOME 3, but I figure I'll give it a try. I had to use gnome-tweak-tool to get "focus follows mouse" going, and for the first time I'm going to try to live with NetworkManager. On the whole I'm still able to tolerate it. On the good news side, I found that my Accell USB 2.0 Gigabit USB adapter seems to work fine with the stock kernel. Now just to get that trackpad to work perfectly....

Ubuntu, Debian, and the XPS 13

This is the first Linux machine I've seen that might just work for people who need to get stuff done on a computer but don't care for technical details. Everthing seemed well put together, everything seems to work. The one thing that was truly startling was how quickly the machine starts. Even when powered off it will boot into the GNOME desktop within 10 seconds or so. This is how computers should have been from day one! Why we put up with a long boot up period has always been a mystery to me.

Personally, I've been using Debian GNU/Linux for well over a decade now. I like the high technical standards of the distribution, its open development process, the dedicated volunteers who build the distribution, the commitment to wide variety of software and architectures, and most of all the adherence to free software principles. I've been a card carrying FSF member from back when the FSF started handing out cards, and have tried to use free software exclusively since the early 1990's. Having said all that, while I recommend Debian to any one with a passion for Linux I am acutely aware that Debian systems could be the wrong choice for people who don't write software (or even software for Unix systems).

Ubuntu seems to solve this problem. It is a Debian based distribution that, as far as I can tell, focuses on delivering a integrated, usable distribution for personal computers to users who may or may not have a strong software background. It's a much narrower focus than Debian, but it allows for a completely different quality standard. Based on my experience with the XPS 13 the Ubuntu team seems to have done a great job! I would give this computer to my (very computer un-savvy) Mom in a heart beat.

As a software developer though I will stick with Debian. The reasons are many, but they are largely personal and political and have nothing to do with the quality of Ubuntu. In the end contributions to one help the other, and I've decided I will continue with Debian on the XPS 13.