Binfmt misc

Last updated

binfmt_misc (Miscellaneous Binary Format) 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. [1] It is one of a number of binary format handlers in the kernel that are involved in preparing a user-space program to run. [2]

Contents

The executable formats are registered through the special purpose file system binfmt_misc file-system interface (usually mounted under part of /proc). This is either done directly by sending special sequences to the register procfs file or using a wrapper like Debian-based distributions binfmt-support package [3] or systemd's systemd-binfmt.service. [4] [5]

Registration

According to the kernel docs the register file contains lines which define executable types to be handled. Each line is of the form:

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

Each format has a corresponding file entry in the /proc/sys/fs/binfmt_misc directory which can be read to get information about a given file format.

Deregistration

$ echo-1>/proc/sys/fs/binfmt_misc/status# all entries$ echo-1>/proc/sys/fs/binfmt_misc/qemu-xtensa# single entry

Common usage

See also

References

  1. Kernel Support for miscellaneous Binary Formats (binfmt_misc) The Linux Kernel documentation
  2. How programs get run, January 28, 2015, by David Drysdale, LWN.net
  3. Details of package binfmt-support in sid, Debian
  4. systemd-binfmt.service, freedesktop.org
  5. binfmt.d, freedesktop.org
  6. Java(tm) Binary Kernel Support for Linux v1.03 The Linux Kernel documentation
  7. Mono(tm) Binary Kernel Support for Linux The Linux Kernel documentation
  8. Guide:Running Mono Applications
  9. Official QEMU mirror, QEMU, 23 November 2022
  10. Using Go as a scripting language in Linux, Cloudflare, 2018-02-20, retrieved 2019-05-05