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

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023