Building the 2.6.10 Kernel


Jump to: navigation, search

Some of you blaggers may not like the idea of having a standard,run of the mill kernel (I certainly don't). So I decided to roll out my own kernel from the source bz2. First,get yourself the full source code from

Next extract the archive by using tar:

tar -xvjf kernel-2.6.10.tar.bz2

Now in the dir you extracted:

make menuconfig 

NOTE: you will need the ncurses-devel package from the repository. Here is the legend to the modules:

< > = not installed
<M> = the driver will be installed as a module
<*> = the driver will be installed as part of the kernel

To toggle selection, use the spacebar or type 'n' for no, 'y' for <*>, or 'm' for <M>.

NOTE: some options have [] instead of <>. In this guide I reference <*> as a star next to that option, so make sure that option has a star next to it.

First thing you should do is go into the Bus Options menu.

Make sure PCI support, Legacy /proc/pci interface, PCI device name database, and ISA support all have a <*> next to them, otherwise your PCI and ISA cards will not be detected. If you don't have ISA slots on your board, you can ignore the ISA stuff.

Second, go into Device Drivers then Networking Support, then Ethernet (10 or 100MBIT).

Now find your particular ethernet card and make sure it has a <*> next to it (NOTE: if the driver has a <M> next to it doesn't always ensure it will load at startup. You may have to configure that manually in /etc, so make sure critical hardware modules are built into the kernel (<*>).

Now that you have chosen the ethernet card driver, go back into Device Drivers and then go to Graphics Support. Choose the driver you want and make sure it has a <*> next to it.

Next, get back into Device Drivers and go into Sound. Make sure Sound Support has a <*> next to it.

Go into Advanced Linux Sound Architecture. Make sure: Advanced Linux Sound Architecture, Sequencer support, Sequencer dummy client, OSS Mixer API, OSS PCM (digital audio) API, and OSS Sequencer API all have a <*>.

Now scroll down to PCI Devices and go into the submenu.

Choose the sound driver for your device and make sure it has a <*> next to it.

Next, go into Device drivers, then USB support.

Make sure Support for Host-side USB, USB device filesystem EHCI HCD (USB 2.0) support, OHCI HCD support, UHCI HCD (most Intel and VIA) support,and SL811HS HCD support all have a <*> next to them.

NOTE: you can add other modules if you want, but this should be sufficient for basic USB support.

Go back into the main menu and then go into file systems:

Second extended fs support                                   
Ext2 extended attributes                                   
Ext2 POSIX Access Control Lists                          
Ext2 Security Labels                                    
Ext3 journalling file system support                        
Ext3 extended attributes                                   
Ext3 POSIX Access Control Lists                          
Ext3 Security Labels                                     
Reiserfs support
Stats in /proc/fs/reiserfs                                 
ReiserFS extended attributes                               
ReiserFS POSIX Access Control Lists                    
ReiserFS Security Labels                                 
JFS filesystem support                                       
JFS POSIX Access Control Lists 
Quota format v2 support                                    
Kernel automounter support                                   
Kernel automounter version 4 support (also supports v3) 

These should all have a <*> next to them. If you want to trim it down some, you can leave out filesystems you don't use or plan on using in the future, or just compile them as modules.

NOTE: if there are any other modules that have a <*> next to it, don't worry about it, just remember the old saying "If it aint broke, don't fix it". But if you want to experiment (and you will eventually), read the help file on the module, or have a known-good kernel .config file. Or, heck, a kernel you know works for sure available to boot from in case yours panics.

If you want support for Windows file systems scroll down to the DOS/FAT/NT Filesystems submenu and enter it:

MSDOS fs support
VFAT (Windows-95) fs support 
NTFS file system support 
NTFS debugging support 
NTFS write support                                  

all have a <*> or <M> next to them and leave other options on default.

Exit and save the configuration. When you are back on the command prompt, make sure you are root and:

make && make modules_install

Install the kernel and update GRUB:

make install

NOTE: depending on your CPU,this will take between 30 minutes to 3 hours (it took me 2 hours to compile this on my machine, a Duron 1100).

And there, you are done. It may look a little bit complicated at first, but once you get used to it, it's easy. A wonderful thing about the kernel install process: it automatically writes the kernel entry into GRUB, so you don't have to edit grub.conf by hand.

Final Thoughts:

Building a kernel takes time and effort. It gets annoying at times. It makes you want to pull your hair out of your head if it doesn't work. But once you get it running, you get a feeling of accomplishment. I will say it once again, compiling a kernel is not for newbies. You have to know a bit about how the commandline and how the kernel works. I'm not saying you can't do it but it can be frustrating.


Personal tools