Here is my success story on how to re-compile a Debian/Ubuntu kernel, in order to enable or tune kernel features which are not available as kernel modules:
# Install required software for the kernel compilation apt-get install fakeroot build-essential devscripts apt-get build-dep linux-image-$(uname -r) # make sure you have the appropriate "deb-src" in "sources.list" apt-get install libncurses5-dev # required for "make menuconfig" apt-get install ccache # to re-compile the kernel faster (http://wiki.debian.org/OverridingDSDT) # Prepare some environent variables for our architecture, for later use ARCH=$(uname -r|cut -d- -f3) CPUCNT=$(( $(cat /proc/cpuinfo |egrep ^processor |wc -l) * 2)) # Get the kernel sources rm -rf /root/krebuild && mkdir /root/krebuild cd /root/krebuild apt-get source linux-image-$(uname -r) cd linux-$(uname -r|cut -d- -f1|cut -d. -f1-2)* # cd linux-3.2.20 # http://kernel-handbook.alioth.debian.org/ch-common-tasks.html # 4.2.5 Building packages for one flavour # The target in this command has the general form of target_arch_featureset_flavour. Replace the featureset with none if you do not want any of the extra featuresets. # Prepare a Debian kernel to compile fakeroot make -f debian/rules.gen setup_${ARCH}_none_${ARCH} >/dev/null cd debian/build/build_${ARCH}_none_${ARCH} make menuconfig # make any kernel config changes now cd ../../.. # No debug info => faster kernel build perl -pi -e 's/debug-info:\s+true/debug-info: false/' debian/config/$ARCH/defines echo binary-arch_${ARCH}_none_${ARCH} vi debian/rules.gen # find the Make target and change DEBUG and DEBUG_INFO to False/n respectively # Bugfix: http://lists.debian.org/debian-user/2008/02/msg01455.html vi debian/bin/buildcheck.py +51 # add "return 0" right after "def __call__(self, out):" # Compile the kernel time DEBIAN_KERNEL_USE_CCACHE=true DEBIAN_KERNEL_JOBS=$CPUCNT \ fakeroot make -j$CPUCNT -f debian/rules.gen binary-arch_${ARCH}_none_${ARCH} > compile-progress.log # If needed, the linux-headers-version-common binary package (http://kernel-handbook.alioth.debian.org/ch-common-tasks.html -> 4.2.5) #fakeroot make -j$CPUCNT -f debian/rules.gen binary-arch_${ARCH}_none_real # Install the newly compiled kernel cd .. dpkg -i linux-image-*.deb #dpkg -i linux-headers-*.deb # only if you need them and/or have them installed already