The purpose of this page is to demonstrate that kfreebsd-i386 meets the archive criteria.

Requirements for architectures

Is port cursed?


Are machines available to general public?

The architecture is publicly available without NDAs via:

  1. https://www.ibm.com/

  2. https://www8.hp.com/

  3. https://www.dell.com/

  4. etc ad nauseam

Is full source available?

Source of the whole port is available. Most of the packages use the same sources as the official Debian ports. A few packages that need to be patched are in a separate repository called unreleased until the Debian maintainers merge the patch.es Sources of those packages are also available.

There's support for emulating Linux-i386 binaries. However, it's not possible to use these as a base for our port.

Why not? Why is it not possible to add a small kfreebsd-tools_i386.deb and then use a Linux userspace with a few extra freebsd tools and a freebsd kernel? -- ajt@d.o (2007/06/19)

Currently there is no support in STABLE kernel series for Linux 2.6.x, (even for x=0). Linux emulation even in CURRENT will be still behind official Linux kernel, so as a result, there still would be unimplemented syscalls - http://wiki.freebsd.org/linux-kernel. The result of this would be silent breakage of programs. 

It is impossible to mix FreeBSD syscall convention with Linux syscall convention in one binary (including used shared libraries). In this context, it is hard to imagine how to prepare kfreebsd-tools_i386.deb. 

Also please note there already exists kfreebsd-amd64, but no emulation of Linux-amd64 binaries at all. 

-- Petr Salinger

Using Linux emulation is currently not possible without using a chroot, because of path and filename collisions (mostly libraries). This will be solved by multiarch if/when available.

Also it only works for binaries that are not accessing directly or indirectly the hardware. For example running a GNU/Linux X.Org is difficult because it needs to access the graphic card, and even if it works, your GNU/Linux Gnome or KDE won't be able to communicate with the FreeBSD kernel via HAL to be informed of new devices (an USB disk for example).

-- Aurelien Jarno

Also, in case a knetbsd-i386 port ever existed, it would have the possibility to re-use our binaries, since kernel of NetBSD has kFreeBSD binary emulation.

What drawbacks does kFreeBSD binary emulation from a NetBSD kernel have? -- ajt@d.o

Current NetBSD does not provide full emulation of used syscalls. Some important syscalls (like sigaction, statfs, swapcontext) are missing at all, required support in sysarch() for thread local storage is also missing. Compare http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/syscalls.master and http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/compat/freebsd/syscalls.master

It might get better in future and the following will apply.

From http://www.netbsd.org/Documentation/compat.html#performance

"Since the only additional overhead is the mapping from emulated system calls to native NetBSD system calls, and the reformatting of any parameters, if needed, the performance is really, really good. A rough estimate would be at most a 1-2% performance impact; if you call 2% impact. This varies depending on which system calls a program uses. Most mappings take <1% of the time the actual syscall takes to run." -- rmh

Are there 3 or more developers (or n-ms) actively maintaining the port? Who are they?

The port is maintained by the following developers, who are familiar with arch-specific issues for this port:

  1. Robert Millan
  2. Aurelien Jarno (Debian Developer)
  3. Petr Salinger
  4. Gürkan Sengün
  5. CyrilBrulebois (Debian Developer)

What sort of architecture is this? Desktop/workstation? Mainframe/supercomputer? Embedded? Something else?

General purpose (like linux-i386).

Does it have any users? If a desktop system, are there Debian admins who run Debian systems on the arch? If an embedded system are there real systems shipping that a Debian port will be useful for? If a mainframe system are there real systems with many users that a Debian port will be useful for? Who are they?

As of 2007/07/27:

The port is being actively used at the following sites:

  1. io.debian.net, with 110 users (check dynamic user counter).

  2. https://web.archive.org/web/20151026134155/http://asdfasdf.debian.net:80/, with 43 users (check dynamic user counter).

  3. friki.frikazos.com, with 12 users. (TODO: seems to be down)

The following lists of users are available:

  1. http://buildd.net/cgi/archvote.phtml, lists 49 users.

  2. Debian_GNU/kFreeBSD_userlist, lists 12 users (This list is deprecated in favour of the previous one, and currently has no duplicates.).

  3. Popcon, lists 13 users.

  4. BSD Stats, lists 2 systems.

Is there kernel and toolchain support? At what level? Are the latest versions supported, or are legacy releases required for compatability with some hardware? as the ABI stabilised, or are there major ABI changes coming up? Is the ABI stable enough to ensure users will be able just apt-get dist-upgrade from one version to the next?

The kernel is supported in upstream by the FreeBSD project as the main architecture. We are using a few patches to the kernel that are maintained by ourselves.

The GNU libc is maintained by ourselves. The ABI is stabilised and minor changes are handled using versioning. Therefore, users are able to just apt-get dist-upgrade to update their system and that will be the case in the future.

GCC is supported out of the box in upstream for the i386 part. We are maintaining the GNU/kFreeBSD part, it only consists of a few files in the gcc/config/ directory.

binutils is supported out of the box in upstream for the i386 part. We are maintaining the GNU/kFreeBSD part, it only consists of a few cases in the various scripts.

Libtool supported out of the box in upstream.

How do you install a system? (URL to a HOWTO)

Has a buildd been setup? How much of the archive has been built (count by source package, builds of old versions are fine for this case)?

Two buildds for each architecture (for redundancy) are running since summer 2005.

As of 2000/04/05 over 80% of the sid source packages have been built. For number of up-to-date packages see http://unstable.buildd.net/buildd/kfreebsd-i386_stats.html.

