# Ubuntu 16.04 LTS kernel compatibility?

**URL:** https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576
**Category:** Self-hosting
**Created:** [2016年三月25日 20:58 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576 "2016-03-25T20:58:39Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![ljpp](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ljpp/32/96506_2.png) [@ljpp](https://meta.discourse.org/u/ljpp)
#### Post date: [2016年三月25日 20:58 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/1 "2016-03-25T20:58:39Z")

</div>

The next Ubuntu LTS is due in about one month, and service providers are likely to add it to their offering sooner than later. As 14.04 is already 2 years into it’s life-cycle, the 16.04 is likely to become the recommended default very quickly.

Is Discourse compatible with the 16.04 as of today or from day 1 after the release? Anyone tried it yet? I will be making some server migrations during spring time, so it would make sense to jump in the 16.04 bandwagon while I am at it.

---

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [2016年三月25日 21:03 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/2 "2016-03-25T21:03:40Z")

</div>

Short answer, yes.

If you’re deployed in production and not deployed in a development environment locally, you’re going to be using the discourse-docker containers already. The discourse team still has complete control the OS environment inside the container.

If and when they do decide to update to the 16.04 base, I’m sure the team will make sure that it’s tested for compatibility before they roll out any changes to the container itself.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [2016年三月25日 21:18 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/3 "2016-03-25T21:18:36Z")

</div>

Before we do that we need to do the Postgres 9.5 upgrade for the containers, I think.

---

<div class="post-metadata">

### Author: ![ross](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ross/32/121448_2.png) [@ross](https://meta.discourse.org/u/ross)
#### Post date: [2016年九月21日 11:29 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/4 "2016-09-21T11:29:45Z")

</div>

I’m just about to have a go at installing Discourse using the instructions here: [discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md)

The instructions say that the Digital Ocean default is Ubuntu 14.04 but the default is now 16.04

Can you:

a) Confirm compatibility with 16.04 at this point?  
b) Update the docs if this is the case?

Thanks

Ross

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2016年九月21日 13:21 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/5 "2016-09-21T13:21:44Z")

</div>

