≡ Menu

Debian / Ubuntu Linux Install Kernel Headers Package

I need kernel headers to compile module and vmware tools. How do I install kernel headers on Debian or Ubuntu Linux operating systems using command line options?

You can easily install the Linux kernel headers for currently running kernel version using the following commands at shell prompt. Header files and scripts for building modules for Linux kernel are included in linux-header-YOUR-Kernel-Version package. Open a terminal and type the command as root user to install linux-headers* package for your running kernel.

Make sure you have updated version

Type the following apt-get command:
$ sudo apt-get update
OR as root user enter:
# apt-get update

Search for kernel version (optional)

Type the following apt-cache command :
$ apt-cache search linux-headers-$(uname -r)

Install linux-header package under Debian or Ubuntu Linux

Type the following apt-get command:
$ sudo apt-get install linux-headers-$(uname -r)
OR as root user:
# apt-get install linux-headers-$(uname -r)
Sample outputs:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  binutils cpp-4.3 gcc-4.3 gcc-4.3-base libc-dev-bin libc6-dev libgmp3c2 libgomp1 libmpfr4
  linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev manpages-dev
Suggested packages:
  binutils-doc gcc-4.3-locales gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg
  libgomp1-dbg libmudflap0-dbg glibc-doc
Recommended packages:
  gcc c-compiler
The following NEW packages will be installed:
  binutils cpp-4.3 gcc-4.3 gcc-4.3-base libc-dev-bin libc6-dev libgmp3c2 libgomp1 libmpfr4
  linux-headers-2.6.32-5-amd64 linux-headers-2.6.32-5-common linux-kbuild-2.6.32 linux-libc-dev
0 upgraded, 14 newly installed, 0 to remove and 0 not upgraded.
Need to get 20.8 MB of archives.
After this operation, 68.9 MB of additional disk space will be used.
Do you want to continue [Y/n]? 

See apt-get(8) page for more information.

Share this tutorial on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:

