Running Non-default Kernels On SolusVM Templates

With the release of SolusVM 1.2.10 it is now possible to run non-default kernels in a vps in two ways. The first way was actually introduced in 1.2.08 and is described in the solus wiki. It involves setting per-template options in the advanced.conf on the master. The downside of this option is that each slave running a non-standard kernel needs to have a copy of the kernel, initrd and modules in the correct places. The second option, introduced in 1.2.10, is to instruct solusvm to use pygrub for a given template or specific installation of a template. With pygrub the kernel, initrd and modules are stored in the template and are used to boot the system. Hence there is no need to distribute the kernels to the slave. In fact this option is controlled mostly from within the control panel itself.

NOTE: To be clear, if you want to use the advanced options method you must be comfortable extracting kernels, initrds and modules from a template and distributing them to the slave(s). This is not automated for you!


The advantages of not using the default kernel are as follows:

  • Some templates will not work with the default kernel
  • Newer kernels may perform better and be better matched to a template even when the default works
  • Run 32-bit kernels on 64-bit slaves (particularly important for rpm-based distros)
  • Allow the kernel and modules to be managed from within a vps (pygrub only)

The purpose of this document is to discuss deployment options for Stacklet SolusVM templates using the new techniques. We will not be providing complete details of the techniques themselves -- see the Solus wiki for more details. The tables below summarize each of the three methods of specifying kernels for various popular templates. Note that the XENPVOS_* option needs to reference a specific template and is stored on the master in advanced.conf; note that the kernel, initrd and modules mentioned in XENPVOS_* are stored in the template but they must be extracted to the slave for this to work!


Arch 2012-07 Templates
Note that SolusVM does not officially support ArchLinux hence you will need to configure the network.

Method Details
Default Kernel Will not boot
XENPVOS Options vmlinuz-linux|initramfs-linux.img|3.4.4-2-ARCH|xvda
The kernel, initrd and modules can be extracted from the template itself
Pygrub Works


CentOS 5.10 based Templates

Method Details
Default Kernel Works; Note: Using the default 64-bit kernel to run 32-bit CentOS templates is not a good idea due to how yum determines the system architecture. In simpler terms, yum will be confused and refuse to install packages in this scenario.
XENPVOS Options "vmlinuz-2.6.18-371.el5xen|initrd-2.6.18-371.el5xen.img|2.6.18-371.el5xen|sda"
Pygrub Works. Note that the /etc/fstab inside the template(s) uses sda nodes. If your global default is xvda then you will need to enforce sda by using the XENPVOS Options immediately above.


CentOS 6 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options Use the latest CentOS 6 kernel (version vmlinuz-2.6.32-504.el6 as of this writing) with xvda block devices. Always make sure to use the 32-bit kernel with 32-bit templates and the 64-bit kernel with 64-bit templates.
vmlinuz-2.6.32-504.el6.x86_64|initramfs-2.6.32-504.el6.x86_64.img|2.6.32-504.el6.x86_64|xvda
vmlinuz-2.6.32-504.el6.i686|initramfs-2.6.32-504.el6.i686.img|2.6.32-504.el6.i686|xvda

Pygrub Works. IMPORTANT: xvda* device names are mandatory in the vmXXX.cfg for CentOS 6 deployments. If you normally use sda* then you must override the default by defining the XENPVOS options as described immediately above.


CentOS 7 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options Use the latest CentOS 7 kernel (version vmlinuz-3.10.0-229.1.2.el7.x86_64 as of this writing) with xvda block devices.
vmlinuz-3.10.0-229.1.2.el7.x86_64|initramfs-3.10.0-229.1.2.el7.x86_64.img|3.10.0-229.1.2.el7.x86_64|xvda
Pygrub Works.


Debian 6 (Squeeze) Templates

Method Details
Default Kernel Not recommended
XENPVOS Options Works: extract the debian kernel/initrd/modules from the template itself. These kernels use xvda* device nodes. Make sure to use the amd64 kernel with 64-bit domUs and the 686-bigmem kernel for 32-bit domUs
Pygrub Works


Debian 7 (Wheezy) Templates

Method Details
Default Kernel Not recommended
XENPVOS Options Works: extract the debian kernel/initrd/modules from the template itself. These kernels use xvda* device nodes. Make sure to use the amd64 kernel with 64-bit domUs and the 686-pae kernel for 32-bit domUs.
vmlinuz-3.2.0-4-amd64|initrd.img-3.2.0-4-amd64|3.2.0-4-amd64|xvda
vmlinuz-3.2.0-4-686-pae|initrd.img-3.2.0-4-686-pae|3.2.0-4-686-pae|xvda

Pygrub Works


Fedora 18 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options vmlinuz-3.7.2-201.fc18.x86_64|initramfs-3.7.2-201.fc18.x86_64.img|3.7.2-201.fc18.x86_64|xvda

vmlinuz-3.7.2-201.fc18.i686.PAE|initramfs-3.7.2-201.fc18.i686.PAE.img|3.7.2-201.fc18.i686.PAE|xvda
Pygrub Works


Fedora 19 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options vmlinuz-3.9.8-300.fc19.x86_64|initramfs-3.9.8-300.fc19.x86_64.img|3.9.8-300.fc19.x86_64|xvda

vmlinuz-3.9.8-300.fc19.i686.PAE|initramfs-3.9.8-300.fc19.i686.PAE.img|3.9.8-300.fc19.i686.PAE|xvda
Pygrub Works. Recommended


Fedora 20 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options vmlinuz-3.11.10-301.fc20.x86_64|initramfs-3.11.10-301.fc20.x86_64.img|3.11.10-301.fc20.x86_64|xvda

vmlinuz-3.11.10-301.fc20.i686+PAE|initramfs-3.11.10-301.fc20.i686+PAE.img|3.11.10-301.fc20.i686+PAE|xvda
Pygrub Works. Recommended


Gentoo 2014-08 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options "kernel-genkernel-x86_64-3.10.41-gentoo-r1|initramfs-genkernel-x86_64-3.10.41-gentoo-r1|3.10.41-gentoo-r1|xvda"
Pygrub Works, recommended


Scientific 6 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options Use the latest kernel (vmlinuz-2.6.32-131.12.1.el6.x86_64 as of this writing) with xvda block devices.
vmlinuz-2.6.32-131.12.1.el6.x86_64|initramfs-2.6.32-131.12.1.el6.x86_64.img|2.6.32-131.12.1.el6.x86_64|xvda
Pygrub Works. IMPORTANT: xvda* device names are mandatory in the vmXXX.cfg for Scientific 6 deployments. If you normally use sda* then you must override the default by defining the XENPVOS as described immediately above.


Slackware 13.1 Templates

Method Details
Default Kernel Will not work
XENPVOS Options "vmlinuz-2.6.31.6|-|2.6.31.6|xvda"
Pygrub Works, but you still need to define the advanced options in the previous line


Slackware 13.37 Templates

Method Details
Default Kernel Not recommended
XENPVOS Options 32-bit: "vmlinuz-2.6.37.6.stk.x86|-|2.6.37.6.stk.x86|xvda"
64-bit: "vmlinuz-2.6.37.6.stk.x86_64|-|2.6.37.6.stk.x86_64|xvda"
Pygrub Works


Slackware 14.0 Templates

Method Details
Default Kernel Not recommended
XENPVOS Options 32-bit: "vmlinuz-xen-smp-3.2.29-smp|initrd.gz|3.2.29-smp|xvda"
64-bit: "vmlinuz-xen-3.2.29|initrd.gz|3.2.29|xvda"
Pygrub Works


Slackware 14.1 Templates

Method Details
Default Kernel Not recommended
XENPVOS Options Both the 32 and 64-bit templates include the same x86_64 kernel
"vmlinuz-3.10.18.stk.x86-64||3.10.18.stk.x86-64|xvda"
Pygrub Works


Ubuntu 9.10 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options
32 and 64-bit
"vmlinuz-2.6.31-304-ec2|initrd.img-2.6.31-304-ec2|2.6.31-304-ec2|sda"
"vmlinuz-2.6.31-20-server|initrd.img-2.6.31-20-server|2.6.31-20-server|xvda"
Pygrub Works


Ubuntu 10.04 Templates

Method Details
Default Kernel Will not boot
XENPVOS Options It is possible to use linux-image-ec2 or linux-image-virtual. The current Ubuntu Lucid templates have linux-image-virtual installed and use xvda* device nodes.
Pygrub Works


Ubuntu 12.04 LTS Precise Templates

Method Details
Default Kernel Will not boot. We highly recommend using an Ubuntu 12.04 kernel using one of the options below.
XENPVOS Options "vmlinuz-3.2.0-52-virtual|initrd.img-3.2.0-52-virtual|3.2.0-52-virtual|xvda"
Pygrub Works. As always with pygrub the kernel inside the template is used, in this case Ubuntu's linux-image-virtual 3.2


Ubuntu 12.10 EOL Quantal Templates

Method Details
Default Kernel Will not boot. We highly recommend using an Ubuntu kernel using one of the options below.
XENPVOS Options "vmlinuz-3.5.0-17-generic|initrd.img-3.5.0-17-generic|3.5.0-17-generic|xvda"
Pygrub Works. As always with pygrub the kernel inside the template is used, in this case Ubuntu's linux-image-virtual 3.5


Ubuntu 13.04 EOL Raring Templates

Method Details
Default Kernel Not recommended. We highly recommend using an Ubuntu Raring kernel using one of the options below.
XENPVOS Options "vmlinuz-3.8.0-19-generic|initrd.img-3.8.0-19-generic|3.8.0-19-generic|xvda"
Pygrub Works. As always with pygrub the kernel inside the template is used, in this case Ubuntu's linux-image-virtual 3.8


Ubuntu 13.10 EOL Saucy Templates

Method Details
Default Kernel Not recommended. We highly recommend using an Ubuntu Saucy kernel using one of the options below.
XENPVOS Options "vmlinuz-3.11.0-12-generic|initrd.img-3.11.0-12-generic|3.11.0-12-generic|xvda"
Pygrub Works.


Ubuntu 14.04 Trusty Templates

Method Details
Default Kernel Not recommended. We highly recommend using an Ubuntu Trusty kernel using one of the options below.
XENPVOS Options "vmlinuz-3.13.0-24-generic|initrd.img-3.13.0-24-generic|3.13.0-24-generic|xvda"
Pygrub Works.


© 2010-2013 Stacklet LLC - Privacy