> [@ross](#):
>
> Confirm compatibility with 16.04 at this point?

Yes, it works fine.

> [@ross](#):
>
> Update the docs if this is the case?

I will update when I get to a pc.

---

<div class="post-metadata">

### Author: ![ross](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ross/32/121448_2.png) [@ross](https://meta.discourse.org/u/ross)
#### Post date: [2016年九月21日 13:57 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/6 "2016-09-21T13:57:41Z")

</div>

Cool. Thanks. Yeah, I took the plunge and got it up and running on 16.04. Really nice.

Thanks for updating the docs.

---

<div class="post-metadata">

### Author: ![sibomots](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sibomots/32/114983_2.png) [@sibomots](https://meta.discourse.org/u/sibomots)
#### Post date: [2016年十月20日 20:07 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/7 "2016-10-20T20:07:14Z")

</div>

Not feeling the joy yet.

So Ubuntu 16.04 LTS and Discourse don’t play well, or I’m doing it wrong, or I’m not worthy.

I followed the steps documented here/above among countless wiki, but I’ve narrowed the search to a couple basic sites that seem to have it sorted. My attempt, utter failure:

To summarize:

`# wget -qO- https://get.docker.com/ | sh`

yields:

```plaintext
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/3.10.23-xxxx-std-ipv6-64/modules.dep.bin'
modprobe: FATAL: Module aufs not found in directory /lib/modules/3.10.23-xxxx-std-ipv6-64
Warning: current kernel is not supported by the linux-image-extra-virtual
 package. We have no AUFS support. Consider installing the packages
 linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.
+ sleep 10

```

Oh, by the way, which linux-image\* packages are installed?

```plaintext
# apt list --installed | grep linux-image

linux-image-4.4.0-45-generic/xenial-updates,xenial-security,now 4.4.0-45.66 amd64 [installed,automatic]
linux-image-extra-4.4.0-45-generic/xenial-updates,xenial-security,now 4.4.0-45.66 amd64 [installed,automatic]
linux-image-extra-virtual/xenial-updates,xenial-security,now 4.4.0.45.48 amd64 [installed]
linux-image-generic/xenial-updates,xenial-security,now 4.4.0.45.48 amd64 [installed,automatic]
linux-image-virtual/xenial-updates,xenial-security,now 4.4.0.45.48 amd64 [installed]

```

Trying to be pin-point accurate as I’ve seen in other wiki articles:

```plaintext
# apt-get install linux-image-virtual kernel-$(uname -r)
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package kernel-3.10.23-xxxx-std-ipv6-64
E: Couldn't find any package by glob 'kernel-3.10.23-xxxx-std-ipv6-64'
E: Couldn't find any package by regex 'kernel-3.10.23-xxxx-std-ipv6-64'

```

This Ubuntu 16.04 LTS is  
`Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 3.10.23-xxxx-std-ipv6-64 x86_64)`

What’s in `/lib/modules` ?  
`drwxr-xr-x 5 root root 4096 Oct 20 14:31 4.4.0-45-generic`

Well I could probably explore why the difference between uname -r and the modules under version 4.4.0..

Anyway,… I killed that right there. Something afoot at Circle K.

I can install Docker another way – which seems to pass successfully (Applied Step 1 only to the URL below)  
See also: [https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04)

After that maneuver, I can get this:

`# systemctl status docker`

```plaintext
 docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-10-20 15:44:33 EDT; 6min ago
     Docs: https://docs.docker.com
 Main PID: 20563 (dockerd)
   Memory: 15.8M
      CPU: 239ms
   CGroup: /system.slice/docker.service
           ├─20563 /usr/bin/dockerd -H fd://
           └─20569 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-contai

Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.366962457-04:00" level=warning msg="Running modprobe xt_c
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.368208089-04:00" level=info msg="Firewalld running: false
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.380988917-04:00" level=warning msg="Could not load necess
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.529863512-04:00" level=info msg="Default bridge (docker0)
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.806550221-04:00" level=info msg="Loading containers: done
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.806589040-04:00" level=info msg="Daemon has completed ini
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.806601541-04:00" level=info msg="Docker daemon" commit=bb
Oct 20 15:44:33 foo dockerd[20563]: time="2016-10-20T15:44:33.811172703-04:00" level=info msg="API listen on /var/run/d
Oct 20 15:44:33 foo systemd[1]: Started Docker Application Container Engine.
Oct 20 15:46:54 foo dockerd[20563]: time="2016-10-20T15:46:54.882222692-04:00" level=error msg="Handler for PO

```

About the system:

`# uname -a`

`Linux foo 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 14:48:24 CET 2014 x86_64 x86_64 x86_64 GNU/Linux`

So at any rate, let’s try to make a container:

(Manually created the app.yml due to the fact the default setup doesn’t have a workaround if there’s already Apache listening on port 80. For what it’s worth I got Apache primed and ready for the container once it’s setup. So copied the standalone.yml and replaced “[example.com](http://example.com)” with the domain in question, and other port number shenanigans)

Off topic - the Apache config for the server in question (domain names changed to protect the guilty)

```plaintext
<VirtualHost *:80>
   ServerName foo.net
   DocumentRoot /whatever/foo
   ErrorLog /var/log/apache2/foo-errors.log
        <Directory /whatever/foo>
                Options FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>
    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://127.0.0.1:7654/
    ProxyPassReverse / http:/127.0.0.1:7654/
</VirtualHost>

```

Now that the app.yml is hand-edited for simply referring to the domain and port numbers (7654) as per countless wiki articles:

The response:  
`# ./launcher bootstrap app`

```plaintext
/usr/bin/docker: Error response from daemon: failed to create endpoint compassionate_stonebraker on network bridge: failed to add the host (vethe5fcb14) <=> sandbox (vethe7f312f) pair interfaces: operation not supported.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

```

So, I’m a bit perplexed:

Does Ubuntu 16.04 LTS work with Discourse? If so, what changes do I need to make in the installation process to overcome this. I’m either doing it wrong, or I’m just not worthy. Let me know.. 😉

Thanks

-sibo

ps: edits to make output cleaner. no [verbatim] type markup…

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [2016年十月20日 20:27 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/8 "2016-10-20T20:27:11Z")

</div>

> [@sibomots](#):
>
> Does Ubuntu 16.04 LTS work with Discourse?

Yes, Docker works fine on Ubuntu 16.04 when you are using a distribution supplied kernel with the `linux-image-extra` package. On Ubuntu 16.10 it seems to work out of the box with the distribution supplied kernel (at least that was my experience on Linode a few days ago).

> [@sibomots](#):
>
> Warning: current kernel is not supported by the linux-image-extra-virtual  
> package. We have no AUFS support. Consider installing the packages  
> linux-image-virtual kernel and linux-image-extra-virtual for AUFS support.

There’s your reason why Docker doesn’t work for you. Your kernel doesn’t support the required `aufs` filesystem.

> [@sibomots](#):
>
> Linux foo 3.10.23-xxxx-std-ipv6-64 #1 SMP Tue Mar 18 14:48:24 CET 2014 x86\_64 x86\_64 x86\_64 GNU/Linux

Is this a custom kernel? It seems to be quite old. Ubuntu 16.04 ships with version 4.4!

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [2016年十月20日 20:37 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/9 "2016-10-20T20:37:25Z")

</div>

Is that a DO server upgraded from 14.04 LTS? There was a post somewhere about in-place upgrades not upgrading the kernel.

---

<div class="post-metadata">

### Author: ![sibomots](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sibomots/32/114983_2.png) [@sibomots](https://meta.discourse.org/u/sibomots)
#### Post date: [2016年十月20日 20:43 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/10 "2016-10-20T20:43:51Z")

</div>

Looks like that is the issue. Yes, upgraded. Time to build kernel. thx.

---

<div class="post-metadata">

### Author: ![fefrei](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fefrei/32/119538_2.png) [@fefrei](https://meta.discourse.org/u/fefrei)
#### Post date: [2016年十月20日 21:39 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/11 "2016-10-20T21:39:31Z")

</div>

You can update the kernel like this:

1. In DigitalOcean’s control panel, switch the kernel to `DigitalOcean GrubLoader v0.2 (20160714) Ubuntu`.
2. Shut down the server.
3. Power on the VPS from the control panel.

A `sudo apt-get dist-upgrade` and `sudo apt-get autoremove` may be in order afterwards 🙂

---

<div class="post-metadata">

### Author: ![sibomots](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sibomots/32/114983_2.png) [@sibomots](https://meta.discourse.org/u/sibomots)
#### Post date: [2016年十月20日 22:28 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/12 "2016-10-20T22:28:03Z")

</div>

Thanks. But, not using Digital Ocean.

Nevertheless, new kernel build underway. Sorry for the confusion, I didn’t realize 16.04 was on the 4.4 kernel. Last time I built Linux kernels by hand, Slackware downloaded over ftp to 3.5" floppies and XWindows occupied 4 disks. Times have changed.

Edit:

To make it clear - it was my mistake. I didn’t notice the kernel version had been lagging behind the apparent dist-upgrade that I thought was successful. I should have been more alert. And to make clear - building kernels is definitely easier now than it used to be - (when there was no web, or google, or anything like it..). At least we have this site to sort things out. Thanks.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2016年十月20日 22:30 UTC](https://meta.discourse.org/t/ubuntu-16-04-lts-kernel-compatibility/41576/13 "2016-10-20T22:30:35Z")

</div>

Some providers - _cough cough_ - doesn’t provide docker compatible kernel out of the box.

That’s one of the reasons we recommend providers that you can just install Discourse without worrying about kernels before starting.