{ 38 comments… add one }
  • plasmafusion March 27, 2008, 2:33 pm

    this is a great automatic method for this action.
    thanks :)

  • Jack July 4, 2008, 5:57 pm

    Is there any way of getting this without having the internet on ubuntu? I need it to install a driver for my router from source

    • Wylie Bayes January 21, 2012, 5:18 am

      You can download the kernel header files for your architecture and desired kernel as .deb files and install with dpkg as well. So you can have the .deb’s to bring to your offline system :)

      • isa October 10, 2016, 8:05 pm

        can you please tell me where can I download that packages from ?

  • Jerry November 11, 2008, 7:03 pm

    Another setting if you are trying to download a different linux header version (for instance, a chrooted environment with different kernel), you can also use this while chrooted.

    sudo apt-get install linux-headers-$(`ls /lib/modules`)

    this gives accurate header info.

  • davek March 4, 2009, 9:25 pm

    thank you very much, so simple and so helpful solution !! great

  • Ofir March 21, 2009, 6:53 pm

    Thank you very much, It helped me a lot

  • umair June 21, 2009, 10:16 pm

    i am having a problem with the method discussed above whenever i write the command “sudo apt-get update”.
    I get an error message that is “umair is not in the sudoers file. This incident will be reported.”
    What do i need to do to get rid of this error message?
    I would be obliged if anyone could help me out.

    • Chris R August 5, 2012, 11:30 pm


      While this is a very old thread, I am sure you found the answer. However, since I found this page on a google search, I feel this will be helpful to others as this is a common problem.

      1) Log in as a non-root account umair
      2) Elevate to root permissions with the command: su (followed by root password)
      3) apt-get install sudo (if not already installed)
      4) usermod -a -G sudo umair (-a is for add, -G is for group, sudo is the group, umair is the non-root account you wish to promote)

      Excellent tutorial Vivek. 5 years later and still relevent. Cheers!

      • Oelsen August 10, 2013, 2:04 am

        This is one of the nicest things I read this week. More of that and lmgtfy isn’t offending anymore :D

  • gaspar July 7, 2009, 8:53 pm

    You have to gain root access with su , of course. The type visudo and write at the end of file “your login name ALL(ALL)= ALL” and save it.

  • cparker August 10, 2009, 3:04 pm

    Awesome tip with the “linux-headers-$(uname-r)” bit, Vivek. Thanks!

  • Clearlyarrive December 8, 2009, 9:05 pm

    Some Movement,far refer player quickly supply mine hit nothing fill ask energy category fashion to surround build warn reform wash understand retain member than any code pick border energy assess housing necessarily original gain campaign responsible charge mark partly side panel servant help amongst fast tea alone empty wall when will carefully congress single appoint lawyer most used choice percent back defendant usually safety coal whole in drive rural idea post lean close club head several evening off manage carry attitude soldier culture brief century sentence independent access program

  • chief February 18, 2010, 10:08 am


  • darkstar March 26, 2010, 1:03 pm

    thanks man, I used the synaptic method for updating headers. Did not know that the kernel does not need to be rebuilt for updating until now :)

  • antonio July 8, 2010, 11:19 am

    $(uname-r) is cool, thanks

  • Dennis September 16, 2010, 11:53 am

    Thx a lot! of all the mad googling ive done, only You were the one that helped me get it done, fast and simple.
    You have a great site, by the way. thx! keep it up.

    Shout out from Germany

  • subhash February 15, 2011, 6:29 am

    Hi i am using the ubuntu 10.04 in which I have installed the linux 2.6.37 kernel. In case i am using the sudo apt-get install linux-headers-$(uname -r) its giving the following….Couldn’t find any package by regex ‘linux-headers-2.6.37’

    Any idea what is wrong?

  • Jase February 15, 2011, 3:15 pm

    Same problem as above but using Ubuntu 10.10 server as I need to install VMware server 2.0

  • Kingsak March 25, 2011, 9:24 am

    When I run apt-get install linux-headers-$(uname -r) . I get this error message
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    linux-headers-2.6.26-2-amd64: Depends: linux-kbuild-2.6.26 but it is not installable
    Depends: gcc-4.1 but it is not installable
    E: Broken packages

  • Janis April 23, 2011, 10:17 am

    uname -r returns
    where to get such source and how to use it? I am neewby may be someone could help

  • wilson April 28, 2011, 12:35 am

    I have the similar problem for compiling hello.c

    > simulation@ubuntu:~/Downloads/ldd2-samples-1.0.1/misc-modules$ gcc -c hello.c
    > hello.c:5: fatal error: linux/module.h: No such file or directory
    > compilation terminated.

    Then I did the above step:-
    > simulation@ubuntu:~$ sudo apt-get install linux-headers-$(uname -r)
    > Reading package lists… Done
    > Building dependency tree
    > Reading state information… Done
    > The following packages will be upgraded:
    > linux-headers-2.6.35-22-generic
    > 1 upgraded, 0 newly installed, 0 to remove and 313 not upgraded.
    > Need to get 771kB of archives.
    > After this operation, 0B of additional disk space will be used.
    > Get:1 http://us.archive.ubuntu.com/ubuntu/ maverick-updates/main linux-headers-2.6.35-22-generic i386 2.6.35-22.35 [771kB]
    > Fetched 771kB in 2s (270kB/s)
    > (Reading database … 118296 files and directories currently installed.)
    > Preparing to replace linux-headers-2.6.35-22-generic 2.6.35-22.33 (using …/linux-headers-2.6.35-22-generic_2.6.35-22.35_i386.deb) …
    > Unpacking replacement linux-headers-2.6.35-22-generic …
    > Setting up linux-headers-2.6.35-22-generic (2.6.35-22.35) …
    > Examining /etc/kernel/header_postinst.d.
    > run-parts: executing /etc/kernel/header_postinst.d/nvidia-common 2.6.35-22-generic /boot/vmlinuz-2.6.35-22-generic

    After the above step is done, I recompile again, I am still having the same issue.

    Other information of my system:-
    > simulation@ubuntu:~$ uname -a
    > Linux ubuntu 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU/Linux

    any clue ??

    thanks in advance.

  • Sudipta Kumar Sahoo May 24, 2011, 12:39 pm

    I am trying to install the alien file in my OS(Ubuntu 11.04). I am using the command sudo apt-get install alien. but it is saying that package not found.
    When ever I am typeing the command
    $ sudo apt-get install linux-headers-$(uname -r)
    It is showing the as
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    linux-headers-2.6.38-8-generic is already the newest version.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    What to do.How can I install alien. Because I have to install my rpm files as deb file.

    respond soon pls

  • bst July 22, 2011, 10:01 am

    Thanks alot. saved me a formatting as this was driving me crazy.

  • Deric July 23, 2011, 12:27 am

    I have a Freescale i.MX53 quick start board. I need to compile a kernel module for it so I want to install the kernel headers package . The “uname -r” and “ls /lib/modules” both show

    First of all, “sudo apt-get update” has a connection error (I verfied the Internet connection is working for this board):
    W: Failed to fetch
    Unable to connect to

    Second, apt-get can not find the package linux-headers- or linux-headers- or linux-headers-

    Can somebody help me out?

    Thank you.

    • Samy September 15, 2011, 8:30 am

      Hi Deric,

      I am also facing the same issue now. I need to have kernel package to build kernel module. If you have found where to get it. Please share the information.


      • Janis September 16, 2011, 9:33 am

        probably need to ask the hardware developer for that

  • Cosmin January 29, 2012, 2:17 pm

    Thank you very much, I spent a lot of time searching forums for a solution for this and you solved it in three lines of text.

  • Kayhan KAYIHAN February 4, 2012, 11:43 am

    good method, thanks.

  • Alex February 10, 2012, 6:52 am

    XMBC ferezes badly – as in, horribly (sound loops until I shut down my computer) on my comp when I pause it.

  • LinuxNoob March 12, 2012, 10:30 am

    Can anyone tell me how to do the same thing without “Internet Connectivity/Offline”?
    because my Linux machine doesn’t have internet,

  • geo_le@hotmail.com June 3, 2012, 11:34 pm

    Great information!!!
    Ditto for CentOS:

  • vicky August 21, 2013, 5:20 pm

    sudo apt-get install linux-headers-$(uname -r) does’t work…!!! Anybody help

    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Unable to locate package linux-headers-3.10.4
    E: Couldn’t find any package by regex ‘linux-headers-3.10.4’

  • Bangon Kali January 24, 2014, 1:11 am

    Hello, I am unable to find my Kernel Headers by issuing the following commands.

    root@localhost:~/Downloads# apt-get install linux-headers-$(uname -r)
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Unable to locate package linux-headers-3.8.0-00111-g85cc90f
    E: Couldn’t find any package by regex ‘linux-headers-3.8.0-00111-g85cc90f’

    I am using the following Linux based on ARM Arrow SocKit Board.

    Welcome to Linaro 13.04 (GNU/Linux 3.8.0-00111-g85cc90f armv7l)
    root@localhost:~# uname -r

    Any notes on how may I be able to get my Headers?

  • Mettler David July 10, 2014, 7:54 am

    Hi there

    Did you find a solution for the header files?

  • Brian Hoskins August 31, 2015, 5:01 am

    I broke one of my own rules when I tried this: never try a command suggested on the internet unless you first understand what it does.

    I tried this and it installed linux-headers-3.16.0-4-amd64.

    Then, when I tried to install something else which depends upon the linux-headers to be installed in order to build, it complains that I don’t have the linux headers for my system installed. So it transpires that this command probably caused the wrong ones to be installed.

    So let that be a lesson to me! Don’t break the rules!

    Back to the drawing board!


  • Alexandre Ogrodovski May 5, 2016, 10:02 pm

    Thank you.. it worked!

  • NoInternet NoEmailcom March 7, 2017, 3:06 am

    how to install gcc and kernel headers for Debian for VMware offline without internet?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

   Tagged with: , , , , , , , , , , ,