Wednesday, December 13, 2006

Binary kernel modules are dead in 2008--now what

It was decided today on LKML that starting in January 2008, binary modules are no longer going to be loadable in the Linux kernel. This has some rather major consequences for a number of virtualization technologies.

Parallels, Win4Lin, kqemu, and VMware rely on binary modules for their Linux products. I suspect all of these products will have a hard time moving their code out of kernel space seeing that it's performance sensitive. So what are they all going to do? I see three possible options: 1) drop Linux support (Win4lin and kqemu disappear completely) 2) build a minimal kernel interface to privilege state and try to develop fast userspace interfaces. I can't see how one could do a fast userspace shadow paging implementation though. 3) open source the kernel bits.

Everyone's focused on management now right? Can you imagine if the VMware binary translator was GPL'd? Kudos to the kernel developers for finally doing the right thing here.

Update: Linus is insisting that the distros merge this patch first before he'll take it.

Wednesday, December 06, 2006

Coherence for the rest of us?

There's quite a buzz about Parallels new coherence technology. In principle, there's nothing that exciting going on here from a technology perspective but what we have is the result of competition. Basiclally, Parallels is serving a very useful market that VMware has forgotten -- the minority home user. Coherence allows you to run a virtual machine and have individual applications display their windows in the host OS. Essentially, you have a small program running in the guest OS that exposes the window for an app in the host. This is similar to what Meta-VNC is already doing with VNC. The nice thing is that they've packaged it all up in an easy to use form. So, running Windows apps on Mac OS X is nice and all but what about us Linux users? Well, I've done a little bit of research here and it looks like there are a number of tricks you can do in Windows to get an image of an app. The best way seems to be WM_PRINT/WM_PRINTCLIENT except that it requires support from the application. I don't know how many apps support this since WM_PRINTCLIENT is not handled by the default message handler. I'm thinking of starting though with the opposite case. Let's expose a single application from a Linux guest via VNC. The obvious way to do this is with a special X server. You simply launch your VNC X server on a new display, and then launch your app with the proper DISPLAY environmental variable set. We'll need a custom X server that can actually know how to render the individual windows of course. Plus, popups are going to require some VNC extensions. It should end up being pretty neat though. Definitely a fun little project. Is it useful to run Linux apps under Windows? I don't know. It's a fun project though :-)