---
name: "linux"
section: "4freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/linux/4freebsd"
---

# linux(4freebsd)

Linux ABI support

## NAME

**linux** – Linux ABI support

## SYNOPSIS

To compile support for this ABI into an i386 kernel place the following line in your kernel configuration file:

**options COMPAT\_LINUX**

for an amd64 kernel use:

**options COMPAT\_LINUX32**

Alternatively, to load the ABI as a module at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
linux_load="YES"
```

## DESCRIPTION

The **linux** module provides limited Linux ABI (application binary interface) compatibility, making it possible to run many unmodified Linux applications and libraries without the need for virtualization or emulation. Some of the facilities provided are:

- An image activator for correctly branded [elf(5)](/elf/5.md) executable images

- Special signal handling for activated images

- Linux to native system call translation

- Linux-specific system calls

Note that dynamically linked Linux executables will require a suitable environment in */compat/linux*. This includes native Linux shared libraries, and Linux-specific virtual filesystems. To set it up, install the *emulators/linux\_base-c7* port or the linux\_base-c7 package, and add the following line to the [rc.conf(5)](/rc.conf/5.md) file:

```
linux_enable="YES"
```

To avoid mounting Linux-specific filesystems at startup, also add the following line:

```
linux_mounts_enable="NO"
```

## SYSCTL VARIABLES

The following variables are available as both [sysctl(8)](/sysctl/8.md) variables and [loader(8)](/loader/8.md) tunables:

- *compat.linux.debug*

  Enable debugging messages. Set to 0 to silence them. Defaults to 1.

- *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.

- *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. Recent 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.

- *compat.linux.preserve\_vstatus*

  When set to 1, it prevents Linux applications from resetting the [termios(4)](/termios/4.md) VSTATUS setting. From a user perspective, this makes *SIGINFO* work for Linux executables. Defaults to 0.

## FILES

- */compat/linux*

  minimal Linux run-time environment

- */compat/linux/dev*

  device file system, see devfs(5)

- */compat/linux/dev/fd*

  file descriptor file system mounted with the **linrdlnk** option, see fdescfs(5)

- */compat/linux/dev/shm*

  in-memory file system, see [tmpfs(5)](/tmpfs/5.md)

- */compat/linux/proc*

  Linux process file system, see linprocfs(5)

- */compat/linux/sys*

  Linux kernel objects file system, see linsysfs(5)

## SEE ALSO

[brandelf(1)](/brandelf/1.md), [pty(4)](/pty/4.md), [elf(5)](/elf/5.md), fdescfs(5), linprocfs(5), linsysfs(5), [tmpfs(5)](/tmpfs/5.md)

## HISTORY

Linux ABI support first appeared in FreeBSD 2.1.

## BUGS

Support for some of the Linux-specific system calls and system call arguments is missing.
