The
linux
module provides limited
Linux ABI (application binary interface) compatibility
for userland applications.
The module provides the following significant facilities:
- An image activator
for correctly branded
elf(5)
executable images
- Special signal handling for activated images
- Linux to native system call translation
It is important to note that the Linux ABI support
it not provided through an emulator.
Rather, a true (albeit limited) ABI implementation is provided.
The following
sysctl(8)
tunable variables are available:
| compat.linux.osname
|
Linux kernel operating system name.
|
| compat.linux.osrelease
|
Linux kernel operating system release.
|
| compat.linux.oss_version
|
| |
Linux Open Sound System version.
|
|
The
linux
module can be linked into the kernel statically with the
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:
if ! kldstat -v | grep -E linux(aout|elf) > /dev/null; then
kldload linux > /dev/null 2>&1
fi
Note that dynamically linked Linux executables
will require a suitable environment in
/compat/linux.
Specifically, the Linux run-time linkers 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:
if [ -x /compat/linux/sbin/ldconfig ]; then
/compat/linux/sbin/ldconfig
fi
For information on loading the
linux
kernel loadable module automatically on system startup,
see
rc.conf(5).
This information applies
regardless of whether the
linux
module is statically linked into the kernel
or loaded as a module.