Rackspace recently announced that they have made it possible for Rackspace cloud server users to manage their own kernel, rather than being stuck with the Rackspace-provided kernel. Ie. it is now possible to upgrade your Rackspace cloud server, just like on Amazon AWS!!
The plan is apparently to phase in this new capability for new servers, but existing servers can be retrofitted as well. However this process did not turn out to be quite as straight-forward as I had hoped, or these documents lead me to believe. I will try to recall the necessary steps to get from Lucid to Maverick.
I had an Ubuntu Lucid machine. Before turning it into a Maverick machine, the first step is to MAKE A BACKUP OF YOUR SERVER. This process is highly error-prone, and the result of any small error is a server that will not boot. In fact, it is advisable to make a new server backup after each of the major steps below.
Next step is to switch over to pv-grub and get that working:
mkdir /boot/grub cp /etc/init/tty1.conf /etc/init/hvc0.conf sed -i 's/tty1/hvc0/' /etc/init/hvc0.conf sed -i 's/sda/xvda/' /etc/fstab apt-get install linux-virtual
And create a /boot/grub/menu.lst that, for Lucid, looks something like this:
default=0 timeout=5 title=DISTRO-NAME "Ubuntu 2.6.32-33-server" root (hd0) kernel /boot/vmlinuz-2.6.32-33-server ro console=hvc0 root=/dev/xvda1 initrd /boot/initrd.img-2.6.32-33-server
Now open a ticket with Rackspace and ask them to switch your server over to pv-grub. Actually, it would probably be better to do this via chat, because they will reboot the server when they make the switch, and if something is wrong with your configuration the server will not come back. If and when it does, your still-Lucid server will be running with the Ubuntu repository-provided kernel, rather than the kernel provided by the Rackspace virtualization environment.
The next step is the more-or-less standard Ubuntu upgrade from Lucid to Maverick. At the end, DO NOT REMOVE THE LUCID KERNEL, because after you reboot at the end of the upgrade you will find that your newly upgraded Maverick server is still running the Lucid kernel. Here is where it hit the fan for me. Up to this point, despite the less then perfect documentation, Rackspace support was very helpful. I got stuck here and they basically cut me loose, telling me they do not debug OS issues.
********* UPDATED SECTION **********************
Do not linger at Maverick. Upgrade directly from Lucid, to Maverick, and then to Natty, WITHOUT REBOOTING. The Lucid kernel will work with the Natty userspace. If you do as I describe in the section marked "DON'T DO THE BELOW", yes you will get a functioning Maverick server, but your Rackspace snapshot backups will not work (will not boot) as the partition label disappears from the partition in the backup. Going directly to Natty is much cleaner, easier, and safer, as only the Maverick kernel is problematic and needs special handling. Once you have upgraded the userland to Natty, BACKUP YOUR SERVER. Then, again, modify /boot/grub/menu.lst:
default=0 timeout=5 title=DISTRO-NAME "Ubuntu 2.6.38-11" root (hd0) kernel /boot/vmlinuz-2.6.38-11-virtual ro console=hvc0 root=/dev/xvda1 initrd /boot/initrd.img-2.6.38-11-virtual
to point to the Natty kernel, and reboot.
(Note that I tried the Ubuntu grub-legacy-ec2 package to try to achieve automatic updates of /boot/grub/menu.lst, but the result was a non-booting server.)
********* DON'T DO THE BELOW *******************
Next stop for me was to call on Canonical for some help, and they were helpful as well. The obvious thing to do here is just edit /boot/grub/menu.lst to point to the Maverick kernel and initrd instead of Lucid's. This did not work, due to a quirk in the Maverick kernel. To get around it, label your root partition:
e2label /dev/xvda1 MYROOT
Now make the following change to /boot/grub/menu.lst:
default=0 timeout=5 title=DISTRO-NAME "Ubuntu 2.6.35-30-virtual" root (hd0) kernel /boot/vmlinuz-2.6.35-30-virtual ro console=hvc0 root=LABEL=MYROOT initrd /boot/initrd.img-2.6.35-30-virtual
Note the "root=LABEL=MYROOT" part. And to /etc/fstab:
proc /proc proc defaults 0 0 LABEL=MYROOT / ext3 defaults,errors=remount-ro,noatime 0 1 UUID=b9f62618-9dff-4bb4-9f58-3c2c5a95625d none swap sw 0 0
(you can get the UUID value for swap from /dev/disk/by-uuid/)
And now when you reboot, it should all work: a Maverick server running the Maverick kernel.