How to build a 4.6 kernel on Ubuntu 16.04.

Firstly, download a kernel tarball from kernel.org.

[email protected]:~$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.6-rc1.tar.xz
--2016-03-29 10:22:34--  https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.6-rc1.tar.xz
Resolving cdn.kernel.org (cdn.kernel.org)... 103.245.222.69
Connecting to cdn.kernel.org (cdn.kernel.org)|103.245.222.69|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89423304 (85M) [application/x-xz]
Saving to: 'linux-4.6-rc1.tar.xz’
 
linux-4.6-rc1.tar.xz                  100%[======================================================================>]  85.28M  1.29MB/s    in 66s
 
2016-03-29 10:23:54 (1.28 MB/s) - 'linux-4.6-rc1.tar.xz’ saved [89423304/89423304]

Then unpack the kernel tarball.

[email protected]:~$ tar -xvf linux-4.6-rc1.tar.xz

Then copy an existing kernel configuration from your /boot folder to create a config for the menuconfig to use.

[email protected]:~/linux-4.6-rc1$ cp /boot/config-4.5.0-johnpc .config

Then run this command to setup the kernel.

[email protected]:~/linux-4.6-rc1$ make menuconfig

Then build the kernel and modules. I am connected to my machine over the Internet with SSH, so I will run this command in the background with NOHUP.

[email protected]:~/linux-4.6-rc1$ nohup make && make modules &

Once this has completed, install all of the modules to the /lib/modules directory.

[email protected]:~$ sudo make modules_install

Then install the kernel to the system.

[email protected]:~$ sudo make install

Now after all of this effort, we need to prepare the kernel source for installation.

[email protected]:~/linux-4.6-rc1$ sudo make clean prepare

The source code tree is copied to the /usr/src directory and symlinks created so that it looks like this.

jason@jason-desktop:~/linux-4.6-rc1$ ls -hula /usr/src/
total 36K
drwxr-xr-x  9 root  root  4.0K Mar 30 10:44 .
drwxr-xr-x 11 root  root  4.0K Mar 30  2016 ..
drwxrwxr-x 25 jason jason 4.0K Mar 22 11:16 linux-4.5
drwxrwxr-x 25 jason jason 4.0K Mar 30 10:44 linux-4.6-rc1
drwxr-xr-x 27 root  root  4.0K Jan 16 13:13 linux-headers-4.3.0-6
drwxr-xr-x  7 root  root  4.0K Jan 16 13:16 linux-headers-4.3.0-6-generic
drwxr-xr-x 24 root  root  4.0K Jan 16 13:07 linux-headers-4.3.3-gnu
drwxr-xr-x 27 root  root  4.0K Mar  4 18:42 linux-headers-4.4.0-9
drwxr-xr-x  7 root  root  4.0K Mar  4 18:42 linux-headers-4.4.0-9-generic
lrwxrwxrwx  1 root  root    18 Mar 30 10:44 linux-headers-4.5 -> /usr/src/linux-4.5
lrwxrwxrwx  1 root  root    22 Mar 30 10:44 linux-headers-4.6-rc1 -> /usr/src/linux-4.6-rc1

Then edit the symlinks in /lib/modules so they point to the proper source tree.

jason@jason-desktop:~/linux-4.6-rc1$ ls -hula /lib/modules/4.6.0-rc1-jason/
total 4.4M
drwxr-xr-x  3 root root  4.0K Mar 30 10:48 .
drwxr-xr-x  5 root root  4.0K Mar 30 10:38 ..
lrwxrwxrwx  1 root root    22 Mar 30 10:45 build -> /usr/src/linux-4.6-rc1
drwxr-xr-x 12 root root  4.0K Mar 29 13:18 kernel
-rw-r--r--  1 root root  1.1M Mar 29 13:18 modules.alias
-rw-r--r--  1 root root 1020K Mar 30  2016 modules.alias.bin
-rw-r--r--  1 root root  6.8K Mar 29 13:18 modules.builtin
-rw-r--r--  1 root root  8.5K Mar 30  2016 modules.builtin.bin
-rw-r--r--  1 root root  451K Mar 29 13:18 modules.dep
-rw-r--r--  1 root root  646K Mar 30  2016 modules.dep.bin
-rw-r--r--  1 root root   263 Mar 29 13:18 modules.devname
-rw-r--r--  1 root root  173K Mar 29 13:18 modules.order
-rw-r--r--  1 root root   114 Mar 30  2016 modules.softdep
-rw-r--r--  1 root root  460K Mar 29 13:18 modules.symbols
-rw-r--r--  1 root root  570K Mar 30  2016 modules.symbols.bin
lrwxrwxrwx  1 root root    22 Mar 30 10:45 source -> /usr/src/linux-4.6-rc1

And now re-boot into your brand new kernel!

No comments have been made. Use this form to start the conversation :)

Leave a Reply