Kernel development using linux containers (LXC ) ?

Greg Freemyer greg.freemyer at gmail.com
Wed Jul 29 16:49:45 EDT 2015


On Wed, Jul 29, 2015 at 4:23 PM, Manish Katiyar <mkatiyar at gmail.com> wrote:
> On Wed, Jul 29, 2015 at 1:07 PM, Jeff Haran <Jeff.Haran at citrix.com> wrote:
>>>-----Original Message-----
>>>From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies-
>>>bounces at kernelnewbies.org] On Behalf Of Manish Katiyar
>>>Sent: Wednesday, July 29, 2015 11:51 AM
>>>To: kernelnewbies
>>>Subject: Kernel development using linux containers (LXC ) ?
>>>
>>>Hi,
>>>
>>>I've been playing and reading about control groups and linux containers
>>>recently and was wondering if there are any existing recipes on how to setup
>>>a kernel environment in containers. Google hasn't been helpful so far (or
>>>maybe I'm not searching properly).
>>>
>>>I've used VMs for dev in past (Qemu, uml etc.), but looks like it may be
>>>interesting to have it in containers. Given that they share they same OS image
>>>as host, I'm not sure if its possible without making the host OS crash.
>>>
>>>Any suggestions.
>>>
>>>Thanks -
>>>Manish
>>
>> I'm not sure what your goal is here, but it sounds to me like you might want to be googling for "linux namespaces".
>
> I'm sorry. I see that my previous mail had a key word "development"
> missing. What I was trying to find out was that is it possible to
> setup and use linux containers/cgroups to do kernel development.
> Things like writing and test kernel modules, debugging kernel,
> attaching gdb etc. etc. which normally require Qemu, busybox or other
> VM techniques since containers are much lightweight and if anyone has
> recipes for that setup to do development without crashing the host OS.
>
> Any hints appreciated. I looked for "linux namespaces" but it doesn't
> give me what I want.
>

I have no first hand experience, but I don't think containers have the
flexibility you need.  Docker in particular shares the kernel with the
host OS as far as I know, so it would not be of any value that I can
see.

I think a unikernel may be what you are looking for:

http://www.linux.com/news/enterprise/cloud-computing/821243-unikernel-use-cases-containers

My understanding is that with a unikernel you can move targeted
portions of the Hypervisor kernel up into the unikernel.  Thus if you
wanted to work on a network driver, you could implement it in a
unikernel.  Then if it blew up you would fall back to the hypervisor
level, kill the unikernel and try again.

The Rump kernel (a unikernel) in particular might be a good option:

==
Rump Kernels —  provide free, portable, componentized, kernel quality
drivers such as file systems, POSIX system call handlers, PCI device
drivers, a SCSI protocol stack, virtio and a TCP/IP stack. These
drivers may be integrated into existing systems, or run as stand-alone
unikernels on cloud hypervisors and embedded systems.
==

I have no first hand experience with the Rump Kernel, so I don't know
if it would work as a way to do linux kernel development or not.  It
certainly seems like a great environment for generic kernel
development.

Hope that helps
Greg



More information about the Kernelnewbies mailing list