Current Version at time of writing: Fedora 12
New Info:
http://fedoraproject.org/wiki/Building_a_custom_kernel (info for fedora > 8)
Old Info:
http://www.mjmwired.net/resources/mjm-fedora-fc5.html#kernelsrc
the above links shows how to download the fedora kernel source
http://www.howtoforge.com/kernel_compilation_fedora
the above link explains how to build a fedora rpm kernel
http://fedoraproject.org/wiki/Docs/CustomKernel
I've been able to compile a custom kernel with a frequency of 100Hz to solve this problem. 1)
Obtaining Kernel Source through 'yum'
There are yum utilities which will download the LATEST kernel source.
You only have to install yum-utils once:
[root@maltsweb kernel-source]# yum install yum-utils
Download the new kernel source:
[root@maltsweb kernel-source]# yumdownloader --source kernel --enablerepo core-source --enablerepo updates-source
Install the SRC.RPM file and Prepare source
Install the kernel.src.rpm that you chose to install in the previous steps.
Install:
[root@maltsweb kernel-source]# rpm -Uvh kernel-2.6.15-1.1955_FC5.src.rpm 1:kernel ########################################### [100%]
Install any dependencies that our kernel build might have:
# yum-builddep kernel
Set it up:
First we need to “brand” our custom kernel:
[root@maltsweb kernel-source]# vi /usr/src/redhat/SPECS/kernel-2.6.spec
And change:
- #% define dist .XX + %define dist .www
%
And finally run:
[root@maltsweb kernel-source]# rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec
This is when you prepare patches, new configs, etc.
cd SOURCES/* make menuconfig
Build the RPM:
# cd SPECS/ # rpmbuild -bb --target=$(uname -m) --with firmware --without debug --without debuginfo --without devel kernel.spec
Install the RPM:
cd RPMS/i386 rpm -ivh kernel-2.6.20www1.2316-2.i386.rpm
mkinitrd /boot/initrd-2.6.20-www1.2316-2.img 2.6.20-www1.2316
vi /boot/grub/menu.lst
#title Fedora Core (2.6.20-1.2316.fc5smp) # root (hd0,0) # kernel /vmlinuz-2.6.20-1.2316.fc5smp ro root=/dev/VolGroup00/LogVol00 rhgb quiet # initrd /initrd-2.6.20-1.2316.fc5smp.img title Fedora Core (2.6.20-www1.2316) root (hd0,0) kernel /vmlinuz-2.6.20-www1.2316 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.20-www1.2316-2.img
Reboot using the new kernel (and leave the old one installed just incase).
Run the following to verify that the new kernel is loaded:
[john@maltsweb ~]$ uname -r 2.6.20-www1.2316
Now, view the currently installed kernels:
[root@maltsweb john]# rpm -q kernel kernel-2.6.20www1-1 kernel-2.6.20www1.2316-2
select the kernel you wish to remove (kernel-2.6.20www1-1 in this case, since the other kernel looks similar to the currently running kernel) and remove it:
[root@maltsweb john]# rpm -e --nodeps kernel-2.6.20www1-1 [root@maltsweb john]#
You should probably remove the source of your previous kernel build prior to building the new kernel.
[root@maltsweb ~]# cd /usr/src/redhat/BUILD/ [root@maltsweb BUILD]# ls kernel-2.6.20 kernel-2.6.20www1.2316 [root@maltsweb BUILD]# ls -l total 16 drwxr-xr-x 5 root root 4096 May 15 18:33 kernel-2.6.20 drwxr-xr-x 21 root root 4096 May 15 18:25 kernel-2.6.20www1.2316 [root@maltsweb BUILD]# uname -r 2.6.20-www1.2316 [root@maltsweb BUILD]#
The above shows that I currently have the kernel-2.6.20 source code, and a custom build for kernel-2.6.20www1.2316, which matches the currently running kernel. So when I upgrade my kernel, before I start I can remove the custom kernel directory:
[root@maltsweb BUILD]# rm -Rf kernel-2.6.20www1.2316/ [root@maltsweb BUILD]#
This should clear up enough space to build a new kernel.