1.\" Copyright (c) 2000 Sheldon Hearn 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd May 6, 2021 28.Dt LINUX 4 29.Os 30.Sh NAME 31.Nm linux 32.Nd Linux ABI support 33.Sh SYNOPSIS 34To load the ABI at boot time, place the following line in 35.Xr loader.conf 5 : 36.Bd -literal -offset indent 37linux_load="YES" 38.Ed 39.Sh DESCRIPTION 40The 41.Nm 42module provides limited Linux ABI (application binary interface) compatibility, 43making it possible to run many unmodified Linux applications and libraries 44without the need for virtualization or emulation. 45Some of the facilities provided are: 46.Bl -bullet 47.It 48An image activator 49for correctly branded 50.Xr elf 5 51executable images 52.It 53Special signal handling for activated images 54.It 55Linux to native system call translation 56.It 57Linux-specific system calls 58.El 59.Pp 60Note that dynamically linked Linux executables 61will require a suitable environment in 62.Pa /compat/linux . 63This includes native Linux shared libraries, and Linux-specific virtual 64filesystems. 65To set it up, install the 66.Pa emulators/linux_base-c7 67port or the linux_base-c7 68package, and add the following line to the 69.Xr rc.conf 5 70file: 71.Pp 72.Dl linux_enable="YES" 73.Pp 74To avoid mounting Linux-specific filesystems at startup, also add the following 75line: 76.Pp 77.Dl linux_mounts_enable="NO" 78.Sh SYSCTL VARIABLES 79The following variables are available as both 80.Xr sysctl 8 81variables and 82.Xr loader 8 83tunables: 84.Bl -tag -width indent 85.It Va compat.linux.debug 86Enable debugging messages. 87Set to 0 to silence them. 88Defaults to 3. 89A setting of 1 prints debug messages, tells about unimplemented stuff (only 90once). 91Set to 2 is like 1, but also prints messages about implemented but not tested 92stuff (only once). 93Setting it to 3 or higher is like 2, but no rate limiting of messages. 94.It Va compat.linux.default_openfiles 95Default soft openfiles resource limit for Linux applications. 96Set to -1 to disable the limit. 97Defaults to 1024. 98.It Va compat.linux.emul_path 99Path to the Linux run-time environment. 100Defaults to 101.Pa /compat/linux . 102.It Va compat.linux.osname 103Linux kernel operating system name. 104.It Va compat.linux.osrelease 105Linux kernel operating system release. 106Changing this to something else is discouraged on non-development systems, 107because it may change the way Linux programs work. 108Recent versions of GNU libc are known to use different syscalls depending 109on the value of this sysctl. 110.It Va compat.linux.oss_version 111Linux Open Sound System version. 112.It Va compat.linux.preserve_vstatus 113When set to 1, it prevents Linux applications from resetting the 114.Xr termios 4 115VSTATUS setting. 116From a user perspective, this makes 117.Va SIGINFO 118work for Linux executables. 119Defaults to 0. 120.It Va compat.linux.setid_allowed 121Disable handling of set-user-ID and set-group-ID mode bits for the new 122process image file when image is to be executed under Linux ABI. 123When set, new Linux images always use credentials of the program 124that issued 125.Xr execve 2 126call, regardless of the image file mode. 127.Pp 128This might be reasonable or even required, because 129.Fx 130does not emulate Linux environment completely, and missed features 131could become holes. 132.El 133.Sh FILES 134.Bl -tag -width /compat/linux/dev/shm -compact 135.It Pa /compat/linux 136minimal Linux run-time environment 137.It Pa /compat/linux/dev 138device file system, see 139.Xr devfs 5 140.It Pa /compat/linux/dev/fd 141file descriptor file system mounted with the 142.Cm linrdlnk 143option, see 144.Xr fdescfs 5 145.It Pa /compat/linux/dev/shm 146in-memory file system, see 147.Xr tmpfs 5 148.It Pa /compat/linux/proc 149Linux process file system, see 150.Xr linprocfs 5 151.It Pa /compat/linux/sys 152Linux kernel objects file system, see 153.Xr linsysfs 5 154.El 155.Sh SEE ALSO 156.Xr brandelf 1 , 157.Xr pty 4 , 158.Xr elf 5 , 159.Xr fdescfs 5 , 160.Xr linprocfs 5 , 161.Xr linsysfs 5 , 162.Xr tmpfs 5 163.Sh HISTORY 164Linux ABI support first appeared in 165.Fx 2.1 . 166.Sh BUGS 167Support for some of the Linux-specific system calls and system call arguments 168is missing. 169