Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

aout(4) [freebsd man page]

AOUT(4) 						   BSD Kernel Interfaces Manual 						   AOUT(4)

NAME
aout -- kernel support for executing binary files in legacy a.out format SYNOPSIS
kldload a.out DESCRIPTION
The a.out(5) executable format was used before the release of FreeBSD 3.0. Since i386 was the only supported architecture at that time, a.out(5) executables can only be activated on platforms that support execution of i386 code, such as i386 and amd64. To add kernel support for old syscalls and old syscall invocation methods, place the following options in the kernel configuration file: options COMPAT_43 options COMPAT_FREEBSD32 The COMPAT_FREEBSD32 option is only required on 64-bit CPU architectures. The aout.ko module needs to be loaded with the kldload(8) utility in order to support the a.out(5) image activator: kldload aout Alternatively, to load the module at boot time, place the following line in loader.conf(5): aout_load="YES" The a.out(5) format was mainstream quite a long time ago. Reasonable default settings and security requirements of modern operating systems today contradict the default environment of that time and require adjustments of the system to mimic natural environment for old binaries. The following sysctl(8) tunables are useful for this: security.bsd.map_at_zero Set to 1 to allow mapping of process pages at address 0. Some very old ZMAGIC executable images require text mapping at address 0. kern.pid_max Old versions of FreeBSD used signed 16-bit type for pid_t. Current kernels use 32-bit type for pid_t, and allow process id's up to 99999. Such values cannot be represented by old pid_t, mostly causing issues for processes using wait(2) syscalls, for example shells. Set the sysctl to 30000 to work around the problem. kern.elf32.read_exec Set to 1 to force any accessible memory mapping performed by 32-bit process to allow execution, see mmap(2). Old i386 CPUs did not have a bit in PTE which disallowed execution from the page, so many old programs did not specify PROT_EXEC even for mapping of executable code. The sysctl forces PROT_EXEC if mapping has any access allowed at all. The setting is only needed if the host architecture allows non-executable mappings. SEE ALSO
execve(2), a.out(5), elf(5), sysctl(8) HISTORY
The a.out(5) executable format was used on ancient AT&T UNIX and served as the main executable format for FreeBSD from the beginning up to FreeBSD 2.2.9. In FreeBSD 3.0 it was superseded by elf(5). AUTHORS
The aout manual page was written by Konstantin Belousov <kib@FreeBSD.org>. BUGS
On 64bit architectures, not all wrappers for older syscalls are implemented. BSD
August 14, 2012 BSD

Check Out this Related Man Page

LINUX(4)                                                   BSD Kernel Interfaces Manual                                                   LINUX(4)

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): linux_load="YES" DESCRIPTION
The linux module provides limited Linux ABI (application binary interface) compatibility for userland applications. The module provides the following significant facilities: o An image activator for correctly branded elf(5) executable images o Special signal handling for activated images o 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. 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. The linux module can be linked into the kernel statically with the COMPAT_LINUX kernel configuration option or loaded as required. The fol- lowing 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 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: if [ -x /compat/linux/sbin/ldconfig ]; then /compat/linux/sbin/ldconfig -r /compat/linux 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. FILES
/compat/linux minimal Linux run-time environment /compat/linux/proc limited Linux process file system /compat/linux/sys limited Linux system file system SEE ALSO
brandelf(1), elf(5), linprocfs(5), linsysfs(5) HISTORY
Linux ABI support first appeared in FreeBSD 2.1. BSD February 8, 2010 BSD
Man Page