Thread (7 messages) 7 messages, 5 authors, 2015-07-30

Kernel development using linux containers (LXC ) ?

From: Greg Freemyer <hidden>
Date: 2015-07-29 20:49:45

On Wed, Jul 29, 2015 at 4:23 PM, Manish Katiyar [off-list ref] wrote:
On Wed, Jul 29, 2015 at 1:07 PM, Jeff Haran [off-list ref] wrote:
quoted
quoted
-----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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help