1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking Benchmarking Platform
Phoromatic Test Orchestration

FreeBSD: A Faster Platform For Linux Gaming Than Linux?

Michael Larabel

Published on 7 September 2011
Written by Michael Larabel
Page 1 of 6 - 102 Comments

FreeBSD provides a Linux binary compatibility layer that allows 32-bit Linux binaries to be natively executed on this BSD operating system. Linux binary compatibility on FreeBSD allows Linux-only applications to be executed in a near seamless manner on this alternative platform, even for games. New tests have revealed that the modern FreeBSD operating system (via PC-BSD 8.2) can actually outperform Linux when it comes to running OpenGL Linux game binaries.

This Linux binary compatibility support for FreeBSD is commonly referred to as "Linux emulation", but it is not emulating Linux in a traditional sense nor is it acting like Wine in user-space. This is a Linux ABI implementation for the FreeBSD kernel.

The FreeBSD Handbook covers Linux binary compatibility with how to enable the support under FreeBSD. Enabling the support requires loading a Linux KDO (kernel module) and altering the /etc/rc.conf. Linux run-time libraries also need to be installed, which can easily be done by using FreeBSD ports.

For this Phoronix benchmarking, PC-BSD 8.2 was used since its focus is on providing a pleasant FreeBSD desktop experience, complete with the KDE4 desktop environment by default. PC-BSD ships with Linux binary compatibility support enabled by default and a number of the Linux run-time libraries. During this testing only a few extra Linux run-time libraries had to be installed from FreeBSD ports like libvorbis, libasound, and SDL.

This support is available to users of FreeBSD on i386 and AMD64, but currently in mainline FreeBSD, it is limited to only supporting 32-bit Linux binaries. There has been experimental work on Linux x86_64 binary support, but nothing has yet been merged in stable form. Right now in FreeBSD 8.2 ports is an implementation based on the Linux 2.6 kernel and the user-space libraries are from Fedora 10.

There is this advanced page of the FreeBSD handbook covering the Linux emulation at a more in-depth level. The key section:

"When a system call is called by the Linux binary, the trap code dereferences the system call function pointer off the proc structure, and gets the Linux, not the FreeBSD, system call entry points.

In addition, the Linux mode dynamically reroots lookups; this is, in effect, what the union option to file system mounts (not the unionfs file system type!) does. First, an attempt is made to lookup the file in the /compat/linux/original-path directory, then only if that fails, the lookup is done in the /original-path directory. This makes sure that binaries that require other binaries can run (e.g., the Linux toolchain can all run under Linux ABI support). It also means that the Linux binaries can load and execute FreeBSD binaries, if there are no corresponding Linux binaries present, and that you could place a uname(1) command in the /compat/linux directory tree to ensure that the Linux binaries could not tell they were not running on Linux.

In effect, there is a Linux kernel in the FreeBSD kernel; the various underlying functions that implement all of the services provided by the kernel are identical to both the FreeBSD system call table entries, and the Linux system call table entries: file system operations, virtual memory operations, signal delivery, System V IPC, etc... The only difference is that FreeBSD binaries get the FreeBSD glue functions, and Linux binaries get the Linux glue functions (most older OS's only had their own glue functions: addresses of functions in a static global sysent[] structure array, instead of addresses of functions dereferenced off a dynamically initialized pointer in the proc structure of the process making the call)."

Latest Articles & Reviews
  1. GeForce GTX 750 Series: Nouveau vs. NVIDIA Linux Driver Performance
  2. GLAMOR + RadeonSI 2D Acceleration Is Quite Good For Open-Source AMD 2D Performance
  3. AMD Radeon R9 290 OpenGL On Ubuntu 15.04: Catalyst vs. RadeonSI Gallium3D
  4. Ubuntu 15.04 Offers Faster OpenGL For AMD Radeon GPUs On Open-Source
  5. Ubuntu 15.04 Brings Some Graphics Performance Improvements For Intel Haswell
  6. Sub-$20 802.11n USB WiFi Adapter That's Linux Friendly
Latest Linux News
  1. It's A Long Road Ahead To Get Ubuntu Snappy On The Desktop
  2. NetworkManager 1.0.2 Arrives As First Post-1.0 Release
  3. Libinput 0.15 Adds New Debug Events Utility
  4. Qt 5.5 Beta Is Coming Soon, Snapshot Released
  5. Steam Linux Usage Drops Below 1%
  6. Many OpenGL ES 3.1 Commits Land In Mesa
  7. HHVM 3.7 Brings More Performance Improvements
  8. Experimental DragonFlyBSD Code Adds Broadwell Graphics
  9. Virt-Manager 1.2.0 Brings OVMF/AAVMF Support For UEFI In VMs
  10. Interesting GSoC 2015 Projects: Wine D3DRM, GameStream, NaCL Fun
Most Viewed News This Week
  1. Trying Out Microsoft Visual Studio Code On Linux
  2. Microsoft Releases New Code IDE For Linux!
  3. Improvements On The Way For GNOME's Nautilus File Manager
  4. A Lot Of Improvements Are Coming For Mir 0.13, Including Work Towards Libinput
  5. Kodi 15.0 Beta 1 Released
  6. Mono 4.0 Makes Use Of Microsoft's Open-Source Code, C# 6.0
  7. Wayland 1.8 Alpha Release Delayed
  8. Lucid Sleep Support Is Being Worked On For The Upstream Linux Kernel