How to Rebuild linux kernel
A complete reference for rebuilding the Linux kernel for Red Hat Enterprise Linux-3
Kernel:
The part of the OS, which handles all the details of sharing resources and device handling, is the kernel (core OS). The kernel is not something which can be used directly. The kernel services can be accessed through system calls. A user interface or command line interface (CLI), allows users to log onto the machine and manipulate files, compile programs and execute them using simple commands. Since this is a layer of software which wraps the kernel, it is called a shell around the kernel.
Kernel versions:
There are four Level or parts of Linux kernel version.
Eg: kernel 2.4.21.-4.EL
First part: Major version of kernel that is-(2).
Second part: Minor version of kernel that is-(4).
Third part: Patch or Developmental version that is –(21) and
Fourth part: Extra version that is – (-4.EL).
Major version of kernel:
Major version will be changed after many several years and it provide significant improvements in the Kernel capabilities and performance.
Minor versions:
Minor version is release more frequently than the major version. Software does not generally need to be reconfigured or modified to work with a new minor version of a kernel.
When small software’s will added in the kernel then minor version will be changed.
When minor number is odd then that kernel will be unstable, and when minor number is even then the kernel version will be stable.
Eg: 2.3, 2.5- is unstable version (Beta version).
2.4, 2.6-is stable version.
http://kernelrebuildingandcompilation1.blogspot.com/
It will be changed when smallest software will be added on your system.
This is just like the service pack of windows.
Extra version:
It will display the extra facility of the Linux that means it display which type of kernel model is running on your computer.
Eg: 2.4.21-4.EL Simple kernel with simple processor.
2.4.21-4.ELsmp Advance kernel with core to dual processor.
2.4.21-4.ELbigmem when the size of RAM is up to 4GB.
2.4.21-4.ELhugemem when RAM is between 8GB-4GB.
http://kernelrebuildingandcompilation1.blogspot.com/
1. Monolithic Kernel:
Slow booting
Fast execution
Kernel program will be written in single file.
2. Modular kernel:
Fast booting.
Slow execution.
Kernel program will be written in many functions and all are called by the main function.
For more details visit
http://www.redhatlinuxsysadmin.com/configure-key-linux-components/module2/modular-monolithic-kernels.php
Kernel related files:
Linux kernel requires several supported files.
a. Boot files: Needed for boot the system.
b. RPM package files: Needed to install or build a kernel.
Kernel boot files:
The Linux boot files resides in the /boot file system, so that they can be accessed by system BIOS code that is incompatible of accessing every sector on the large hard disk.
There files are
1. Vmlinu*
It is a Linux kernel bootable file.
It is a arbitrary name of vmlinux and vmlinuz.
2. Boot.b : Boot.b is a second stage boot loader.
3. Initrd: Initrd is RAM disc file that contains drivers or modules, available to be kernel at boot times.
It is open use or needed to boot from a SCSI hard drive or SATA hard drive.
It is not generally needed for normal system operation.
4. Boot.nnnn : It is a backup copy of original master record.
5. System.map: A file needed by the utility that read the /proc file system and used to debug the kernel.
Kernel panic:
Kernel panic message are rare and are usually due to a miss configuration problem, missing modules, fail to load a module, using the hardware which are not supported by the current kernel version.
Kernel panic
Kernel panic
In Linux, a "panic" is an unrecoverable system error detected by the kernel as opposed to similar errors detected by user space code. It is possible for kernel code to indicate such a condition by calling the panic function located in the header file sys/system.h. However, most panics are the result of unhandled processor exceptions in kernel code, such as references to invalid memory addresses. These are typically indicative of a bug somewhere in the call chain leading to the panic. They can also indicate a failure of hardware, such as a failed RAM cell or errors in arithmetic functions in the processor caused by a processor bug, overheating/damaged processor, or a soft error.
Required packages for rebuilding the new kernel:
# rpm -qa|grep binutils.
# rpm -qa|grep ncurses.
# rpm –qa|grep gcc.
# rpm -qa|grep compat.
# rpm -qa|grep kernel.
# rpm -qa|grep dev86.
# rpm -qa|grep make.
Additional packages:
# rpm –qa|grep cpp.
#rpm -qa|grep kcc.
Step by step command used for Rebuilding the kernel:
Notes: By using these commands we can only rebuild the kernel for “Red Hat Enterprise Linux-3”.
Run the following commands in sequence as a root user.
# cd /usr/src
# ls
# cd linux-2.4
# ls
# vi makefile
…
…
Version = 2
Patchlevel = 4
Sublevel = 25
Extraversion = -5.ELAKKI (any name as AKKI).
:wq!
To copy old kernel configuration file
# cp –p configs/kernel-2.4.21-i686.config arch/i386/defconfig
# y (then press enter)
# make mrproper
For removing unused kernel files and directories and create new file and directory for new kernel.
# make oldconfig
To save old kernel configuration file in running mode. If it display yes/no option then reboot the system and then re-run the above commands.
Please keep patience after running this command since it might be take 4-5 hours to complete the process,
# make menuconfig
Text based color menus, radiolists & dialogs. This option also useful on remote server if you wanna compile kernel remotely.
# make dep bzImage 2>errors
# ls
Vmlinux , system.map if we get these two files here that means we are going in right direction and if not that mean there is some problem with it. And we have to rebuild it again until and unless these two files are not present here.
To see bzImage
# ls -l arch/i386/boot/bzImage
To create kernel moduel.
# make modules
# make modules_install
# cp -p arch/i386/boot/bzImage /boot/vmlinuz-2.4.25-5.ELAKKI
# cp -p System.map /boot/System.map-2.4.25-5.ELAKKI
# mkinitrd -v -f /boot/initrd-2.4.25-5.ELAKKI.img 2.4.25-5.ELAKKI
Configuration of Grub:
# vi /boot/grub/grub.conf
( Add for the new kernel)
Title Linux 3
Root (hd0,6)
Kernel /vmlinuz-2.4.25-5.ELAKKI or root = LABEL = /
Initrd /initrd-2.4.25-5.ELAKKI.img
:wq
Now reboot the computer after that your new kernel is ready for work and you can perform any task on this kernel that we can perform on the operating system (Red Hat Enterprise Linux -3)
Notes: The commands are case sensitive so make sure that you have entered the same command as mention above.
Feedback: I’ll appreciate receiving your comments, criticism and feedback at my E-mail id cseakkamal@gmail.com.
References:
www.sourceforge.net
www.kernel.org
www.redhat.com
www.linux.org
www.linuxhq.com
Thanks.
Akhilesh Kumar Kamal.
Sunday, May 23, 2010.
Good going on.......
ReplyDelete