GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
LINUX(4) FreeBSD Kernel Interfaces Manual LINUX(4)

linux
Linux ABI support

To enable the Linux ABI at boot time, place the following line in rc.conf(5):
linux_enable="YES"

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 Linux process attempts to open /etc/passwd, it will really access /compat/linux/etc/passwd, unless the latter 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/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 linrdlnk option, 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)

brandelf(1), pty(4), elf(5), fdescfs(5), linprocfs(5), linsysfs(5), tmpfs(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.
January 9, 2022 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 4 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.