The L4 @ UAT Project

What is the OSKit?

Quoting from the OSKit Project website:

The OSKit is a framework and a set of 34 component libraries oriented to operatings systems, together with extensive documentation. By providing in a modular way not only most of the infrastructure "grunge" needed by an OS, but also many higher-level components, the OSKit's goal is to lower the barrier to entry to OS R&D and to lower its costs.

In addition, the GNU project is using the OSKit for version 2 of their Mach microkernel for Hurd.

What is GNU/Hurd?

Even though, Linux is the kernel that almost all GNU systems are based on, few probably are aware that the Free Software Foundation's official kernel for the GNU operating system is GNU Hurd. Quoting from their official website:

The GNU Hurd is the GNU project's replacement for the Unix kernel. The Hurd is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).

Why use GNU/Hurd?
Typically in a microkernel operating system design, the kernel provides simple process support, memory management and an inter-process communication facility. All other services that are traditionally provided by the kernel are implemented as user-space programs called "servers". Theortically, we could replace the Mach microkernel that the Hurd servers run on with one of our own and still end up with a working system. This means that if we finish our microkernel, we could have a complete, working Unix-like operating system that we could actually use!

What is L4?

From the L4 µ-Kernel Family website:

Originally, L4 was the name of a second-generation µ-kernel (microkernel) designed and implemented by Jochen Liedtke, running on i486 and Pentium CPUs. However, there are now numerous implementations of the L4 API (application programming interface) on several hardware architectures.

Kernels based on the L4 API are second-generation µ-kernels. They are very lean and feature fast, message-based, synchronous IPC, simple-to-use external paging mechanisms, and a security mechanism based on secure domains (tasks, clans and chiefs). The kernels try to implement only a minimal set of abstractions on which operating systems can be built flexibly.

Why use L4? Why create an L4 microkernel if one already exists?
The L4 specification specifies all the parts of the kernel and how they must interact. This will give us focus and a goal during implementation. In addition, the L4 specification is small. I think it is resonable size project to tackle. And yes, I know that other (finished) L4 microkernels are out there. However, I want to learn about how to build an operating system. So I want to start from scratch. Plus, the fact that other operating systems exist doesn't seem to keep people from writing new ones. ;)

If GNU/Hurd is Mach-based, why are we trying to port it to an L4 implementation?

Actually, the Hurd developers want it to be ported to as many microkernels and architectures as possible. L4 seemed like a good choice because:

The L4 microkernel is a modern microkernel, which takes the microkernel concept further than the first-generation microkernel Mach did. Basing the Hurd on L4 will bring more performance, better scalability, user space memory management, user space drivers, and other exciting features to the GNU/Hurd system.

I see another GNU/Hurd on L4 project!
Yeah, I see it too, but this project seems to be dead. I have been looking at those project pages since I was in high school and they haven't changed. There CVS repository only contains a skeleton directory structure. So, I am starting this project because the open source motto is "If you want it done, do it yourself!"

A real man would code an operating system entirely in assembly language starting totally from scratch.
Kenny, you and I have already had this argument and I still think that if I successfully finish this project that I will be a kernel hacker.


2003 James Lacey