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?
Marc-Christian Petersen:
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.
I won't use it
if it's not good enough for linus, it's not good enough for me!
Not Quite
Since Linus doesn't maintain the 2.4 kernel, that should be -
If Marcelo says no, in my kernel it won't go. (see previous story about 2.4.19-rc1)
Note that if you get your kernel from a distribution, it is most likely heavily patched.
If you don't, then you shouldn't be afraid to toss a few patches in. rmap, preempt, ac (which includes rmap): it's all in good fun.
Well, I may give it a go...
One of these days.
I have an old computer with 32MB RAM. Period. 64 MB is unthinkable due to old technology constraints.
This guy had all the trouble to find the good things and put them together. Maybe everyone here is "elite" and doesn't need this. I'm not. I'm humble and accept all help I can get.
So I really appreciate his work and wish he does more of the same.
Big thanks, Marc.
This Is What Makes Free Software Great
This guy had all the trouble to find the good things and put them together. Maybe everyone here is "elite" and doesn't need this. I'm not. I'm humble and accept all help I can get.
So I really appreciate his work and wish he does more of the same.
I concurr. This is exactly the sort of thing that makes Free Software great, and why it so frequently out-performs its proprietary competitors. (By "this" I mean the willingness for interested persons to roll up their sleaves and pick up some slack).
Linus, Marcelo, et. al. are human beings, and as such they are both fallable and have limited time and energy to devote to GNU/Linux.
I could list the various mistakes Linus has made in the past (GGI, Alsa, PCMCIA, etc.) in exhaustive detail, but the point is that, like all of the rest of us, he is fallable, and this blind worship singularly inappropriate and incompatable with the kind of critical thinking and independence required not only for a working, free community, but also for the kind of effective peer review Free Software and Open Source rely on for quality control.
These patch suites are important ... there's a lot of good work there that shouldn't be lost, most especially not simply because Linus or Marcello are overwhelmed or happen to have more important fish to fry at the moment, and projects such as this are an important part of insuring that doesn't happen, and of further refining them until such a point that they do, perhaps, get included in the main tree.
As one who has very successfully deployed XFS on several production systems I can tell you that limiting yourself to Linus or Marcelo trees out of a misguided notion of faithfulness is cutting off your own nose to spite your face ... as I said above, neither Marcelo nor Linus (nor Alan Cox) can be everywhere at once, and with only 24 hours in a day their capacity is limited by necessity. This doesn't have to mean the community must be limited as well.
Well
Yes, Linus has made "mistakes" (depending on your point of view), but he really does what he does better than probably anyone in the world. He has big things to think about like maintainability and stability and extensibility of the kernel _code_ while being as backwards compatible as possible. A couple of your examples:
1. ALSA - as soon as it is in the stable kernels, thats it. you'll have to keep the userspace API for a long time... look at the old sound API, that'll be in 2.6 along side ALSA because of userspace compatibility. Good thing he didn't merge 0.5 only to have it exist as a compatibility option alongside 0.9 for years, eh?
2. XFS - stability, sure it has been designed well and around for a long time, but that is the filesystem specification - not the Linux driver code. People get alot angrier when a stable kernel eats their data than when they have to add a patch or two to get their less stable feature in. Also merging XFS as is will take pressure of people to get its good bits merged into the VFS as a generic and clean solution.
WOLK 3.5-rc2
Now running on my machine, I might add that this is the first WOLK kernel I have succesfully booted on my PC, good work Marc.