24 July 2012

214. Compiling kernel 3.5 on Debian testing

I've posted how to compile quite a few different kernel versions already (3.4, 3.3, 3.2). With the exception of specific questions asked during the process, the are all compiled in the same way.

Compiling kernels is NOT scary on debian.

cd ~/tmp
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.tar.bz2
tar xvf linux-3.5.tar.bz2
cd linux-3.5/
cat /boot/config-`uname -r`>.config
make oldconfig

Question time! See below.

make-kpkg clean
time fakeroot make-kpkg -j5 --initrd --revision=3.5.0 --append-to-version=-amd64 kernel_image kernel_headers

This takes a LONG TIME. Change 5 to number of cores+1. 35 minutes with -j5 on a six core desktop.

 mv ../*3.5.0*.deb .

sudo dpkg -i *.deb

And you're done.

Things to ponder in this version:
Tree-based hierarchical RCU leaf-level fanout value (RCU_FANOUT_LEAF) [16] (NEW
Cross Memory Support (CROSS_MEMORY_ATTACH) [Y/n/?] (NEW)
Enable frontswap to cache swap pages if tmem is present (FRONTSWAP) [N/y/?] (NEW)
Opportunistic sleep (PM_AUTOSLEEP) [N/y/?] (NEW)
User space wakeup sources interface (PM_WAKELOCKS) [N/y/?] (NEW)
"HMARK" target support (NETFILTER_XT_TARGET_HMARK) [N/m/?] (NEW)
Generic IEEE 802.15.4 Soft Networking Stack (mac802154) (MAC802154) [N/m/?] (NEW)
Controlled Delay AQM (CODEL) (NET_SCH_CODEL) [N/m/y/?] (NEW)
Fair Queue Controlled Delay AQM (FQ_CODEL) (NET_SCH_FQ_CODEL) [N/m/y/?] (NEW)
Bridge Loop Avoidance (BATMAN_ADV_BLA) [Y/n/?] (NEW)
NFC HCI implementation (NFC_HCI) [N/m/?] (NEW) 
BMP085 digital pressure sensor on I2C (BMP085_I2C) [N/m/?] (NEW)

BMP085 digital pressure sensor on SPI (BMP085_SPI) [N/m/y/?] (NEW)
TCM_QLA2XXX fabric module for Qlogic 2xxx series target mode HBAs (TCM_QLA2XXX) [N/m/?] (NEW) 
 FireWire SBP-2 fabric module (SBP_TARGET) [N/m/?] (NEW) 
PTP Hardware Clock (PHC) (IGB_PTP) [N/y/?] (NEW)
Intel(R) 10GbE PCI Express adapters HWMON support (IXGBE_HWMON) [Y/n/?] (NEW)
PTP Clock Support (IXGBE_PTP) [N/y/?] (NEW)
Data Center Bridging (DCB) Support (MLX4_EN_DCB) [Y/n/?] (NEW)
WIZnet devices (NET_VENDOR_WIZNET) [Y/n/?] (NEW)
WIZnet W5100 Ethernet support (WIZNET_W5100) [N/m/y/?] (NEW)
WIZnet W5300 Ethernet support (WIZNET_W5300) [N/m/y/?] (NEW)
TI Wireless LAN support (WL_TI) [N/y/?] (NEW)
Marvell WiFi-Ex Driver for USB8797 (MWIFIEX_USB) [N/m/?] (NEW) 
Matrix keymap support library (INPUT_MATRIXKMAP) [N/m/y/?] (NEW)
LM8333 keypad chip (KEYBOARD_LM8333) [N/m/?] (NEW) 
 Wacom Tablet support (I2C) (TOUCHSCREEN_WACOM_I2C) [N/m/?] (NEW)
Intel ICH GPIO (GPIO_ICH) [N/m/y/?] (NEW)
Texas Instruments INA219, INA226 (SENSORS_INA2XX) [N/m/?] (NEW)
Intel Atom E6xx Watchdog (IE6XX_WDT) [N/m/y/?] (NEW)
LM3533 Lighting Power chip (MFD_LM3533) [N/m/?] (NEW)
Freescale MC13783 and MC13892 SPI interface (MFD_MC13XXX_SPI) [N/m/y/?] (NEW)
Freescale MC13892 I2C interface (MFD_MC13XXX_I2C) [N/m/?] (NEW)
Intel ICH LPC (LPC_ICH) [M/y/?] (NEW)
 Afatech AF9035 DVB-T USB2.0 support (DVB_USB_AF9035) [N/m/?] (NEW) 
AST server chips (DRM_AST) [N/m/?] (NEW) 
Kernel modesetting driver for MGA G200 server engines (DRM_MGAG200) [N/m/?] (NEW)
Cirrus driver for QEMU emulated device (DRM_CIRRUS_QEMU) [N/m/?] (NEW) 
AUO-K190X EPD controller support (FB_AUO_K190X) [N/m/y/?] (NEW) 
Generic HID driver (HID_GENERIC) [M/n/?] (NEW) 
 Aureal (HID_AUREAL) [N/m/?] (NEW) 
BCMA usb host driver (USB_HCD_BCMA) [N/m/?] (NEW) 
SSB usb host driver (USB_HCD_SSB) [N/m/?] (NEW)
ChipIdea Highspeed Dual Role Controller (USB_CHIPIDEA) [N/m/?] (NEW) 
USB Quatech Serial Driver for USB 2 devices (USB_SERIAL_QT2) [N/m/?] (NEW)
NXP ISP1301 USB transceiver support (USB_ISP1301) [N/m/?] (NEW)
USB Gadget Target Fabric Module (USB_GADGET_TARGET) [N/m/?] (NEW) 
 LED Transient Trigger (LEDS_TRIGGER_TRANSIENT) [N/m/y/?] (NEW) 
 Emulex One Connect HCA support (INFINIBAND_OCRDMA) [N/m/?] (NEW) 
 Comedi default initial asynchronous buffer size in KiB (COMEDI_DEFAULT_BUF_SIZE_KB) [2048] (NEW) 
Comedi default maximum asynchronous buffer size in KiB (COMEDI_DEFAULT_BUF_MAXSIZE_KB) [20480] (NEW)
Amplicon PCI215 and PCI272 DIO board support (COMEDI_AMPLC_DIO200_PCI) [N/m/?] (NEW) 
 Amplicon PCI236 DIO board support (COMEDI_AMPLC_PC236_PCI) [N/m/?] (NEW)
Amplicon PCI263 relay board support (COMEDI_AMPLC_PC263_PCI) [N/m/?] (NEW) 
DAS-08 PCI support (COMEDI_DAS08_PCI) [N/m/?] (NEW)
Configurable Composite Gadget (STAGING) (USB_G_CCG) [N/m/?] (NEW)
 IndustryPack bus support (IPACK_BUS) [N/m/y/?] (NEW) 
GCT GDM72xx WiMAX support (WIMAX_GDM72XX) [N/m/y/?] (NEW)
External Connector Class (extcon) support (EXTCON) [N/m/y/?] (NEW) 
Memory Controller drivers (MEMORY) [N/y] (NEW)
 Log panic/oops to a RAM buffer (PSTORE_RAM) [N/m/y/?] (NEW) 
NFS client support for NFS version 2 (NFS_V2) [Y/n/?] (NEW) 
Codepage macroman (NLS_MAC_ROMAN) [N/m/y/?] (NEW)
Codepage macceltic (NLS_MAC_CELTIC) [N/m/y/?] (NEW)
Codepage maccenteuro (NLS_MAC_CENTEURO) [N/m/y/?] (NEW)
Codepage maccroatian (NLS_MAC_CROATIAN) [N/m/y/?] (NEW) 
Codepage maccyrillic (NLS_MAC_CYRILLIC) [N/m/y/?] (NEW) 
Codepage macgaelic (NLS_MAC_GAELIC) [N/m/y/?] (NEW)
Codepage macgreek (NLS_MAC_GREEK) [N/m/y/?] (NEW)
Codepage maciceland (NLS_MAC_ICELAND) [N/m/y/?] (NEW) 
Codepage macinuit (NLS_MAC_INUIT) [N/m/y/?] (NEW) 
Codepage macromanian (NLS_MAC_ROMANIAN) [N/m/y/?] (NEW) 
Codepage macturkish (NLS_MAC_TURKISH) [N/m/y/?] (NEW)
Generate readable assembler code (READABLE_ASM) [N/y/?] (NEW)
Enable uprobes-based dynamic events (UPROBE_EVENT) [N/y/?] (NEW)
JEDEC DDR data (DDR) [N/y/?] (NEW) 

Links to this page:


  1. Hi Lindqvist,

    this is concerning you post regarding compiling kernel version 3.5 regarding the following step:

    time fakeroot make-kpkg -j5 --initrd --revision=3.5.0 --append-to-version=-amd64 kernel_image kernel_headers

    I am running a 32 bit machine .. so --append-to-version will be -i386 I gather? am I correct .. please advise by e-mail to shiv.brahmi@gmail.com.

    Thank you.

    Best Regards,


    1. --append-to-version is just a string and can be anything -- so -x86 or -i386 are all fine.

      See here for cross compiling a 32 bit kernel on a 64 bit system: http://verahill.blogspot.com.au/2012/03/cross-compiling-eg-32-bit-binaries-on.html

      Building on a 32 bit system should not require anything species. For older kernels you may run into the bug at the end of this post: http://verahill.blogspot.com.au/2012/02/debian-testing-building-your-own-linux.html

  2. Works like a charm!
    Compiled 3.5.5 yesterday, thanks a lot for this post!

  3. Complied this today and worked great. The previous kernel still shows up in the GRUB on booting though. How best to go about getting rid of that?

    1. Keep at least one 'stable' kernel around in case e.g. updates to udev breaks something.

      To remove kernels you can easily uninstall them using apt -- they are typically called something like

      although I think the repo versions of the kernel leaves out the -{arch} e.g. linux-headers-3.2.9 and linux-image-3.2.9

  4. First of all, thank you for this. Second, after doing so, I lost VirtualBox support. Any idea how to get this back? I imagine I need to recompile, but I don't see it in the list of questions.


    1. If you compiled 3.5, try doing
      sudo /etc/init.d/vboxdrv setup
      and everything should work.

      If /etc/init.d/vboxdrv is missing, look here Item 4):

      If you compiled kernel 3.7.x then look here:
      i.e. you might have to install virtualbox from the virtualbox.org website.