Difference between revisions of "CentOS 5 - Build a Custom Xen Kernel with NFS Root Filesystem (CONFIG ROOT NFS) Support"

From Virtuatopia
Jump to: navigation, search
(Obtaining the Kernel Sources)
Line 7: Line 7:
 
The first step in building a custom kernel involves the download and installation of the latest kernel sources. These can be obtained from the CentOS repository which is online at [http://mirror.centos.org/centos/5/updates/SRPMS http://mirror.centos.org/centos/5/updates/SRPMS].
 
The first step in building a custom kernel involves the download and installation of the latest kernel sources. These can be obtained from the CentOS repository which is online at [http://mirror.centos.org/centos/5/updates/SRPMS http://mirror.centos.org/centos/5/updates/SRPMS].
  
kernel-<version>.el5.src.rpm
+
<tt>kernel-<version>.el5.src.rpm</tt>
  
 
where <version> represents the version of kernel currently running on your system. This information can be obtained by running:
 
where <version> represents the version of kernel currently running on your system. This information can be obtained by running:

Revision as of 16:29, 25 April 2008

In order to boot and run a Xen guest domain a key requirement (amongst other items) is a root filesystem populated with the files and directories necessary for the guest operating system to function. One of the most flexible Xen configurations involves the installation of the root filesystem on an NFS server such that it can be accessed and booted on a client system. This approach is of particular use when the need to migrate Xen domainU guests from one host to another arises. Since both the original host and the target host to which the guest is migrating need access to the domainU's root filesystem, NFS provides an ideal mechanism for achieving this by allowing the root filesystem located on the NFS server to be mounted on both client hosts.

In order to boot a Xen guest domain with an NFS mounted root filesystem a version of the Linux kernel with root NFS support is required. Unfortunately this functionality is not enabled by default in most standard kernels. It is necessary, therefore, to build a custom kernel with this capability enabled. In this tutorial we will work through an example of building a custom CentOS 5.1 kernel with NFS root filesystem support.

Obtaining the Kernel Sources

The first step in building a custom kernel involves the download and installation of the latest kernel sources. These can be obtained from the CentOS repository which is online at http://mirror.centos.org/centos/5/updates/SRPMS.

kernel-<version>.el5.src.rpm

where <version> represents the version of kernel currently running on your system. This information can be obtained by running:

 uname -mr

For example, at time of writing the latest kernel sources are contained in the package named kernel-2.6.18-53.1.14.el5.src.rpm.

Download the appropriate kernel sources for your environment to your home directory.


Preparing for the Custom Kernel Build

While logged in as yourself (do not perform these tasks as root) it is necessary to perform th3e following steps in preparation for installing the sources:

cd
mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir %(echo $HOME)/rpmbuild" > .rpmmacros

Next, you will need to install (as root) the rpm-build package if it is not already installed on your system:

su - 
yum install rpm-build

Be sure to exit from su to revert to your original user account.

Next, we can install the kernel sources from the rpm file downloaded previously:

rpm -Uvh kernel-<version>.el5.src.rpm

Once the packages are installed the sources need to unpacked using the rpmbuild command:

cd ~/rpmbuild/SPECS
pmbuild -bp --target=`uname -m` kernel-2.6.spec