Marc-Christian Petersen originated the WOLK project in March of 2002. WOLK is the Working Overloaded Linux Kernel, a large set of nearly 450 useful Linux kernel patches applied against the current stable 2.4 tree. The project has recently expanded to offer a second 'secure' patchset, this one against the older stable 2.2 tree.
In this interview, Marc-Christian Petersen tells the history behind WOLK and discusses many of the patches included.
Randy Hron: What is the WOLK project and why are you doing it?
Well, the Working Overloaded Linux Kernels are normal Linux Kernels with a huge set of patches/features and bugfixes for the Linux Operating System. Some months ago a friend of mine visited me. We talked about Linux and I showed him what I did. He just said: "Why the hell you don't make it public to the world?" ... I thought about it, and he was right.
The story behind WOLK:
I do patching the Linux kernel since years, just for my personal use and my pleasure (ipsec, xfs, security related patches etc.), because there are so many features for the kernel that are not in mainstream, even though they have been proven stable for years.
Last year I was impressed by the FOLK (Functionally Overloaded Linux Kernel) and hoped I can stop kernel patching (it's a time consuming job ;). I had a look at it, tried to compile some or all of the new added features, but it fails, disabled all the new features, and it fails too. So it was totally useless for me. Anyway, the FOLK project and the idea itself is great and I think it runs fine for some people.
I went back to patch kernels myself ... I used vanilla kernels for my patchbase, applied patches which I use, some additional bugfixes and that's it. Almost one year later, at the beginning of March, 2002, a friend of mine visited me. We talked about Linux, especially the kernel, and I showed him, what I do with the mainstream kernels. He was really impressed by my work! He "forced" me to make it public and give it a name. But both of us were totally clueless what name that kernel should have ...
Some days later another friend of mine (darix) and I met on the internet relay chat (irc), I told him I want to make my kernels public, but what name should it have? Similar to FOLK, but working? He just said: "Call it WOLK for Working Overloaded Linux Kernel!" - It was simple and it was a great name for it, because it's exactly what it do/what it is. WOLK was born :-)
WOLK's are development kernels/patchsets for testing purpose only. WOLK can not guarantee stability, even though WOLK based on vanilla kernels! Users should test them out if they works fine for their systems before they give it a try on a production system! Every release is gone bigger and bigger and it's a hard work to integrate such a big number of patches successfully to make them working together. Some patches I don't really use, but there are many others out there who use it.
The purpose is also to provide a service for developers and end-users who can't be up to date with the latest official stable kernels/patches, but want to test many features out there linux can use. Also I want to prevent users of "wasting" their time to do such a job. The last years I always hoped there were some ppl doing it, but there weren't any. I don't mean small patchsets. There are many great kernel hackers, but finally they only patch their kernels for their private use, not what others want to have.
Also I want to give some great patches (and also their developers) a wider publicity, because some of them are not well known or widely spread (like IMQ in the upcoming 3.5 release of WOLK).
Anyway, I use my WOLK's with all of my pc's (x86 arch only :-() and have no problems at all :-)
RWH: WOLK has a lot of features. IBM's JFS and SGI's XFS journaled filesystems, User Mode Linux, the TUX in kernel webserver, kernel preemption, Direct Rendering Manager for XFree86 4.2, the FTP filesystem, Crypto IP Encapsulation, grsecurity, and lots more. Which WOLK features do you personally use on your systems?
Marc-Christian Petersen: I personally use many of them. First, I use the really great grsecurity patch by Brad Spengler and Michael Dalton and also the ACL subsystem of that patch. It's amazing to take away capabilities and other features of the superuser and grant them back only if needed, or only for predefined applications. Restricting users is a Must-Have I think, e.g: they only see processes those the user run, not what all other users run including root and have visible PID's and so on.
Also I use the Preemption and LockBreak feature by Robert Love which is a real improvement of the mainstream kernel (what a luck, it is in the 2.5 devel tree now ;) ... I don't use my systems for just only doing 1 or 2 user processes, play some games and compile a kernel. I need a system which is fast as stable, even under high load and high I/O. If you compile more than one kernel tree at the same time (yes, I really do that), maybe hear to some mp3 music w/o dropouts and also want to see a movie while you are hacking the kernel then you need fast responsibility. With the Preemption Project I have the ability to do it and I love it :)
Another feature I use is the ftp-filesystem feature. Sure, ftp is a simple, outdated protocoll without encryption, sending data in plaintext over the wire etc., but FTP is still alive and widely used. I like to integrate some ftp servers into my local network structure and access them as all my other local files.
WOLK includes the journaling file systems ext3, XFS, JFS. I personally use only ext3 and sometimes XFS for testing. I don't had the time to test out XFS and its stability nor I had the time for testing out JFS. I prefer ext3 journaling filesystem. I use it since it exists for the public and I didn't had big problems with the first versions and no problems with all the other versions.
You can call me an "Always want to have|test the newest versions" guy, therefore I also use the DRM Code for XFree 4.2.0 DRI usage. There is no need to build it seperately as modules if you want to use XFree 4.2.0 with DRI support (it's essential to play games at an acceptable speed). The only thing I really do not understand is why it's not in the mainstream kernel, even not in 2.4.19-pre10. The new DRM Code is available since January, 2002. I've send Marcello the diff for the 2.4pre Kernels. Let's have a look when it is applied :-)
Well, nowadays I think encryption is a Must-Have for many people. I personally use many of them integrated into WOLK like FreeS/WAN (ipsec) with x.509 certificates, grsecurity as told above, CIPE and of course the International Kernel Patch (CryptoAPI). I like to encrypt my connections to other servers, encrypt my whole partitions, use encrypted home directories and so on. It's simply great!
Another one is ALSA (Advanced Linux Sound Architecture). This doesn't give me real improvements compared to the standard Soundcore of the Kernel itself, because the only thing I do with my soundcard is to listen music and sound, nothing more. I also have a SB AWE32 with many megabytes of RAM for loading Soundbanks into the cards memory, but hey, where can I buy some time to make music?! :-) ... Since I was a teeny it's a dream of mine making some professional music :) Well, many people use ALSA for such things. ALSA gives you improvements for the MIDI stuff and it also supports newer soundcards like newest SB Audigy with better sound quality. WOLK does not remove the kernel soundcore, because some users still use it. This is the prefered way for new integrated patches in WOLK to obtain multiple choices. "Hey, decide yourself what you need!" :)
Two other interesting and speed improvement features I use are Memory Pools by Ingo Molnar and Compressed Cache by Rodrigo Souza de Castro. Memory buffer pools are mostly used for guaranteed, deadlock-free memory allocations during extreme VM load and also a great speed improvement. Compressed caching is the introduction of a new level into the virtual memory hierarchy. Specifically, RAM is used to store both an uncompressed cache of pages in their 'natural' encoding, and a compressed cache of pages in some compressed format. By using RAM to store some number of compressed pages, the effective size of RAM is increased, and this way the number of page faults that must be serviced by very slow hard disks is decreased. If you are building WOLK for a workstation and want to use Preemption and Lockbreak _and_ Compressed Caching at the same time, this _can_ cause problems, e.g. lockups and freezes, but if you are building WOLK for a server and/or production system Compressed Cache is what you want to use w/o Lockbreak and Preemption. Anyway, Rodrigo is working on it to fix that issue :)
The last one I want to introduce is SuperMount by Juan Jose Quintela. This is great! SuperMount has the ability to access your cd's/floppies on the fly without need to mount / umount them every time. I use it on all my workstations.
There are so many other patches in wolk, but to introduce them all I have to write a book, not doing an interview :-) ... Now you have an overview what patches and features I personally use for my pleasure.
RWH: There are almost 450 patches included in WOLK 3.4. Where do you find them all?
Marc-Christian Petersen: Well, they were really hard to find. But I didn't search for them to make a "superior elite kernel" or kinda that because of those big numbers of patches. No. Many of them are bug fixes or enhancements or just "do it the other way" patches. Many of the Bugfixing ones I found in the Red Hat Kernel Package and also some of them in the SuSE Kernel Package. All others I've found by reading the Kernel Mailinglist, talked with other kernel hackers on irc channel #kernelnewbies, reading the homepage of kernelnewbies.org and also I've got some requests of users what they want to see in WOLK . Some of them I modified myself, for example "Memory Pools". The original patch forces the user to have it always enabled and no chance to disable it at compile time, but I like the "Hey, decide yourself what you need!" way. Also the original LSM/SELinux Patch forces the user to have a LSM-enabled Kernel which breaks some other things if you don't know how to handle it. I like to decide if I need it or not in some circumstances. That are just examples, there are a few more of them. It took a lot of time reading websites/mailinglists, sourcecode reading and also testing them to see if they works well es expected or breaks any other patch. As you can imagine, I cannot test all variants a kernel configuration could have and also I cannot buy all the hardware you can buy on this planet. So we depend on the end-users and other developers to find out bugs or strange behaveness or kinda that. That's why I love opensource software. Fixing problems is extremely faster and easier than for closedsource software.
RWH: Wow, there's some features I'll have to try in my benchmarking effort.
Marc-Christian Petersen: :-) ... We are working for an inclusion of the O(1) Scheduler also, but this needs to be modified so it is also selectable via kernel configuration. The O(1) Scheduler gives you a performance boost only if you have more than ~ 200 processes, everything below will just slow down your machine alot. Some users are not building WOLK for a production server but for a workstation machine and do not need O(1) functionality. It's again a "Hey, decide yourself what you need!" feature :)
RWH: Two final questions....
Marc-Christian Petersen: Oh, you don't want to know more? ;-)
RWH: When did you start using Linux?
Marc-Christian Petersen: I don't really remember when I start using Linux. I had a first look at Linux some days after the release of version 0.1 in the middle of 1993, but it wasn't usable for me. It was nice to play with it and to learn Linux/UNIX features, because I never saw any UNIX before. But I was impressed by the idea of Linus to share the source with all and to have a free Unix-clone. I start using Linux and not only "play" with it when Kernel 1.2 was released, till now :-) I think it was in the year 1995.
RWH: What can people do to help with your project?
Marc-Christian Petersen: People can do bugtesting and also try to fix bugs especially on non x86 archs. Unfortunately I have x86 arch, none alpha, ia64 or similar. Please send me a real bugreport and not "Does not work, can you fix it?" messages. As you can imagine, no one is able to fix a bug with such a report.
People who have a good mind for it could include outstanding patches to newest WOLK versions. There are some outstandings like MOSIX, O(1) Scheduler, RSBAC, different boot logos and so on. It is a hard work to integrate them successfully and to have full functionality of those patches with no conflicts. I can not do all the work, and if i must do it, it takes time. I have a job to do, have a girl friend, some friends; all of them wants to have some time with me ;)
Fortunately there are active helpers for WOLK. At first now I have one co-developer for my project, Michael Gasperi. He's a great helper for WOLK and for me. He did the integration of LSM and LIDS! Dominik Perpeet helps me when my knowledge and logical understanding of C/C++ is not enough and another helper is packager Matthias Wolle. He will do some Debian packages of upcoming WOLK versions. Anyone interested in doing Redhat packages? :)
It would be also great if users of WOLK and my 2.2.21-secure tree, can send me their .config, dmesg output, lspci -v -v -v output files. This way I can see which configurations WOLK is doing fine. I will put them up on the upcoming, completely new designed homepage for wolk. The page will be up in ~ 2 weeks or less, reachable at http://wolk.sourceforge.net
RWH: Thanks for the great interview. :)
Marc-Christian Petersen: I do my best :-) Thanks for the interview. That give us a big chance for more publicity, better understanding why we do it and what wolk is and, you said it, help for my project.