Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

Configuring the Kernel

By
Buddhika Siddhisena Co-Founder & CTO THINKCube Systems Pvt. Ltd
<bud at thinkcube.com> Member of LKLUG & FOSS.LK <bud at babytux.org>

Coverage

What is the kernel Why customize? Obtaining the kernel source Quick compile HOWTO Configuring the kernel Loading/ nloading modules

What is the !ernel

What is the Kernel?

Linux is the Kernel Developed by Linus Torvalds in1991 Modular kernel as opposed to a micro-kernel Ported to more than 20 architectures Over 6M lines of code

What is the !ernel

Program

read()

GNU C Library

User space Kernel space

syscall(SYS_read)

Virtual File System (vfs) Linux Kernel Filesystem drivers Block device drivers

Why customize?

Most of the time you actually dont! Optimize to the hardware Optimize for the situation (desktop/server,low memory,SMP,64bit, diskless) Add an unofficial driver or feature Upgrade the kernel to the latest without waiting for your distribution.

Obtaining the Linux Kernel source

Patched Kernel source can be obtained for your distro

e.g.: linux-source-2.6.16 on debian

Vanilla kernels via kernel.org Specially patched kernels such Andrew Morton's -mm patched kernel and Alan Cox's -ac

Quick kernel compile

You need to install the kernel development packages

e.g.: gcc, make, binutils, ncurses, qt

Extract the kernel source in /usr/src


linux:# tar jxvf /tmp/linux-2.6.16.8.tar.gz

Optionally create a symlink


linux:# ln -s /usr/src/linux-2.6.16.8 /usr/src/linux

Quick configuration using an old configuration


linux:# cp /boot/config-2.6.14 .config linux:# make oldconfig

Compiling the kernel


linux:# make && make install && make modules_install 7

Configuring the Kernel 101


# make config # make menuconfig

OR

OR

# make xconfig

OR If you are INSANE!


# vi .config

Configuring the Kernel 101

But WHAT if you make a MESS and want to CLEAN UP?

Just use Mr. Proper


# make mrproper

This will clear all pre-compiled binaries as well as remove the .config file
# make clean

Just clean all pre-compiled binaries

Configuring the Kernel 101

Module or Built-in (Static)?


Building drivers into the kernel makes the kernel FAT require more memory and overall slower execution. YET certain drivers are better of being built-in (e.g: motherboard drivers) Building drivers as modules results in a thinner kernel that can load external modules as an when needed. BUT make sure your kernel has access to essential drivers required to boot, through an initrd or making them built-in.

10

Configuring the Kernel 101

Know your Hardware

To see whats plugged into your motherboard, or USB ports.


linux:# lspci -v linux:# lsusb

To check your processor and memory


linux:# cat /proc/cpuinfo linux:# cat /proc/meminfo

To see your hard drive partitions.


linux:# fdisk -l

To see your kernel log


linux:# dmesg

11

Configuring the Kernel 101

Kernel config overview

Code Maturity Level Options You will find options to compile alpha quality or experimental drivers. Generally fine for a desktop system, but use with care for a production quality server. General Setup Options to enable process accounting, optimize the kernel for size or have .config support that allows you to see how the kernel was configured (zcat /proc/config.gz).

Loadable Module Support Its generally a good idea to enable this. If you will need third-party kernel modules you will also need to enable Set Version Information on All Module Symbols.
12

Configuring the Kernel 101

Kernel config overview

Processor Type and Features Included in this submenu are features such as Processor type, Preemptible Kernel which can improve desktop responsiveness, Symmetric Multi-processing Support for machines with multiple CPUs, and High Memory Support for machines with more than 1G of RAM.

Power Management Options Found here are options for ACPI and CPU Frequency Scaling which can dramatically improve laptop power usage Bus Options ( PCI, PCMCIA, EISA, MCA, ISA) Here are found options for all system bus devices. On modern machines the ISA and MCA support can often be disabled.
13

Configuring the Kernel 101

Kernel config overview

Networking Options to configure network protocols, firewalls, IR, Bluetooth etc. Device Drivers Features such as SCSI support, graphic card optimizations, sound, USB, network cards and other hardware are configured here. File Systems Found here are options for filesystems which are supported by the kernel, such as EXT3, ReiserFS, NTFS or VFAT. It is best to build support for the root filesystems directly into the kernel rather than as a module.

Security Options Interesting options here include support for NSA Security Enhanced Linux and other, somewhat experimental, features to increase security.
14

Configuring the Kernel 101

"!timi#e for !roce$$or arc%itecture

You can optimize the kernel for your exact processor as shown by /proc/cpuinfo
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) --->

You could also turn off Generic x86 support < > Generic x86 support

Kernel reem!tion

Normally, preemption can happen only at the user space For a system to be responsive, kernel space preemption needs to be turned on. <*> Preemptible kernel Do not turn on kernel preemption in server systems
15

Configuring the Kernel 101

'na(le Hig% memory

By default the kernel can access only about 890MB. If you have 1GB or more memory you need to enable high memory.
<*> High Memory Support (4GB)

&S driver$

You can add file system drivers via the File systems menu. DOS/FAT/NT Filesystems ---> <M> VFAT (Windows-95) fs support <M> NTFS file system support Generally you should make the root file system built-in If you want to mount network file systems such as NFS or CIFS you can enable it here. Network File Systems ---> <M> SMB file system support (to mount Windows shares etc.)

16

Configuring the Kernel 101

Magic Sy$ r)

On a desktop system Turn on Magic SysRq key in kernel hacking


<*> Kernel debugging <*> Magic SysRq key

*n t%e unlikely event of a $y$tem ?cra$%? (not re$!onding)+ !re$$ Alt , rtSc and ot%er key$ to reduce t%e damageAlt Alt Alt Alt + + + + PrtSc PrtSc PrtSc PrtSc + + + + S U O B : : : : flush buffers remount disks read only power off reboot

17

Manually loading Linux device drivers

To list modules that are currently loaded you can issue


#lsmod

To list available modules (compiled) for the current kernel


#modprobe -l

To get a small description about a module ...


#modinfo radeon

To load a kernel module driver manually


#modprobe radeon

To load a kernel drive automatically as the machine boots consider adding it to /etc/modules.conf (2.4) or /etc/modprobe.conf (2.6)

18

Happy compiling...

Thank You . Ha!!y com!iling ///

19

You might also like