Changeset View
Changeset View
Standalone View
Standalone View
head/share/man/man4/linux.4
| Show All 18 Lines | |||||
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
| .\" SUCH DAMAGE. | .\" SUCH DAMAGE. | ||||
| .\" | .\" | ||||
| .\" $FreeBSD$ | .\" $FreeBSD$ | ||||
| .\" | .\" | ||||
| .Dd August 1, 2017 | .Dd November 13, 2019 | ||||
| .Dt LINUX 4 | .Dt LINUX 4 | ||||
| .Os | .Os | ||||
| .Sh NAME | .Sh NAME | ||||
| .Nm linux | .Nm linux | ||||
| .Nd Linux ABI support | .Nd Linux ABI support | ||||
| .Sh SYNOPSIS | .Sh SYNOPSIS | ||||
| To compile support for this ABI into an i386 kernel | To compile support for this ABI into an i386 kernel | ||||
| place the following line in your | place the following line in your | ||||
| Show All 11 Lines | |||||
| module at boot time, place the following line in | module at boot time, place the following line in | ||||
| .Xr loader.conf 5 : | .Xr loader.conf 5 : | ||||
| .Bd -literal -offset indent | .Bd -literal -offset indent | ||||
| linux_load="YES" | linux_load="YES" | ||||
| .Ed | .Ed | ||||
| .Sh DESCRIPTION | .Sh DESCRIPTION | ||||
| The | The | ||||
| .Nm | .Nm | ||||
| module provides limited | module provides limited Linux ABI (application binary interface) compatibility, | ||||
| Linux ABI (application binary interface) compatibility | making it possible to run many unmodified Linux applications and libraries | ||||
| for userland applications. | without the need for virtualization or emulation. | ||||
| The module provides the following significant facilities: | Some of the facilities provided are: | ||||
| .Bl -bullet | .Bl -bullet | ||||
| .It | .It | ||||
| An image activator | An image activator | ||||
| for correctly branded | for correctly branded | ||||
| .Xr elf 5 | .Xr elf 5 | ||||
| executable images | executable images | ||||
| .It | .It | ||||
| Special signal handling for activated images | Special signal handling for activated images | ||||
| .It | .It | ||||
| Linux to native system call translation | Linux to native system call translation | ||||
| .It | |||||
| Linux-specific system calls | |||||
| .El | .El | ||||
| .Pp | .Pp | ||||
| It is important to note that the Linux ABI support | Note that dynamically linked Linux executables | ||||
| it not provided through an emulator. | will require a suitable environment in | ||||
| Rather, a true (albeit limited) ABI implementation is provided. | .Pa /compat/linux . | ||||
| This includes native Linux shared libraries, and Linux-specific virtual | |||||
| filesystems. | |||||
| To set it up, install the | |||||
| .Pa emulators/linux_base-c7 | |||||
| port or the linux_base-c7 | |||||
| package, and add the following line to the | |||||
| .Xr rc.conf 5 | |||||
| file: | |||||
| .Pp | .Pp | ||||
| The following | .Dl linux_enable="YES" | ||||
| .Pp | |||||
| To avoid mounting Linux-specific filesystems at startup, also add the following | |||||
| line: | |||||
| .Pp | |||||
| .Dl linux_mounts_enable="NO" | |||||
| .Sh SYSCTL VARIABLES | |||||
| The following variables are available as both | |||||
| .Xr sysctl 8 | .Xr sysctl 8 | ||||
| tunable variables are available: | variables and | ||||
| .Bl -tag -width compat.linux.oss_version | .Xr loader 8 | ||||
| .It compat.linux.osname | tunables: | ||||
| .Bl -tag -width indent | |||||
| .It Va compat.linux.osname | |||||
| Linux kernel operating system name. | Linux kernel operating system name. | ||||
| .It compat.linux.osrelease | .It Va compat.linux.osrelease | ||||
| Linux kernel operating system release. | Linux kernel operating system release. | ||||
| Changing this to something else is discouraged on non-development systems, | Changing this to something else is discouraged on non-development systems, | ||||
| because it may change the way Linux programs work. | because it may change the way Linux programs work. | ||||
| Recent versions of GNU libc are known to use different syscalls depending | Recent versions of GNU libc are known to use different syscalls depending | ||||
| on the value of this sysctl. | on the value of this sysctl. | ||||
| .It compat.linux.oss_version | .It Va compat.linux.oss_version | ||||
| Linux Open Sound System version. | Linux Open Sound System version. | ||||
| .El | |||||
| .Pp | |||||
| The | |||||
| .Nm | |||||
| module can be linked into the kernel statically with the | |||||
| .Dv COMPAT_LINUX | |||||
| kernel configuration option | |||||
| or loaded as required. | |||||
| The following command will load the module | |||||
| if it is neither linked into the kernel | |||||
| nor already loaded as a module: | |||||
| .Bd -literal -offset indent | |||||
| if ! kldstat -v | grep -E 'linux(aout|elf)' > /dev/null; then | |||||
| kldload linux > /dev/null 2>&1 | |||||
| fi | |||||
| .Ed | |||||
| .Pp | |||||
| Note that dynamically linked Linux executables | |||||
| will require a suitable environment in | |||||
| .Pa /compat/linux . | |||||
| Specifically, the Linux run-time linker's hints files | |||||
| should be correctly initialized. | |||||
| For this reason, it is common to execute the following commands | |||||
| to prepare the system to correctly run Linux executables: | |||||
| .Bd -literal -offset indent | |||||
| if [ -x /compat/linux/sbin/ldconfig ]; then | |||||
| /compat/linux/sbin/ldconfig -r /compat/linux | |||||
| fi | |||||
| .Ed | |||||
| .Pp | |||||
| For information on loading the | |||||
| .Nm | |||||
| kernel loadable module automatically on system startup, | |||||
| see | |||||
| .Xr rc.conf 5 . | |||||
| This information applies | |||||
| regardless of whether the | |||||
| .Nm | |||||
| module is statically linked into the kernel | |||||
| or loaded as a module. | |||||
| .Sh FILES | .Sh FILES | ||||
| .Bl -tag -width /compat/linux/dev/fd -compact | .Bl -tag -width /compat/linux/dev/shm -compact | ||||
| .It Pa /compat/linux | .It Pa /compat/linux | ||||
| minimal Linux run-time environment | minimal Linux run-time environment | ||||
| .It Pa /compat/linux/dev/fd | .It Pa /compat/linux/dev/fd | ||||
| limited Linux file-descriptor file system | file-descriptor file system, see | ||||
| .Xr fdescfs 5 | |||||
| .It Pa /compat/linux/dev/shm | |||||
| in-memory file system, see | |||||
| .Xr tmpfs 5 | |||||
| .It Pa /compat/linux/proc | .It Pa /compat/linux/proc | ||||
| limited Linux process file system | Linux process file system, see | ||||
| .Xr linprocfs 5 | |||||
| .It Pa /compat/linux/sys | .It Pa /compat/linux/sys | ||||
| limited Linux system file system | Linux kernel objects file system, see | ||||
| .Xr linsysfs 5 | |||||
| .El | .El | ||||
| .Sh SEE ALSO | .Sh SEE ALSO | ||||
| .Xr brandelf 1 , | .Xr brandelf 1 , | ||||
| .Xr pty 4 , | .Xr pty 4 , | ||||
| .Xr elf 5 , | .Xr elf 5 , | ||||
| .Xr fdescfs 5 , | .Xr fdescfs 5 , | ||||
| .Xr linprocfs 5 , | .Xr linprocfs 5 , | ||||
| .Xr linsysfs 5 | .Xr linsysfs 5 , | ||||
| .Xr tmpfs 5 | |||||
| .Sh HISTORY | .Sh HISTORY | ||||
| Linux ABI support first appeared in | Linux ABI support first appeared in | ||||
| .Fx 2.1 . | .Fx 2.1 . | ||||
| .Sh BUGS | |||||
| Support for some of the Linux-specific system calls and system call arguments | |||||
| is missing. | |||||