Compile a kernel on Debian
From time to time you need to add some modules in the kernel which are not compiled in by default. To achieve that you need to compile your kernel. In this post we will go over the steps you need to take to compile your own kernel.
First of all you will need to find a source for your kernel you can either download the kernel source from kernel.org and place it to /usr/src
or get it from the apt repository.
#apt-get source linux-image
You will need to install some extra packages:
#apt-get install fakeroot kernel-package libncurses5-dev
Ones you have downloaded the package you will find it in /usr/src
.
If you have downloaded the package from kernel.org the package will be most probably archived with bzip2 so you will need to unpack it.
#tar -xvJf linux-3.17.tar.xz
#cd linux-3.17/
Now we want to use configure the kernel. Best we start with the configuration file of the current setup. To do that use the following command:
#cp /boot/config-`uname -r` .config
To add the new modules you need to run make menuconfig
#make menuconfig
Select the modules you need and save the configuration file before you exit. It is time to start the compilation. First we need to clean the source.
#make-kpkg clean
Before we start building the new kernel it is a good idea to set the new concurrency level. The maximum which can be set is equal with the number of cores your system have +1. For example if you have a 4 core cpu then the concurency level is equal with 5. Setting the concurrency level will significantly shorten he new kernel's compilation time.
#export CONCURRENCY_LEVEL=5
Now it's time to build the new kernel.
#fakeroot make-kpkg --append-to-version "-customkernel" --revision "1" initrd kernel_image kernel_headers
With --append-to-version
you set a custom description in the kernel name. The --revision
would set the revision version of the build.
After the kernel is compiled the new packages will be found in /usr/src
. You can install them by running the following command:
/usr/src# dpkg -i linux-image-3.17.0-customkernel_1_amd64.deb
/usr/src# dpkg -i linux-headers-3.17.0-customkernel_1_amd64.deb