- Install normally locally onto hardware or in a VM.
- Boot with a Live CD such as gparted, finnix, knopix, etc and shrink the root partition to the minimum size.
-
Create empty swap and root images on the Linode site.


-
Create a Finnix configuration profile.
-
Boot the Finnix profile, connect to the console via LISH, set a root
password and start up sshd.
-
Boot Finnix on source system, and dd to Finnix on your Linode via SSH.
The destination on your Linode is /dev/xvdb (/dev/ubdb for UML Linodes).
-
Wait a (possibly) long while.
-
Once complete mount the root image from LISH.
-
Edit the fstab, root and swap should be /dev/xvda and /dev/xvdb
(/dev/ubda and /dev/ubdb for UML).
-
-
If not using upstartd:
edit /etc/inittab comment out all gettys but one. Leave one getty on /dev/tty1 (/dev/tty0 for UML).
-
If using upstartd:
In /etc/event.d remove all tty files except tty1. (If you are on UML rename tty1 to tty0 and change every occurrence of tty1 to tty0 inside the file.)

-
If not using upstartd:
-
Check that /mnt/xvdb/dev (/mnt/udbb/dev for UML) looks complete, if
not chroot to the mountpoint and MAKEDEV it. Syntax for MAKEDEV may
vary slightly by distro.
-
If necessary, manually create xvd[a-h] device node entries.
mknod xvda b 202 0 mknod xvdb b 202 16 mknod xvdc b 202 32 mknod xvdd b 202 48 mknod xvde b 202 64 mknod xvdf b 202 80 mknod xvdg b 202 96 mknod xvdh b 202 112
-
If your distro is using udev (unfortunately most these days are),
cd to /mnt/xvdb/etc/udev/rules.d and open the file that creates
the persistent network rules, usually 75-persistent-net-generator.rules.
Modify this file so that it does not create persistent rules for eth*.
In this case we simply removed eth* from the beginning of the kernel
white-list.
-
Remove any rules that were auto generated already. In this case
/mnt/xvdb/etc/udev/rules.d/70-persistent-net.rules.
-
Create a profile for booting your custom distro.
-
Boot and enjoy \o/.

