Binfmt

Binfmt

binfmt_misc ist eine Fähigkeit des Linux-Kernels, beliebige ausführbare Dateien zu erkennen und einem bestimmen Programm im User-Mode zu übergeben, wie beispielsweise einem Interpreter oder einem Programmstarter, der das Programm in den Arbeitsspeicher lädt.

Es handelt sich um ein optionales Kernelmodul, durch welches im Prinzip jede Datei als Programm ausgeführt werden kann. Dadurch grenzt es sich gegenüber anderen Techniken, z.B. dem Shebang-Mechanismus, ab.

Die ausführbaren Formate werden in einer zentralen datenbankartigen Form in einem virtuellen Dateisystem, der sogenannten Registrierung, gespeichert, welches ähnlich wie devfs, procfs oder sysfs arbeitet. Standardmäßig wird dieses Dateisystem unter /proc/sys/fs/binfmt_misc eingebunden.

Inhaltsverzeichnis

Abgrenzung gegenüber anderen Techniken

Eine alternative Möglichkeit, die ein ähnliches Ziel wie binfmt_misc verfolgt, ist der Shebang-Mechanismus. Bei ihm wird in der ersten Zeile der auszuführenden Datei der Interpreter mit der Zeichenkombination #! festgelegt. Diese Technik ist auf Unix-Derivaten vor allem für Skripte sehr weit verbreitet, eignet sich allerdings auch nur für Textdateien.

Die binfmt_misc-Technik hingegen benötigt keine spezielle Kennzeichnung in der Datei, es muss sich daher auch nicht (zwingend) um eine reine Textdatei handeln. Dadurch, dass die Assoziation zwischen Dateien und Interpretern in einer systemweit zentralen Datenbank festgehalten wird, könnte beispielsweise das Problem des Speicherortes beim Shebang-Mechanismus gelöst werden. Wegen seinem geringen Bekanntheitsgrad bietet der binfmt_misc-Mechanismus sich aber nicht als ernsthafte Alternative gegenüber dem Shebang-Mechanismus an und kommt daher als Lösung der Probleme des Shebang-Mechanismus auch nicht in Frage.

Registrierung

Der Speicherort der Assoziation zwischen Dateitypen und Interpretern ist die Datei register, die sich direkt im Stammverzeichnis des virtuellen binfmt_misc-Dateisystems befinden muss. Da das binfmt_misc-Dateisystem meist unter /proc/sys/fs/binfmt_misc gemountet wird, ist der Name der Datei auf den meisten Linux-Systemen /proc/sys/fs/binfmt_misc/register. Es handelt sich dabei um eine Textdatei, in der jede Zeile einen Eintrag darstellt, der festlegt, wie ausführbare Dateien behandelt werden sollen. Jede Zeile hat dabei die folgende Form:

:name:type:offset:magic:mask:interpreter:

Dabei stehen die Felder

  • name für den dateiweit einzigartigen Namen des Formates, welches in dieser Zeile festgelegt wird
  • type für die Art, wie die Datei erkannt werden soll. Dieses Feld hat entweder den Wert E oder M. Wenn E gesetzt wurde, wird die ausführbare Datei an der Dateierweiterung erkannt, offset und mask werden dann ignoriert. In dem Feld magic muss dann die Dateierweiterung des Dateiformats angegeben werden. Wenn hingegen M eingestellt wird, wird die ausführbare Datei durch Bytes am Anfang der Datei erkannt. magic ist dann die magic number, die die Datei identifiziert und offset ist die Stelle an der die magic number in der Datei gefunden werden kann. Auf mask wird das bitweise UND mit der charakteristischen Zeichenfolge, dem magic string, aus der Datei angewand: Ungesetzte Bits werden ignoriert im Vergleich zum magic.
  • interpreter für den Pfad zu einem Programm. Der Pfad zu der auszuführenden Datei wird dabei als Argument übergeben.

Zu jedem registrierten Dateityp erstellt binfmt_misc eine Datei in dem virtuellen Dateisystem. Diese Datei kann später gelesen werden, um Informationen über das Dateiformat zu erhalten.

Nutzung

Common Language Infrastructure- und Java-Anwendungen können dank binfmt_misc direkt dem richtigen Interpreter übergeben werden und so direkt über die Shell oder durch andere Programme gestartet werden.

Es ist auch üblich, Portable Executable-Dateien (Dateien mit den Dateiendungen .exe und .dll, die für MS-DOS oder Microsoft Windows kompiliert wurden) auf diese Art und Weise mit Wine auszuführen. In der Registrierungsdatei würde man dann folgende Zeile notieren:

:DOSWin:M::MZ::/usr/bin/wine:

Durch den magic string MZ im type_code wird der Dateityp einer Portable Executable dabei erkannt und die Datei mit der Windows-Laufzeitumgebung ausgeführt.

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Binfmt misc — is a capability of the Linux kernel which allows arbitrary executable file formats to be recognized and passed to certain user space applications, such as emulators and virtual machines.The executable formats are registered through a special… …   Wikipedia

  • Binfmt misc — ist eine Fähigkeit des Linux Kernels, beliebige ausführbare Dateien zu erkennen und einem bestimmen Programm im User Mode zu übergeben, wie beispielsweise einem Interpreter oder einem Programmstarter, der das Programm in den Arbeitsspeicher lädt …   Deutsch Wikipedia

  • 0xDEADBEEF — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Eine Magische Zahl (engl. magic number) ist in der Programmierung… …   Deutsch Wikipedia

  • File — Aktuelle Version: 5.01 (30. April 2009) Betriebssystem: Multiplattform Kategorie: Remote Access Lizenz: GPL …   Deutsch Wikipedia

  • Hash-Bang — Die Shebang Zeichen – hash bang Bei unixoiden Betriebssystemen wird die Zeichenkombination #! am Anfang eines Skript Programms shebang oder auch Magic Line genannt. Die Markierung führt dazu, dass das folgende Kommando mitsamt aller angegeben… …   Deutsch Wikipedia

  • Hashbang — Die Shebang Zeichen – hash bang Bei unixoiden Betriebssystemen wird die Zeichenkombination #! am Anfang eines Skript Programms shebang oder auch Magic Line genannt. Die Markierung führt dazu, dass das folgende Kommando mitsamt aller angegeben… …   Deutsch Wikipedia

  • Magic-Byte — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Eine Magische Zahl (engl. magic number) ist in der Programmierung… …   Deutsch Wikipedia

  • Magic Byte — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Eine Magische Zahl (engl. magic number) ist in der Programmierung… …   Deutsch Wikipedia

  • Magic Line — Die Shebang Zeichen – hash bang Bei unixoiden Betriebssystemen wird die Zeichenkombination #! am Anfang eines Skript Programms shebang oder auch Magic Line genannt. Die Markierung führt dazu, dass das folgende Kommando mitsamt aller angegeben… …   Deutsch Wikipedia

  • Magische Zahl (Informatik) — Eine Magische Zahl (engl. magic number) ist in der Programmierung ein spezieller Wert, der für einen bestimmten Zweck, beispielsweise für die Kennzeichnung von Dateiformaten am Dateibeginn, genutzt wird. Magische Zahlen werden meistens aus… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”