linux — Linux ABI
    support
To enable the Linux ABI at boot time, place the following line in
    rc.conf(5):
The linux kernel module provides limited
    Linux ABI (application binary interface) compatibility, making it possible
    to run many unmodified Linux applications without the need for
    virtualization or emulation. Some of the facilities provided are:
  - Linux to native system call translation
- Linux-specific system calls
- Special signal handling for Linux processes
- Path translation mechanism
- Linux-specific virtual file systems
The path translation mechanism makes Linux processes look up file
    paths under emul_path (defaulting to
    /compat/linux) before /. For
    example, when a Linux process attempts to open
    /etc/passwd, it will first access
    /compat/linux/etc/passwd, falling back to
    /etc/passwd if the compat path does not exist. This
    is used to make sure Linux processes load Linux shared libraries instead of
    their similarly-named FreeBSD counterparts, and also to provide alternative
    versions of certain other files and virtual file systems.
To install Linux shared libraries and system files into
    /compat/linux, either use the
    emulators/linux_base-c7 port or package, or
    debootstrap(8)
    installed from sysutils/debootstrap.
To avoid mounting Linux-specific filesystems at startup, add the
    following line to the
    rc.conf(5)
    file:
linux_mounts_enable="NO"
The following variables are available as both
    sysctl(8)
    variables and
    loader(8)
    tunables:
  - compat.linux.debug
- Enable debugging messages. Set to 0 to silence them. Defaults to 3. A
      setting of 1 prints debug messages, tells about unimplemented stuff (only
      once). Set to 2 is like 1, but also prints messages about implemented but
      not tested stuff (only once). Setting it to 3 or higher is like 2, but no
      rate limiting of messages.
- compat.linux.default_openfiles
- Default soft openfiles resource limit for Linux applications. Set to -1 to
      disable the limit. Defaults to 1024.
- compat.linux.emul_path
- Path to the Linux run-time environment. Defaults to
      /compat/linux.
- compat.linux.osname
- Linux kernel operating system name. Defaults to "Linux".
- compat.linux.osrelease
- Linux kernel operating system release. Changing this to something else is
      discouraged on non-development systems, because it may change the way
      Linux programs work. Some versions of GNU libc are known to use different
      syscalls depending on the value of this sysctl.
- compat.linux.oss_version
- Linux Open Sound System version. Defaults to 198144.
- compat.linux.preserve_vstatus
- When set to 1, it prevents Linux applications from resetting the
      termios(4)
      VSTATUS setting. From a user perspective, this makes
      SIGINFO work for Linux executables. Defaults to
    1.
- compat.linux.setid_allowed
- Enable handling of set-user-ID and set-group-ID mode bits for the new
      process image file when image is to be executed under Linux ABI. When set
      to 0, new Linux images always use credentials of the program that issued
      the
      execve(2)
      call, regardless of the image file mode. This might be reasonable or even
      required, because FreeBSD does not emulate the
      Linux environment completely, and missed features may result in security
      vulnerabilities. Defaults to 1.
- compat.linux32.emulate_i386
- In the x86_64 (amd64) world enable the real i386 Linuxulator behavior. For
      example, when set to 0, Linux uname -m will return "x86_64" even
      if uname itself is a i386 Linux executable. When set to 1, Linux i386
      uname -m will return "i686". Defaults to 0.
  - /compat/linux
- Linux run-time environment
- /compat/linux/dev
- device file system, see
      devfs(5)
- /compat/linux/dev/fd
- file descriptor file system mounted with the
      linrdlnkoption, see
      fdescfs(5)
- /compat/linux/dev/shm
- in-memory file system, see
      tmpfs(5)
- /compat/linux/proc
- Linux process file system, see
      linprocfs(5)
- /compat/linux/sys
- Linux kernel objects file system, see
      linsysfs(5)
Linux ABI support first appeared for i386 in
    FreeBSD 2.1. Support for amd64 binaries first
    appeared in FreeBSD 10.3. Support for arm64 binaries
    first appeared in FreeBSD 12.0.
Support for some of the Linux-specific system calls and system
    call arguments is missing.