ADMIN-Tipp: Linux-Programme unter BSD

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Wer FreeBSD einsetzt, kann neben der eigenen Software auch auf den riesigen Fundus an Linux-Programmen zurückgreifen. Es gilt lediglich, ein paar einfache Dinge zu berücksichtigen.

Die erste Voraussetzung, um Linux-Software unter FreeBSD laufen zu lassen, ist ein Compatibility Package, das installiert sein muss. Prüfen kann man das mit

pkg_info | grep linux

In der Ausgabe muss sich eine Zeile wie diese finden:

linux_base-7.1_2   The base set of packages needed in Linux mode

Außerdem muss man in der Datei rc.conf die Option

linux_enable="YES"

einschalten. Meistens sind diese Voraussetzungen nach einer Standard-Installation bereits erfüllt. Muss man das Programm, das unter FreeBSD laufen soll, unter Linux erst übersetzen, sollte man dort das Static-Flag verwenden.
Zuweilen stößt man beim Start der Linux-Software auf eine solche Fehlermeldung:

freebsd.server> ./example-program
ELF binary type "0" not known.
Abort

Um das Problem zu lösen ermittelt man zuerst den Elf-Typ des fraglichen Programms:

freebsd.server> readelf -e example-program

ELF Header:
Magic:                           7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
Class:                            ELF64
Data:                             2's complement, little endian
Version:                         1 (current)
OS/ABI:                         UNIX - System V
ABI Version:                   0
Type:                             EXEC (Executable file)
Machine:                       Advanced Micro Devices X86-64
Version:n                       0x1
Entry point address:      0x4086d0
Start of program headers: 64 (bytes into file)
Start of section headers:   190616 (bytes into file)
Flags:                            0x0
Size of this header:       64 (bytes)
...

Hier kommt es auf das so genannte Application Binary Interface (ABI) an, das beispielsweise Datentypen, Ausrichtung, Aufrufkonventionen oder die Nummern der System Calls festlegt. Welche ABIs das vorliegende FreeBSD unterstützt verrät

brandelf -l

Die Ausgabe sieht beispielsweise so aus:

known ELF types are: FreeBSD(9) Linux(3) Solaris(6) SVR4(0) 

Der Typ 0 würde in diesem Beispiel bereits unterstützt. Sollte sich bei einem an sich kompatiblen Programm hier ein falscher Typ-Wert ergeben haben, lässt sich das ändern:

brandelf -t Linux example-program

Nun sollte das Beispielsprogramm unter FreeBSD laufen.

23.07.2012

Ähnliche Artikel

Artikel der Woche

Performance-Analyse mit Collectd

Jeder Admin muss die Auslastung seiner Systeme im Blick behalten, um Flaschenhälsen vorzubeugen. Dafür braucht er Leistungsdaten wie die CPU-Auslastung oder die Speichernutzung. Der freie Daemon Collectd sammelt auf Unix-Systemen derartige Werte für Performanceanalysen und die Kapazitätsplanung.
(mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Ausgabe /2014

Was halten Sie von Zertifizierungen, die Fachkenntnisse und Fertigkeiten nachweisen?

  • Sie sind in der Praxis nutzlos
  • Sind für uns ein wichtiges Einstellungskriterium
  • Liefern einen Anhaltspunkt für die Qualifikation