== Building your own kernel with the Fedora kernel configuration There are a number of situations where you might want to do something like build a stock [[kernel.org http://www.kernel.org/]] kernel with the same configuration options as a normal Fedora RPM-installed kernel. Alternately, you want to compile a Fedora kernel with a slightly different set of options. These days, how to do this is slightly less than obvious and there is a gotcha or two. First, you need kernel source. Fedora no longer ships an RPM with their kernel source all set up for you, so you have two options: * just download the version you want from kernel.org and unpack it somewhere convenient, or * fetch the kernel _.src.rpm_ and set up to build it, which requires an [[RPM build environment RPMBuild]]. Once you have a kernel source RPM in your RPM build environment, you can get the source tree all patched up and ready to go with _rpmbuild -bp kernel-2.6.spec_. Next, you need a kernel config file. The config file for a particular kernel RPM that you have installed is _/boot/config-~~~~_ (among other, less convenient places). However, if you are building by hand you don't want to use this configuration as it is, because if you try you will discover you wind up with a *huge* kernel image. The culprit is the ((CONFIG_DEBUG_INFO)) option, which causes the kernel to get compiled with _-g_; take it out following the directions in EasyKernelConfMods. (The kernels in the RPMs are not this big because the RPM build process then strips the debugging info out and puts it in the kernel debuginfo RPM.) If you are building a kernel.org kernel using a Fedora config file, there are two things to watch out for: * if you are upgrading kernel versions, _make oldconfig_ will probably ask you about a number of new options. * make sure that you are using a base kernel version at least as recent as the Fedora kernel RPM. Fedora's current build practices do *not* put the subminor kernel version number in the RPM version (eg, the 2.6.20.8-based and 2.6.20.10-based kernel RPMs will both have an RPM version of just 2.6.20 plus a build sequence number), so you need to either inspect the kernel source RPM or the kernel RPM's changelog for the kernel you are running. You do the latter with: _rpm -q --changelog kernel-`uname -r` | less_ After that you are pretty much home free, assuming you are not rebuilding a kernel RPM. Doing that does not in any way fit into the margins of this entry.