Configuring the Kernel
             By
    Buddhika Siddhisena
     Co­Founder & CTO
 THINKCube Systems Pvt. Ltd
   <bud a...
 Coverage



   •   What is the kernel

   •   Why customize?

   •   Obtaining the kernel source

   •   Quick compile HO...
What is the Kernel




  •   What is the Kernel?
      •   Linux is the Kernel
      •   Developed by Linus Torvalds in199...
What is the Kernel




                        read()
         Program                      GNU C Library



 User space  ...
Why customize?


 •   Most of the time you actually 
     dont!

 •   Optimize to the hardware
 •   Optimize for the situa...
 Obtaining the Linux Kernel source

  •   Patched Kernel source can be obtained for your distro

      • e.g.: linux­sourc...
 Quick kernel compile


   •   You need to install the kernel development packages

        • e.g.: gcc, make, binutils, n...
 Configuring the Kernel 101
 # make config

                 OR
 # make menuconfig




                                   ...
 Configuring the Kernel 101

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

                              Just u...
 Configuring the Kernel 101

   Module or Built-in (Static)?
                           Building drivers into the kernel m...
 Configuring the Kernel 101

  Know your Hardware
  •   To see whats plugged into your motherboard, or USB ports.
      li...
 Configuring the Kernel 101

  Kernel config overview
  •   Code Maturity Level Options

      You will find options to co...
 Configuring the Kernel 101

  Kernel config overview
  •   Processor Type and Features

      Included in this submenu ar...
 Configuring the Kernel 101

  Kernel config overview
  •   Networking

      Options to configure network protocols, fire...
 Configuring the Kernel 101

 Optimize for processor architecture
 •    You can optimize the kernel for your exact process...
 Configuring the Kernel 101

 Enable High memory
 •    By default the kernel can access only about 890MB. If you have 1GB ...
 Configuring the Kernel 101

 Magic Sys rq
 •   On a desktop system Turn on Magic SysRq key in kernel hacking
     <*> Ker...
Manually loading Linux device drivers


  •    To list modules that are currently loaded you can issue
       #lsmod

  • ...
 Happy compiling...




                          Thank You
                              &
                      Happy co...
Upcoming SlideShare
Loading in...5
×

Kernel Configuration

2,811

Published on

How to Configure Linux Kernel

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,811
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
117
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Kernel Configuration"

  1. 1. 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>
  2. 2.  Coverage • What is the kernel • Why customize? • Obtaining the kernel source • Quick compile HOWTO • Configuring the kernel • Loading/Unloading modules 2
  3. 3. What is the Kernel • 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 3
  4. 4. What is the Kernel read() Program GNU C Library User space syscall(SYS_read) Kernel space Virtual File System (vfs) Linux Filesystem drivers Kernel Block device drivers 4
  5. 5. 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. 5
  6. 6.  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 6
  7. 7.  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
  8. 8.  Configuring the Kernel 101 # make config OR # make menuconfig # make xconfig OR OR If you are INSANE! # vi .config 8
  9. 9.  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 9
  10. 10.  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
  11. 11.  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
  12. 12.  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
  13. 13.  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
  14. 14.  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
  15. 15.  Configuring the Kernel 101 Optimize for processor architecture • 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 Preemption • 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
  16. 16.  Configuring the Kernel 101 Enable High 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) FS drivers • 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
  17. 17.  Configuring the Kernel 101 Magic Sys rq • On a desktop system Turn on Magic SysRq key in kernel hacking <*> Kernel debugging <*> Magic SysRq key • In the unlikely event of a system ?crash? (not responding), press Alt + PrtSc and other keys to reduce the damage: Alt + PrtSc + S  :  flush buffers Alt + PrtSc + U  :  remount disks read only Alt + PrtSc + O  :  power off Alt + PrtSc + B  :  reboot 17
  18. 18. 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
  19. 19.  Happy compiling... Thank You & Happy compiling ... 19
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×