Why has 23.2% of the archive failed to build? -- ajt@d.o 

{{{ Frequent failure reasons:


What hardware is potentially available as a fast buildd?

Currently the buildds (Core 2 Duo E6550 / Athlon X2 5400+) are building package during 15% of the time for each.

If you have a lot of money, yes you can have faster hardware

Is there any corporate support of this arch, and the Debian port in particular?

The following companies are providing corporate support for this architecture:

  1. https://www.ibm.com/

  2. https://www8.hp.com/

  3. https://www.dell.com/

Currently no companies provide corporate support for GNU/kFreeBSD.

Is there an example box developers can login to to see if it works?

The following machines are available to developers:

  1. io.debian.net - maintained by Aurelien Jarno and Gürkan Sengün, connectivity by ETH Zürich, Department of Physics. How to access it for Debian developers

  2. asdfasdf.debian.net - maintained Gürkan Sengün and Aurelien Jarno, connectivity by ETH Zürich, Department of Physics. How to access it for Debian developers

  3. friki.frikazos.com - maintained by Hector Garcia (access on request).

Further requirements for OSes

Are there existing comprehensive free distributions of this OS? If so, why is a Debian distribution useful?

No, this is the first GNU/kFreeBSD distribution. We do use the same kernel as that of FreeBSD, though. For the benefits of Debian GNU/kFreeBSD versus FreeBSD, see Debian_GNU/kFreeBSD_why.

Please summarise in place. -- ajt@d.o 

OK,  copy and paste from  Debian GNU/kFreeBSD why:

'''Why would you prefer Debian GNU/kFreeBSD to FreeBSD?'''
 * If you like the Debian package system (or its package set) more than FreeBSD ports (just a matter of preference).
 * If you like GNU userland more than BSDish one (again, just a matter of preference).
 * If you don't have anything against GPL or other copylefted free software licenses, you'll appreciate that useful kernel modules like ext2fs driver, the upcoming reiserfs and xfs, or the upcoming ethernet driver for Xbox are (or will be) compiled in on the default kernel.
 * If you're concerned about running a 100% free system, our commitment to the Debian Free Software Guidelines (DFSG) guarantees that Debian GNU/kFreeBSD doesn't contain any non-free software.  In fact, we have removed some non-free binary-only drivers that are contained in the upstream FreeBSD tree, like the ath driver.

What demonstrable benefits does this OS have over existing Debian OSes?

With Debian, you have several dimensions of freedom of choice

GNU/kFreeBSD will enhance dimensions of

See also Debian_GNU/kFreeBSD_why.

Please summarise in place. Note that benefits need to be demonstrated and 
verifiable, not just asserted. -- ajt@d.o 

OK,  copy and paste from  Debian GNU/kFreeBSD why:

'''Why would you prefer Debian GNU/kFreeBSD to Debian GNU/Linux?'''
 * Cleaner or more standard kernel interfaces:
   * Single /dev implementation via devfs, instead of the 3 discordant ways of handling /dev that Linux provides.
   * OSS as the default sound system (i.e. the standard interface supported by almost every Unix-like system around).
   * OpenBSD Packet Filter (pf).
 * Other nice security features, like [http://www.freebsd.org/cgi/man.cgi?query=jail jails].
 * kFreeBSD developers often have more interest in merging new features rather than spawning forks all along (the port to Xbox is a very good example.  See the responses from [http://www.uwsg.iu.edu/hypermail/linux/kernel/0307.1/2019.html Linus Torvalds] and [http://lists.freebsd.org/pipermail/freebsd-arch/2005-October/004519.html kFreeBSD developers]).
 * Some people say that kFreeBSD has better performance and/or stability (especially in disk/filesystem areas).
 * The FreeBSD kernel might support some hardware which Linux does not support and/or the FreeBSD kernel support might be better (less bugs).

http://www.freebsd.org/features.html lists a bunch of interesting features in FreeBSD (most of which apply to the kernel, and hence are shared with GNU/kFreeBSD).

http://bulk.fefe.de/scalability/ has a list of benchmarks that compare kFreeBSD 5 with Linux 2.6.  The benchmarks claim that kFreeBSD performs better than Linux on network connections under high load (~4000 open sockets).

* ZFS support (packaging in progress)

Does this system have a standard Unix API?

Yes (Glibc).

Does the OS support modern glibc and gcc?


In the case of glibc, we're still in the process of merging patches, but there is a modern glibc available, ie glibc 2.9.

For gcc, gcc-3.3 through gcc-4.3 and gcc-snapshot (Debian packages) are available. All languages are enabled, including Ada (only on kfreebsd-i386) and Java.

What is the license on the kernel and libraries? Is it free? Is it GPL compatible? (Note that if it's not free, building software for it violates the Social Contract; and if it's not GPL compatible, GPL software such as dpkg can't be linked to it)

Kernel and some libraries that come from FreeBSD are licensed under the BSD license (without advertising clausse), and GNU libc is under the LGPL. Both are free and GPL-compatible.

Note: The vanilla upstream kernel contains a few non-free drivers which were removed. It also contains some GPL components. See the debian/copyright file for details (package kfreebsd-source-x.y).

Does the OS build largely without source changes? If so, what proportion of the archive has built?

We actually have two repositories, one called unstable for packages built without source changes, and another called unreleased where packages that need to be patched stay until the patch has been merged by the package maintainer.

As of 2008/07/15:

As 100% is taken 7600 packages (there are 7577 arch any packages, 7906 packages are not arch all). Of course all 4717 arch all packages are also available.