I’m trying to compartmentalize my Linode server with Docker, and so I’ll need a 3.8+ 64-bit kernel with AUFS support1. Ok.
My old Linode was 32-bit, but using the Dashboard and the doubled storage Linode just upgraded me to I was able to add a Ubuntu 12.04 64-bit Configuration Profile and Disk Image, reboot to that and mount the old disk image to copy files over. So far so good.
The current Linode kernel is a custom 3.9.3. Nice. But without AUFS support, ouch. Ok then, I’ll need to recompile this thing.
Also, lxc-checkconfig
tells me that I miss support for a lot of things, so…
NOTE: There are easy tutorials2 telling you to use the vendor provided kernels, but I feel like there is a reason if Linode ships his own custom kernel, so I really want to just customize theirs.
Getting the source and putting the config in place
The Linode feature that allows us to load our own module is PV-GRUB and here is the Linode Library article about that, keep it open for reference.
First, have a look at what kernel branch your box is currently running and download the tarball of its source from kernel.org:
1 2 3 4 5 6 7 |
|
Now we will extract the config from the running Linode kernel and update it in case there’s need.
1 2 |
|
Mixing AUFS in3
I’ll go fast over this, as it’s almost off-topic. You can skip to the next heading if you are not interested.
1 2 3 4 5 6 7 8 9 10 11 |
|
Compiling
Great, finally we do our customizations to the config with make menuconfig
(you’ll need libncurses5-dev
) and compile. (I enabled AUFS in Misc filesystems and the things listed in the lxc-checkconfig
source code)
Ah, you might want to change the name of the kernel to something like 3.9.11-custom
. You can do that by editing the following Makefile
line like this:
EXTRAVERSION = -custom
1 2 3 |
|
Installing
1 2 3 |
|
And that’s it! Now go to the Linode Manager, edit your Configuration Profile to use pv-grub-x86_64 as the “Kernel” and reboot.
You should be able to verify what you are running with uname -a
, and if you need to see/interact with the boot process, the Lish console is like being in front of a screen. Have fun! (And why did we start in the first place…? Ah, Docker!)
1 2 |
|
NOTE: make sure that the first kernel listed in /boot/grub/menu.lst
is your new one, as PV-GRUB boots the first kernel of the list and make install
backups existing kernels to *.old
copies, and these get positioned first by update-grub
. I had a Linode blow up all over my face because of this.