The Debian team implements a Linux kernel-less, FreeBSD mashup. Say goodbye to your single-kernel operating system.
The Debian project made a splash on Sunday with the announcement that two new “architectures” had been added to the Debian FTP archive. Debian has always supported a wide range of processors, though; these architectures are different and noteworthy because instead of providing Debian on different hardware, they build the OS on a completely different kernel: FreeBSD‘s. So what exactly does that mean?
The FreeBSD-based ports are sorted in with the distributions for the various processor architectures Debian supports. So far, only 32-bit Intel and AMD64 chips are supported, designated kfreebsd-i386 and kfreebsd-amd64, respectively. Both are still undergoing development, and not yet ready for installation.
What’s in a name?
The Free Software Foundation (FSF) has long insisted that distributions’ usage of the name “Linux” was inaccurate because Linux is the name of the kernel, not the rest of the operating system. However you personally feel about that argument, the Debian project has always taken it to heart. Debian is an operating system, according to the project itself — it simply happens to be one that has traditionally used the Linux kernel for its public releases. The official name of the distribution reflects that: Debian GNU/Linux.
That one-kernel situation, however, is in the process of changing. Debian has long maintained three non-Linux ports, featuring the Hurd, NetBSD, and FreeBSD kernels. Sunday’s announcement was that the FreeBSD ports were given official slots in the experimental and unstable directories. To those unfamiliar with Debian’s development and release process, the news might sound like a workable FreeBSD-kernel-driven distribution had arrived, but that is not the whole story.
Debian maintains multiple directory trees containing code at different levels of stability. The stable directory contains Debian distributions considered release-quality — and safe for general users — for many architectures. The testing directory is a staging area for packages being polished up for inclusion in stable, and unstable contains packages still undergoing development. As the name implies, the contents of experimental are bleeding-edge and are likely to contain packages that will break even if you know what you are doing.
So acceptance of the FreeBSD-based ports into experimental and unstable is unquestionably a good thing, but it does not signify a finished product. It does mean that developers and package maintainers can begin the work of importing packages for the architectures and fixing bugs.
According to Debian Developer Joerg Jaspert, the next step in the process is for the FreeBSD port team to build the entire Debian archive. After that, they can request acceptance into testing, which will eventually make its way to the next cycle’s stable. Then, as he put it, they party.
Aurelien Jarno posted a message to the debian-bsd mailing list outlining the process — first importing the basic packages needed to create a chroot, followed by tackling build issues, and so on. You can follow the progress on the mailing list. As of today, the kfreebsd-i386 directory in unstable/main contains 9748 packages, and kfreebsd-amd64 contains 9770. For the sake of comparison, the Linux-based i386 directory contains 24,728 packages, and the Hurd-based i386-hurd contains 18,122.
For that matter, what’s in an operating system?
As long as it is going to take some time before an easily installed Debian GNU/kFreeBSD is available for the average user, it is worth comparing how a FreeBSD kernel version of Debian compares to a Linux kernel Debian and to a normal FreeBSD.
The BSDs — FreeBSD, NetBSD, and OpenBSD — differ from Linux distributions both in content and in development process. An official release from the FreeBSD project includes not just the FreeBSD kernel, but all of the utilities and libraries that make up the rest of the OS. FreeBSD has its own version of ls, its own shell, and its own C library. Linux distributions almost always ship the GNU project version of these components — GNU ls, bash, and glibc.
Most utilities vary slightly between the FreeBSD and GNU versions, at the very least on the command-line switches and options, but a bigger difference is that the FreeBSD project works on all of these components itself, and in the same revision control system. The GNU project manages development of its own code, separate from the Linux kernel project, and both separate from X.org, KDE and GNOME, and a myriad of other projects whose work is assembled and packaged by the distributions.
In that sense, Debian’s GNU/kFreeBSD is far more like a Linux distribution than it is like FreeBSD. It uses the GNU utilities and libraries, and all of the standard stack and end-user applications you find in Fedora and OpenSUSE.
Thus, by running Debian GNU/kFreeBSD you will not gain most of the benefits usually cited by FreeBSD supporters, such as the BSD init system or the uniformity derived from having the same team of developers oversee the entire operating system. You will, however, see differences that come from the kernel itself.
The Debian wiki has a page detailing those differences. It lists a cleaner implementation of /dev, the OpenBSD packet filter pf, the jail security utility, support for Network Driver Interface Specification (NDIS) wireless Ethernet drivers, and future support for the ZFS filesystem (which for license incompatibility reasons is not available in Linux). The same page also notes the potential benefits of Debian GNU/kFreeBSD over vanilla FreeBSD, including the full array of Debian packages, built-in support for ext2, ReiserFS, and XFS filesystems by default, and Debian’s commitment to the Debian Free Software Guidelines in packaging. The latter does dictate, however, that all binary blob device drivers have been removed from the FreeBSD kernel used by Debian GNU/kFreeBSD.
Another purported benefit of Debian GNU/kFreeBSD listed on the page is that the FreeBSD kernel is less prone to patent or copyright challenge by hostile competitors than is Linux, on the basis of its tighter team of developers. That argument is unlikely to sway many opinions, however.
Although it is not installable yet (at least for the average user), Debian GNU/kFreeBSD is an important project to watch — not because it doesn’t use the Linux kernel, but because it road tests the proposition that you can mix and match any components you want in a free software system, and does so on a large scale. We have seen cross-pollination and cooperation between desktop environments, applications, and even libraries, and the results are almost always excellent. But so far, cross-pollination between entire operating systems has been comparatively rare. The Gentoo/Alt project has attempted to do similar non-Linux-kernel builds for several years, and Nexenta OS uses a GNU-based system with the OpenSolaris kernel. Another independent variation, especially one with the Debian project’s resources and developer-power behind it, will at the very least push the envelope of free and open source software. Which direction that push will take it is anybody’s guess.