theckman wrote:
While it would be an annoyance, I'd suggest rolling your own kernel. We try to keep our kernels as slim as possible while still providing functionality that a large number of users can benefit from. Anything outside of those features would require running the distribution-supplied kernel, or compiling your own.
LXC is based on some fairly standard features found in recent kernels (>= 2.6.29), called cgroups and namespaces, which are combined to form a sort of super-chroot() called a "container". The kernel versions that Linode runs (3.8 and 3.10) are almost always built with full container support, and an increasing amount of software (especially server software) assumes working containers. The current Linode configuration causes issues when attempting to run modern daemon management software such as Systemd and Docker, which use containers heavily.
There are a significant number of ad-hoc tutorials on the web for how to get a working container-enabled kernel on Linode, usually involving some customized distribution kernel plus pv-grub magic. It would be much easier for users if this commonly used kernel feature were enabled by default in Linode's kernels.
The following kernel options are required for a fully functioning container setup (from
http://lxc.sourceforge.net/man/lxc.html). Even if some of them can't be added to the Linode default kernels (e.g. due to being experimental), it's still useful to have as many of these as possible:
Code:
* General setup
* Control Group support
-> Namespace cgroup subsystem
-> Freezer cgroup subsystem
-> Cpuset support
-> Simple CPU accounting cgroup subsystem
-> Resource counters
-> Memory resource controllers for Control Groups
* Group CPU scheduler
-> Basis for grouping tasks (Control Groups)
* Namespaces support
-> UTS namespace
-> IPC namespace
-> User namespace
-> Pid namespace
-> Network namespace
* Device Drivers
* Character devices
-> Support multiple instances of devpts
* Network device support
-> MAC-VLAN support (can be a module)
-> Virtual ethernet pair device (can be a module)
* Networking
* Networking options
-> 802.1d Ethernet Bridging (can be a module)
* Security options
-> File POSIX Capabilities