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 - ManishI'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