Here in this post I will explain how to compile and install Linux Kernel 3.0 and Linux Kernel 3.x in Ubuntu. Linux Kernel 3.8.8 is the latest stable release and you can download it from kernel.org. If you are new to Linux then I strongly recommend you try with Linux Kernel 3.0 and you can later patch it with Linux Kernel 3.8.8. If you don’t like to compile the kernel, then you can directly install the debian packages Click Here.

Once the download complete move to the directory where you have downloaded the kernel package “linux-3.0.tar.bz2“. Now extract the tar file to the location “/usr/src/“.

To move to the directory, for example if the downloaded package is in your Downloads directory. Use the below command.

cd Downloads/

To extract the tar file run the following command. Type the password for the user when prompted.

sudo tar -xvf linux-3.0.tar.bz2 -C /usr/src/

Now move to the directory where the extracted file is, or copy and paste the below command in terminal.

cd /usr/src/linux-3.0/

Now you can configure, compile and install Linux Kernel 3.0 in your system. Run the commands one by one and type the password for the user, when prompted.

To Configure

sudo make menuconfig

The above command is used to configure the Linux kernel. Once you execute the command, you will get a pop up window with the list of menus and you can select the items for the new configuration. If your unfamiliar with the configuration just check for the file systems menu and check whether ext4 is chosen or not, if not select it and save the configuration. Check the screen shot below for menuconfig.

If you like to have your existing configuration then run the below command.

sudo make oldconfig

There are other alternate configuration commands are available and you can find them in README file under linux-3.0 directory.

To Compile

sudo make

The above command is used to compile the Linux Kernel. It will take some time to complete it, approximately 40 min to 50 min it depends on your system configuration.

To Install

sudo make modules_install install

The above command will install the Linux Kernel 3.0 into your system. It will create some files under /boot/ directory and it will automatically make a entry in your grub.cfg. Check whether it made correct entry and check for the files it created.

The files under /boot/ directory are,

System.map-3.0.0

vmlinuz-3.0.0

initrd.img-3.0.0

config-3.0.0

If you unable to find the initrd.img-3.0.0 file then create it. Run the below command to create it.

sudo update-initramfs -u -k 3.0.0

Update

If the above command unable to update / generate the initramfs then run the following command to create new initramfs.

sudo update-initramfs -c -k 3.0.0

Your grub.cfg file should be like the screen shots(example) below if not edit it.

For Linux Kernel 3.0

For Linux Kernel 3.0.1

To modify the grub.cfg under “/boot/grub/” directory. Open the file using below command.

sudo gedit /boot/grub/grub.cfg

After modifying your grub.cfg, update your grub by running the following command.

sudo update-grub

Restart your system by default it will boot in Ubuntu 3.0.0, you can able to see while booting. To check after booting open a terminal and type

Thanks for a detailed explanation. It really worked as mentioned and I have now updated my kernel on Ubuntu 11.04. Thanks again

windsigra

Did not work on kubuntu 11.10. make and install worked with no errors or problems. I done the 3.1.0 and it shows up in grub.cfg as well has 3 files in boot for 3.1.0 but when i reboot and get grub 1.99 list it only shows linux mint and ubuntu kernel 3.0.12 and 3.0.11 but when check grub.cfg it shows all them even 3.1.0 so i cannot boot into the kernel

http://www.howopensource.com Manivannan

Hi Windsigra,

Which is your default OS, Linux Mint or Ubuntu. If its Linux Mint, then update your grub in Linux Mint.

windsigra

I changed default…and even when i check it with start-up manager it shows 3.1.0 kernel as default…but when boot up linux mint stays default and 3.1.0 kernel dont show only 3.0.0.12 and 3.0.0.11 and linux mint at top

windsigra

I uninstalled grub 1.99 and reinstalled grub which switch it from linuxmint custom back to ubuntu’s i guessing but eitherway it worked perfect and all show up now.

Hi Flex, Yes, If its unable to update the initramfs file then you need to create it using -c.

$ sudo update-initramfs -c -k 3.1.0-rc4

tobaj

If you build a new kernel you cannot use ‘update-initramfs -u’ as there is no initramfs to update yet. You can only create a new one ‘… -c’ and then update at some point if necessary..

priya jain

thanks alot it really works hey i am doing my project on uec iand i sometimes get an error “no address associated with hostname” i have tried all the ways change dns nameserver to google and manually enter the ip address of web sites but manually entering is a bulky process could you help me out thanku:)

hasan

When I update initfrafms to 3.0.3 i did not any changes to 3.0.3

# # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub #

### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the ‘exec tail’ line above. ### END /etc/grub.d/40_custom ###

I think kernel 3.0.3 is not installed in your system. After running the below command what the output your getting?

$ sudo make modules_install install

And can you able to find the files (System.map-3.0.3, vmlinuz-3.0.3, initrd.img-3.0.3, config-3.0.3) under /boot directory.

hasan

Hi . When I run this command I found drivers are installing. and I create initrd.img-3.0.3 . The other files exist. I thinck your right .it is a problem from my system. Thanks.

Nix

actually kernel README specifically says to put source in home directory and not in /usr/src: “Do NOT use the /usr/src/linux area! This area has a (usually incomplete) set of kernel headers that are used by the library header files. They should match the library, and not get messed up by whatever the kernel-du-jour happens to be.”

I have not yet come across this error, will check it and come back to you soon. Your using Debian OS isn’t it? Check for the updates.

Dastagir

i did according to ur way. I in grub menu i am missing linux-3.0. and in my /etc/defualt/grub there is no grub. and in /boot/ i found grub.cfg, menu.lst and menu.lst~. what should i do

http://www.howopensource.com Manivannan

Hi Dastagir,

Make a menuentry in your grub.cfg file. The menuentry should be like the screen shots which i have given under “update-initramfs” step.

dastagir

thanks for ur quick reply. Very good guy. But u said if i unable to find initrd.img-3.0.0 in /boot directory. then i should run sudo update-initramfs -u -k 3.0.0. i found them when i ran sudo make modules_install install. so i didn’t run sudo update-initramfs -u -k 3.0.0. Though i found all four things under /boot directory i am still missing grub in /etc/default directory. and one more thing. i wanna do kernel programming. what are the procedures or steps. thanks again. god bless u

Dastagir

thanks Manivanna. It worked. keep going this good work pls

gosia

Great tutorial. Had problems with kernel for the last few days. Its really helpful for beginner. Thank you

Erwin

Hello, according to the dscription, I installed kernel 3.0.4 for ubuntu 11.10 No problems with startup, but I need to have :

which is correct because I also see : ubuntu@ubuntu-Aspire-5000:~/rtl2832u-new-3.0$ ls /usr/src linux-3.0.4 linux-headers-3.0.0-12 linux-headers-3.0.0-12-generic > I now tried to get the …headers-3.0.4 files >> But the following didn’t help either

How should I proceed now ? Did I miss someting by upgrading to kernel 3.0.4 ? How do I get the linux-headers-3.0.4 ?

http://www.howopensource.com Manivannan

Hi Erwin,

I am not clear about this errors, Here you are building a new kernel, If you just want to update the kernel to new one (3.1/3.0.4) then you can follow this guide http://www.howopensource.com/.

http://www.howopensource.com Manivannan

Or if you want to install the linux-header-3.0.4, you can download it and install the same way from the above link..

Erwin

Thank you very much, it works now for me. I had missed the above link.

hey

DO NOT EDIT /BOOT/GRUB/GRUB.CFG BY HAND. Instead, do:

grub-mkconfig > /boot/grub/grub.cfg

as root.

DeMus

Hi, Can somebody explain to me if there are differences, and if so which, between installing a pre-compiled kernel and compile one with the above mentioned instructions? I have installed kernels before but always the pre-compiled ones. Now I just wonder will it make a difference? Who can help me with this question?

JAI sATHISH

Hi, There is difference between pre-compiled kernel and customised kernel.

In Case of customised kernels, the kernel can be customised to work for specific hardware and user needs.

for e.g you don’t want someone to access the NTFS partition on linux machine..

Then u can uncheck the NTFS support while customising the kernel.

Then when booted using customised kernel it cannot mount NTFS…

By this way customised kernels help in adding drivers for printers, Lan ports etc. for the latest ones which are not supported by pre-compiled kernels..

rh15c

fiuuhhh….got problem while running make, am using ubuntu 10.04 kern 2.6.32, want to upgrade to kern 3.0, i found error while running make and can’t solve it, would you please help me? thanks…

Hi, I’m using this method to compile kernel 3.1.2 and getting following error. Please help me out from this trouble. And let me know what is missing for compiling(for make command).

Here is error code.

“samples/hidraw/hid-example.c:49: warning: unused variable

Motiur

Hi, I want to get the option of booting to one of the desired kernels e.g 2.6 or 3.1 during startup , not something default . The steps above directly took me to 3.1.5 without any chance of rebooting to another kernel . Is there a way to attach that option .

http://www.howopensource.com Manivannan

Hi Motiur,

