Compiling 2.6.20 Kernel
It's been 9 months since I last compiled a kernel... 2.6.10 (I think) and I want to do it again, especially since 2.6.20 was released.
I'm pretty sure you've seen my screenshot yesterday, yes, it seems that 2.6.20 has ntfs-write support. So, for the purpose of visually documenting 2.6.20, I'll do it again for the 3rd time. The first time, I forgot to select inotify which prevented my kernel from booting up. The 2nd time, I couldn't get a PS/2 mouse support, just USB. I just hope I do it right this time..
My guide is HowtoForge:
http://www.howtoforge.com/kernel_compilation_ubuntu
Thanks Falko Timme for the guide!
Moving forward.
Create a root account that way, you don't have to issue sudo every time you issue a command, that will save us time. We can easily delete them later anyway.
Login as root
I will qoute Mr. Falko Timme here: "On Ubuntu 6.10, /bin/sh is a symlink to /bin/dash by default. /bin/dash seems to make problems when you compile software from the sources, at least I had that impression. That's why I make /bin/sh a symlink to /bin/bash instead."
Let's now install some packages needed to compile the kernel
This is the command, just in case:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
Download the Kernel Source
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
Unpack the, well, package using the following commands:
tar xjf linux-2.6.20.tar.bz2
ln -s linux-2.6.20 linux
cd /usr/src/linux
Next up is copying the configuration of the current kernel (2.6.17).
You may need to copy-paste the code below:
cp /boot/config-`uname -r` ./.config
It's now time to configure the kernel:
make menuconfig
Load the saved .config file
There are a few options we need to configure:
Code Maturity Level Options:
General Setup
Loadable Module Support
Block Layer
Processor Type and Features
Power Management Options
Bus Options (PCI, PCMCIA, EISA, MCA, ISA)
Executable File Formats
Networking
Device Drivers
File Systems
ATTENTION:
This is where I found out the NTFS-Write Support
Instrumentation Support
Kernel Hacking
Security Options
Cryptographic Options
Library Routines
BIG TIP: If you don't know what it's for, don't touch it. Leave it as is. Do not mess with it.
You've been warned.
And after configuring your kernel, go ahead and save it.
And then Exit out of it
Now it's time for us to build the kernel
Execute the following commands, copy-paste if you have to.
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
the --append-to-version=-xxx may be anything, but please don't forget the (-).
*****
Now's the time to go out and have lunch, or take your family for dinner.
This will take a while (around 2-4hrs depending on your system. I have a P3 733Mhz and it took me a little over 4hrs.)
*****
After compiling your kernel, it's time for use to install it, but you should be aware that you'll have 2 .deb files on /usr/src directory. One of them is an image, the other is the header. Mine on the other hand:
So now it's time to install my kernel by issuing the following commands
dpkg -i linux-image-2.6.20-dax_2.6.20-dax-10.00.Custom_i386.deb
and
dpkg -i linux-headers-2.6.20-dax_2.6.20-dax-10.00.Custom_i386.deb
And you're done, and if you check on your /boot/grub/menu.lst , you'll find another newer entry... yours!
so just reboot with that kernel and you'll be surprised at the speed and optimization.
I'm pretty sure you've seen my screenshot yesterday, yes, it seems that 2.6.20 has ntfs-write support. So, for the purpose of visually documenting 2.6.20, I'll do it again for the 3rd time. The first time, I forgot to select inotify which prevented my kernel from booting up. The 2nd time, I couldn't get a PS/2 mouse support, just USB. I just hope I do it right this time..
My guide is HowtoForge:
http://www.howtoforge.com/kernel_compilation_ubuntu
Thanks Falko Timme for the guide!
Moving forward.
Create a root account that way, you don't have to issue sudo every time you issue a command, that will save us time. We can easily delete them later anyway.
Login as root
I will qoute Mr. Falko Timme here: "On Ubuntu 6.10, /bin/sh is a symlink to /bin/dash by default. /bin/dash seems to make problems when you compile software from the sources, at least I had that impression. That's why I make /bin/sh a symlink to /bin/bash instead."
Let's now install some packages needed to compile the kernel
This is the command, just in case:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
Download the Kernel Source
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
Unpack the, well, package using the following commands:
tar xjf linux-2.6.20.tar.bz2
ln -s linux-2.6.20 linux
cd /usr/src/linux
Next up is copying the configuration of the current kernel (2.6.17).
You may need to copy-paste the code below:
cp /boot/config-`uname -r` ./.config
It's now time to configure the kernel:
make menuconfig
Load the saved .config file
There are a few options we need to configure:
- Code Maturity Level Options
- General Setup
- Loadable Module Support
- Block Layer
- Processor Type and Features
- Power Management Options (ACPI, APM)
- Bus Options (PCI, PCMCIA, EISA, MCA, ISA)
- Executable File Formats
- Networking
- Device Drivers
- File Systems
- Instrumentation Support
- Kernel Hacking
- Security Options
- Cryptographic Options
- Library Routines
- Load an Alternate Configuration File (that we already did above) and the
- Save an Alternate Configuration File
Code Maturity Level Options:
General Setup
Loadable Module Support
Block Layer
Processor Type and Features
Power Management Options
Bus Options (PCI, PCMCIA, EISA, MCA, ISA)
Executable File Formats
Networking
Device Drivers
File Systems
ATTENTION:
This is where I found out the NTFS-Write Support
Instrumentation Support
Kernel Hacking
Security Options
Cryptographic Options
Library Routines
BIG TIP: If you don't know what it's for, don't touch it. Leave it as is. Do not mess with it.
You've been warned.
And after configuring your kernel, go ahead and save it.
And then Exit out of it
Now it's time for us to build the kernel
Execute the following commands, copy-paste if you have to.
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
the --append-to-version=-xxx may be anything, but please don't forget the (-).
*****
Now's the time to go out and have lunch, or take your family for dinner.
This will take a while (around 2-4hrs depending on your system. I have a P3 733Mhz and it took me a little over 4hrs.)
*****
After compiling your kernel, it's time for use to install it, but you should be aware that you'll have 2 .deb files on /usr/src directory. One of them is an image, the other is the header. Mine on the other hand:
So now it's time to install my kernel by issuing the following commands
dpkg -i linux-image-2.6.20-dax_2.6.20-dax-10.00.Custom_i386.deb
and
dpkg -i linux-headers-2.6.20-dax_2.6.20-dax-10.00.Custom_i386.deb
And you're done, and if you check on your /boot/grub/menu.lst , you'll find another newer entry... yours!
so just reboot with that kernel and you'll be surprised at the speed and optimization.