I see complaints across twitter and the feedback page, as well as various blog posts about how the Rackspace Cloud doesn’t support this OS, or that OS. With the introduction of PV-Grub, you should be able to run nearly any OS you want – with a bit of work.
Keep in mind, this process is entirely unsupported by Rackspace. If your OS breaks on you, and you’re using some OS no one has heard of, they’ll be hard pressed to support it.
For this process you will need the following:
- A Tar archive of the filesystem for the OS you want to use, excluding /proc, /sys and /dev
- The New Cloud Server
- A good understanding of the OS you want to use.
For my example, I will be using Suse 11.3, it should work the same for other OSes. Let’s go ahead and get right into it.
Step1 – making your tar image
The first thing you’ll have to do is boot into the OS you want to use. My method for this, was to use my home computer and use Virtualbox to boot into a 64bit VM, and proceeded to install Suse11.3. Once in the VM, I switched to the root user and ran
tar -cf / suse.tar --exclude "/bin" --exclude "/proc" --exclude "/sys"
While this ran, I watched some shows on my new BoxeeBox (you should get one too, they’re awesome).
A Note about VMs and 64Bit: You need a recent Processor that supports virtualization technology, VT-x , if your personal computer does not support this, see if a friend can help you out.
After it finished, I ran
scp suse.tar root@suse-staging.failverse.com:suse.tar
And let it ran. This took me at least a couple hours, due to only having a couple Mbits up on my home connection.
Step 2: Rescue Mode and Things to do!
Now that your image is finally uploaded, you will boot your server into rescue mode. This brings up a new server along side it, and emails you a temporary root password. As it uses the same IP and has different keys, you might need to delete a line out of known_hosts before you can connect.
First, you will need to mount your server’s drive. I use the /mnt directory, feel free to mount it wherever you feel.
mount /dev/sda1 /mnt
Inside of the drive you’ll want to make backups of your tar, dev, proc and sys.
mkdir stuff mv /root/suse.tar stuff mv dev stuff mv proc stuff mv sys styff mv stuff /
Now delete everything from the drive.
rm -rf /mnt/*
Now lets take the tar and extract everything into the drive.
mv /stuff/suse.tar /mnt/ tar -xvf suse.tar
After this, move your old directories back –
mv /stuff/* /mnt/
And finally, we need to edit some things.
In /etc/resolv.conf
For DFW servers:
nameserver 72.3.128.240 nameserver 72.3.128.241
for ORD servers:
nameserver 173.203.4.8 nameserver 173.203.4.9
In /etc/fstab
proc /proc proc defaults 0 0 /dev/sda1 / ext3 defaults,errors=remount-ro,noatime 0 1 /dev/sda2 none swap sw 0 0
You will also need to edit your interface scripts, for Suse these are found in /etc/sysconfig/network
ifcfg-eth0
BOOTPROTO='static' IPADDR='YOURSERVERPUBLICIP' NETMASK='255.255.255.0' STARTMODE='auto' USERCONTROL='no'
ifcfg-eth1
BOOTPROTO='static' IPADDR='YOURSERVERINTERNALIP' NETMASK='255.255.224.0' STARTMODE='auto' USERCONTROL='no'
After that, you will need to set up your IP routes,
My routes looked like this:
#Destination Gateway Mask Device 173.203.218.0 0.0.0.0 255.255.255.0 eth0 10.177.160 0.0.0.0 255.255.224.0 eth1 10.191.192.0 10.177.160.1 255.255.192.0 eth1 10.176.0.0 10.177.160.1 255.248.0.0 eth1 default 173.203.218.1 0.0.0.0 eth0
The second two destinations seem to always be the same for eth1, the gateway for them is the first eth1 entry ending in a .1 octet. If your internal network doesn’t work after a reboot, check what the distro set your route too – the internal Ip of this server was 10.177.164.x, but it didn’t work unless I used that route.
Now that you’re route is set, make sure SSH is set to start on startup, and exit rescue mode.
If all went well, you’ll be able to SSH to your new OS and be good to go – though you may need to tweak settings here and there. If your OS needs a custom kernel, make sure your kernel and grub are configured, and go through my PV-Grub article.
« Compiling kernel modules for a Rackspace Cloud Server Two Factor Authentication Made Easy: Google-Authenticator »
You could save yourself some transfer time by compressing the archive before uploading. If it absolutely must land on the server as an uncompressed tar, then just cat the compressed archive through ssh. something like:
cat my.tar.bz2 | ssh me@there.com “cat | bunzip2 -c > my.tar”