Modify your grub and make entry for other kernel(2.6), then set timeout=10.

kashyap

I have got the same error as bhavin has got., I am trying to upgrade kernel on a vm machine (Xenserver)

http://www.howopensource.com Manivannan

Hi guys,

I have not yet tried in vm machines. I will try to check your errors and will get back to you on asap.

Hey iam trying to build 2.6.35 in ubuntu 11.10 64 bit, and iam messed up with following errors

include/linux/irq.h: In function

http://www.gamaphoton.blogspot.com tilak

thanks for the wonderful detailed explanation. this went flawless. i just upgraded my kernel from 3.0.14 to 3.2.1 on ubuntu 11.10

Numb

hi i have a problem the initrd.img-3.2.9 does not existed i do all the job successfully but i can not create it help me please i use kernel 3.2.9 libre

http://www.howopensource.com Manivannan

Hi Numb,

Use this command “sudo update-initramfs -c -k 3.2.9″ to create it.

paijo

Thank you very much, it works now for me.

sathish

how i am having ubuntu 11.10 .. for study purpose i want to learn abt kernel compilation. I want to know how to edit the grub that i can able to choose my kernel. Previously i used slackware where i edited lilo to make it work.

Bezhan

Hi,why im trying to use “apt update -grub ” it’s not working in command line plz help wt the problem,,,,my linux MINT so i got problem with GRUB n i delete the ubuntu grub 1.9 wanna update MINT grub

Hi I did kernel upgrade to 3.0.0 but at boot I get error msg saying “MDIO-GPIO” already registered. The system hangs and falls back to command line and no graphics. I’m using ubuntu 10.10. and old kernel 2.6.35.32

Thanks My linux mint kernel upgraded to 3.3.5 but when i restart it, I cant use Graphic Interface, it automatically show terminal interface, i had used ctrl+alt+f7 for switch to GUI, but it just showed yellow strip on the screen what must i do? please help me..

Stefano

After compiling and installing, the freshly compiled kernel doesn’t seem to find the device (with correct UUID, same as used on precompiled kernels) and the system drops a shell… Any idea?

TIA,

Stefano

Rupesh KP

I have installed ubuntu 11.04 on my system. After this when I used to give uname -r it showed me kernel version as 2.6.38.

Now I had downloaded kernel 2.6.34.12 from kernel.org and installed it using the steps above. make make modules make modules_install make install

This created files: System.map-2.6.34.12 vmlinuz-2.6.34.12 config-2.6.34.12

In /lib/modules also I can see the new kernel 2.6.34.12 folder.

Next to create initrd.img I fired: update-initramfs -c -k 2.6.34.12

Then I checked the grub.cfg and it showed me an entry for 2.6.34.12. Next I updated grub: update-grub

But after reboot uname -r still shows me the previous version 2.6.38. What is the issue and why new kernel version is not installed?

http://www.howopensource.com Manivannan

Hi Rupesh,

Your current kernel is newest and stable one, May I know why you are trying to downgrade the kernel by compiling the oldest version? you can try the compilation on latest Linux kernel.

Samir

Hi,

I am done with the installation of the latest kernel. Now I have to install CILK but since on extracting the package it doesn’t contain the configure file I cant make and then install it. Im new to linux so can you please guide me. I know im posting this at the wrong place but im completely stuck.

Thanks Mani for such nice and clear steps to build and install the kernel image. I have done it first time on my Ubuntu 12.04 LTS running with 3.2.0.23 and upgraded to 3.4.6 successfully.

I had only one issue as: __modver_version_show undefined error when building linux kernel 3.0.4 version. And this was resolved just updating the CONFIG_RTS5139=m to CONFIG_RTS5139=n followed by re-compilation.

After the install command, all the four files above have been successfullly created under /boot/ and I need not had to do it manually.

Thanks Sandy

Ashfaq shaikh

Well I went for compilation of Kernel 3.5.1 for Debian (LMDE) all the steps I followed as per your instructions. Although it took 2 hrs for the entire process it was completed with errors of DKMS Like: dkms.conf: Error! No ‘BUILT_MODULE_NAME’ directive specified for record #0. > Error! Bad conf file. > File: > does not represent a valid dkms.conf file.

Well I went ahead ignoring this, as the four set of files were in place and after update-grub, even the header were in place. But.. When I booted, the ‘X” won’t come up! instead the text mode asking me to log in came, and a pop up indicating the X server.xorg need to be in place, even the latest nvidia driver I tried to install via sh command, wont install after the acceptance screen. Help me out I will not sit comfortably unless I boot with this latest kernel !!