Binfmt miscbinfmt_misc ist eine Fähigkeit des Linux-Kernels, beliebige ausführbare Dateien zu erkennen und einem bestimmten 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 Kernel-Modul, durch welches im Prinzip jede Datei als Programm ausgeführt werden kann. Dadurch grenzt es sich gegenüber anderen Techniken, zum Beispiel 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. Abgrenzung gegenüber anderen TechnikenEine 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 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. RegistrierungDie Verknüpfung zwischen Dateitypen und Interpretern ist in der Datei register hinterlegt. Diese befindet sich direkt im Stammverzeichnis des virtuellen binfmt_misc-Dateisystems. 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
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. NutzungCLI- 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
|
Portal di Ensiklopedia Dunia