The State Of Gentoo FreeBSD: Gentoo Sans Linux

Posted by Michael Larabel on July 03, 2012

To some surprise, Gentoo FreeBSD -- the port of Gentoo running with the FreeBSD kernel rather than the Linux kernel -- is progressing.

Following last month's Phoronix articles of DragonflyBSD 3.0 vs. Debian GNU/kFreeBSD Wheezy and Debian Wheezy GNU/kFreeBSD: Slower Than Linux, Gentoo FreeBSD was brought up within the Phoronix Forums. Gentoo FreeBSD is just like Debian GNU/kFreeBSD, except that it's built around Gentoo rather than pairing the Debian GNU user-land with the non-Linux kernel.

There's also a Gentoo OpenBSD version, but the OpenBSD kernel port for Gentoo isn't as advanced or maintained as the FreeBSD version. Ryao, a Phoronix reader and Gentoo developer, wrote in the forums with more details about the state of Gentoo FreeBSD.
unmaintained/broken probably better describes Gentoo OpenBSD, which currently only lives in our hearts. Gentoo FreeBSD is in fairly good shape, but very minimal development was done due to a lack of developer resources until late last year/early this year. Around that time, the pace of development started to increase. This enabled us to reach a few milestones in the past few months:

1. Gentoo FreeBSD gained amd64 support
2. Gentoo FreeBSD has been updated to FreeBSD 9.0
3. Clang now compiles Hello World programs and nearly all of the packages in the @system set
4. Users can replace pkgconfig with the BSD-licensed pkgconf. This removes the @system set's dependency on glib, but it is not *BSD-specific.

There are some notable things that currently do not work, but most of them have workarounds:

1. GCC 4.6 and up are unable to compile the bootloader. This one is an upstream issue, but people are working on it. For the time being, use either GRUB/GRUB2 or compile sys-boot/boot0 with GCC 4.5.x or earlier.
2. multilib support is broken. Do a 32-bit chroot/jail.
3. GNU Screen is broken. Use tmux with GNU Screen bindings.
4. The X server has not been tested in years. X11 Forwarding works, KDE builds and the Nvidia driver supports the platform.
5. Machine virtualization is in bad shape. KVM client support is in portage, the bug tracker has an ebuild for qemu-kvm and kernel modules for KVM host support are in development. The bug tracker also has an ebuild for open-vm-tools-kmod. Ebuilds to support virtualbox's guest addons and open-vm-tools' userland utilities are planned.
6. Linux emulation support lacks 64-bit support. This is an upstream issue. You can get away with 32-bit binaries for now. No one is working on this one.

There are only a few people (out of roughly 260 Gentoo developers) actively making commits for Gentoo FreeBSD and our time is limited, but development is going at a good pace. I hope to see Gentoo FreeBSD reach parity with Gentoo Linux sometime next year. And by parity, I mean ahead in some areas (e.g. ZFS, Dtrace, Jails, Clang), behind in some areas (e.g. 3D graphics, ISA support, embedded software support) and equal in most areas.

As far as installing Gentoo FreeBSD is concerned, there is a very helpful wiki page on the procedure that a retired Gentoo developer wrote (after he retired):

http://wiki.gentoo.org/wiki/Gentoo_FreeBSD

Just make sure that you build sys-boot/boot0 with GCC 4.5.3. You can do this by doing `emerge sys-devel/gcc:4.5` and then `env CC=gcc-4.5.3 emerge --oneshot sys-boot/boot0`. As for building the kernel, you can install Clang and then use CC=clang when building it to build it with Clang. Also, I know that you like to build things with generic CFLAGS, but unfortunately, that is ridiculous when one of the major strengths of your distribution is that you can customize the CFLAGS with basically no effort. As such, I would like to ask that you test two versions of Gentoo FreeBSD. One with whatever you normally use and another with CFLAGS="-O2 -march=native" CXXFLAGS="${CFLAGS}" in /etc/make.conf. That should produce a fair comparison.

Also, if you want to test a Clang-built system, you can try something like `env CC=clang CXX=clang++ MAKEOPTS=-j5 emerge --keep-going --jobs=5 -ave @world`. That will attempt to rebuild everything with Clang and give you another OS configuration to test. 5 to 6 packages will fail (boot0 included if I recall). There are patches in the bug tracker for most of them. Binutils will also among them, which is due to a regression in 2.22 that we have not had time to fix. Binutils 2.20 is not affected.
More information on Gentoo FreeBSD is available from the Gentoo Wiki.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  2. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  3. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
  4. AMD Radeon Gallium3D More Competitive With Catalyst On Linux
Latest Software Articles
  1. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. F2FS File-System Shows Regressions On Linux 3.10
  4. Previewing The Radeon Gallium3D Shader Optimizations
Latest Linux News
  1. DNF Still Advancing As Experimental Yum For Fedora
  2. Logitech Begins Supporting Linux Users
  3. Modern Intel Gallium3D Driver Still Being Toyed With
  4. Linux 3.10 Kernel Benchmarks On A Core i7 Laptop
  5. GCC 4.8.1 Compiler Due To Be Out Next Week
  6. Linux 3.10 Kernel Benchmarks For Intel Ivy Bridge
  7. Linux's "Ondemand" Governor Is No Longer Fit
  8. Firefox 22 Beta Enables WebRTC Support
  9. OpenSUSE 13.1 Milestone 1 Released
  10. DRM Graphics Driver Comes For Dove/Cubox
  11. JADE: An LLVM-Based Video Decoder For MPEG RVC
Latest Forum Talk
  1. DRM Moves Ahead With HTML5 Specification
  2. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  3. Linux's "Ondemand" Governor Is No...
  4. New Linux Kernel Vulnerability Exploited
  5. KDE's Krita Ported To OpenGL 3.1, OpenGL ES 2.0
  6. Radeon Gallium3D Gets Important Cayman Fixes
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite