Unter FreeBSD ist es möglich Software auszuführen die für Linux-Systeme kompiliert wurde. Somit können speziell kommerzielle Produkte, welche nur als Binärpaket angeboten werden unter FreeBSD installiert werden, obgleich es keine eingene Version für FreeBSD gibt. Interessant ist dies z.B. für Programme wie Skype, Flash, Quake3 oder auch größere Projekte wie z.B. SAP.
Um dies zu ermöglichen muss eine Kompatibilitässchicht eingefügt werden, welche zum Einen aus einem Kernelmodul und zum Anderen aus den notwendigen Bibliotheken besteht.
Im Folgenden soll emulators/linux_base-f10 verwendet werden. Dieses Paket beinhaltet die notwendigen Bibliotheken um eine Binärkompatibilität zu Fedora Core 10 herzustellen. Daher beziehen sich alle verwendeten Angaben auf diesen Port. Wird eine andere Kompatibilität gewählt müssen die Werte ggf. angepasst werden.
Alle Anpassungen erfolgen als Benutzer root.
Zunächst wird das Kernelmodul geladen. dies geschieht über folgenden Aufruf.
# kldload linux
Mit dem Befehl kldstst können die derzeit geladenen Module angezeigt werden.
Damit das Kernelmodul bei jedem Systemstart geladen wird muss die /etc/rc.conf um folgende Zeile erweitert werden:
linux_enable="YES"
Um sicher zu stellen, dass alle Pakete gegen die Bibliotheken von Fedora Core 10 gebaut werden wird die Datei /etc/make.conf wie folgt erweitert:
OVERRIDE_LINUX_BASE_PORT=f10 OVERRIDE_LINUX_NONBASE_PORTS=f10
Die Bibliotheken werden wie ein normaler Port installiert.
# cd /usr/ports/emulators/linux_base-f10 # make install clean
Abschliessend wird noch das procfs für die Linux-Bibliotheken eingehängt. Hierzu wird die Datei /etc/fstab wie folgt ergänzt:
linproc /usr/compat/linux/proc linprocfs rw 0 0
Nun kann das procfs mit folgendem Aufruf, als Benutzer root, eingehängt werden.
# mount /usr/compat/linux/proc
Nun sollte die Linux-Kompartibilität verfügbar sein und es können entsprechende Ports installiert werden. Bei Problemen wird empfohlen das FreeBSD-Handbuch zu konsultieren.
Teilweise wird zusätzlich das Starten der Dienste abi und sysctl in /etc/rc.d empfohlen. Sollten diese benötigt werden sind diese verständlicherweise zu starten.