On the frontend, check out the Rocks source code. See Access to Rocks Source Code for details.
Change into the directory:
# cd rocks/src/roll/kernel/src/kernel.org |
Download the kernel source tarball from kernel.org. For example:
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.4.tar.gz |
Create a kernel "config" file and put it in config-<version>
You can create the config file by using the following procedure:
# tar xzf linux-2.6.24.4.tar.gz # cd linux-2.6.24.4 # make menuconfig |
Configure the kernel anyway you need, and after the configuration is over choose to save the configuration in an alternative location. Enter the name of the file as ../config-2.6.24.4. Finally, exit the configuration and remove the linux-2.6.24.4 directory.
The <version> number must match the version number of the kernel source. For example, if you downloaded linux-2.6.24.4.tar.gz, the name of the config file must be config-2.6.24.4. |
Update version.mk.
The file version.mk has the following contents:
NAME = kernel RELEASE = 1 VERSION = 2.6.24.4 PAE = 0 XEN = 0 |
The VERSION value must match that of the linux kernel tarball you downloaded (e.g., 2.6.24.4).
If you are building a kernel for an i386 system that has more than 4 GB, you'll need to set the PAE (page address extension) flag. This will name the resulting kernel kernel-PAE*rpm. If the anaconda installer detects more that 4 GB memory, then it will install the kernel-PAE RPM and not the kernel RPM.
PAE = 1 |
If you are building a kernel that contains Xen support, then set the XEN flag. This will name the resulting kernel kernel-xen*rpm.
XEN = 1 |
It is illegal to set both the PAE and XEN flags.
If you want to build a kernel that the installer will use, then you must unset both the PAE and XEN flags (the default configuration of version.mk). This will name the resulting kernel kernel*rpm.
If you want to build a custom kernel for both the installer and for the running system and the running system requires either the kernel-PAE or kernel-xen RPM, then you'll have to execute this procedure twice: once to build the installer kernel (PAE = 0 and XEN = 0) and once to build the kernel that will be used on the running system (PAE = 1 or XEN = 1). |
Build the kernel:
# make rpm |
Copy the resulting RPMs into the current distribution:
# cp ../../RPMS/<arch>/kernel*rpm /export/rocks/install/contrib/5.1/<arch>/RPMS/ |
Where <arch> is i386 or x86_64.
Rebuild the distribution:
# cd /export/rocks/install # rocks create distro |
Test the new kernel by reinstalling a compute node:
# shoot-node compute-0-0 |
If the kernel works to your satisfaction, reinstall all the compute nodes that you want to run the new kernel.