On February 8, a terse announcement to the LKML list stated: "A quick note to
tell anybody interested that zeta-0.1 is out. It may be of
interest for those who are trying to understand the kernel internals,
and don't want to bother big kernel guys. Best wishes, Thomas." Curious? We
were. What we found is an interesting education exercise that perfectly
illustrates the "itch-scratching" principle at work in the Open Source
When Linus Torvalds posted to the comp.os.minux newsgroups on August 25, 1991,
he said of his new creation Linux: "It is NOT portable (uses 386 task switching
etc), and it probably never will support anything other than
AT-harddisks, as that's all I have." Yet today, Linux has been ported to nearly every
platform: ARM, SPARC, MIPS, IBM 370/390, embedded processors, Motorola and
Compaq chips, RISC, AS/400, Beowulf clusters, and so on.
It appears Linus was wrong. So what's an industrious would-be kernel hacker to
do? Engineer a totally new architecture just to be able to port Linux to it?
Not practical. So Thomas Capricelli did the next best thing: He created a
virtual platform called Zeta. Now he's working on porting the Linux
kernel to it. Why? Because he wants to dig into the kernel internals. "Porting
Linux to a new platform has always been one of my dreams," he writes at the project Web site.
Of his desire to have an intimate knowledge of the kernel Capricelli says, "It
happened. I'm interested in low-level coding, manipulating hardware, registers,
bitfields and so on. It's really what computers are all about. Then, you have
the upper layers (userspace, GUI, specialised applications) that are of
interest for 'non-computer' people. I mean, a biologist programming a software
is 'using' the computer technology. I'm interested in the real computer stuff.
To make a parallel with math, I see kernel programming more as a pure computer
science, as opposed to applied computer science."
Capricelli counts November 2000 as the beginning of Zeta, when he made the first
cvs commit. Since then, he says, the time he was able to spend on Zeta was
"I did most of the work in chunks. And when I released 0.1, I hadn't done much
for several months." But when the announcement was made on the LKML, he received
dozens of inquiries from people expressing interest in the project. "My apache
shows that around 1,500 people visited the homepage (around the time of the
release). Some came to talk with me on IRC. And one did actually send me some
patches, I even integrated some of those."
Right now, Capricelli is focusing on getting Konqueror/embedded and the
Trolltech Qtopia running on the platform, using a framebuffer device. "I see
that as a demonstration of how powerful the free software is. By having the
source of everything from the assemble to a really great web browser, I'll be
able to use all of this code with no need to create anything. 'All' means the
assembler, compiler, linker, kernel, uclib, qtembedded, konquy-embedded
and Qtopia. Concentrating only on these specific parts of the architecture, I
get a fully functional system."
"There's really no 'end' to this kind of project."
Capricelli's Zeta project might seems frivolous given that there is no actual
Zeta platform. But Capricelli and others see it as a learning tool, one that
could be used in college-level programming courses. "I agree it could be a great
cause you can play with that as you would from a real board, but without
the cost of prototypes or evaluation boards. And you can upgrade the hardware."
He suggests that eventually Zeta might be a good tool for testing pieces of
kernel code, "but in the current state, it's certainly not a good idea."
As the project matures, Capricelli plans to keep it maintained by closely
following actual kernel development."Ideally I would have enough time
to contribute to some of the kernel ports. Working on a virtual target is
great, cause you learn a lot the easy way. But I think nothing is as great as
doing real-life stuff."
And that's what Capricelli truly yearns for. He wants to "do some real kernel
hacking stuff. Maybe I'll begin by working on some janitor project, or with some
drivers on non-i386 architecture. I would prefer working on the m68k or PPC."
For now though, Zeta remains his baby. "Because I'm doing Zeta to learn, I don't
really need help on the kernel part. But as I have a very rough virtual computer
right now, anybody wanting to learn kernel programming can, for example, make a
network device in the emulator, and make a zeta-linuz kernel driver for it."
Another way to get involved in the Zeta project: help with the binutils.
"I've done them quickly and the ports aren't finished. I can't compile a
user-space program, for example. That will surely be a blocking problem soon.
"People interested in the emulator can help, too. The one I've done is not
optimized or full-featured, and I can easily point people to places
where there's room for improvement.
"Anyway, the first thing to do would be to come and talk with me
about that. Don't be afraid of IRC." You can reach Thomas Capricelli online at
irc.openprojects.net, #freehackers, nickname Orzel.