.TH iBCS 9 "7 Nov 1995"
.SH NAME
iBCS \- loadable module to allow execution of other x86 Unix binaries
.SH SYNOPSIS
insmod
.B iBCS
.LP
.SH DESCRIPTION
.LP
The Intel Binary Compatibility Specification, or iBCS, specifies the
interfaces between application programs and the surrounding operating
system environment for i386 based systems. There are however several
flavours of iBCS in use - SVR4, SVR3 plus several vendor specific
extensions to SVR3 which are slightly different and incompatible. The
iBCS emulator for Linux supports all flavours known so far and some
extensions.
.PP
With the iBCS module loaded you can run most programs compiled for
Intel based Unices other than Linux. This is completely transparent.
All you do is run the program as normal.
.SH SUPPORTED CPU ARCHITECTURES
.LP
.RS
Intel 386/486/Pentium and compatibles
.LP
Sparc
.RE
.LP
.SH "SUPPORTED BINARY FORMATS"
.LP
.RS
A.OUT	(used by Linux and BSD)
.LP
ELF	(used by SVR4 flavours and SCO OS5)
.LP
COFF	(used by SVR3 flavours)
.LP
XOUT	(used by Xenix)
.RE
.LP
.SH "SUPPORTED OS EMULATIONS"
.LP
.RS
i386 BSD (386BSD, FreeBSD, NetBSD, BSDI/386) - very alpha.
.LP
SVR4 (Interactive, Unixware, USL, Dell etc.)
.LP
SVR3 generic
.LP
SCO (SVR3 with extensions for symlinks and long filenames)
.LP
Wyse V/386 (SVR3 with extensions for symlinks)
.LP
Xenix V/386 (386 small model binaries only)
.LP
Xenix 286
.RE
.LP
.SH "SUPPORTED SUBSYSTEM EMULATIONS"
.LP
.RS
SYSV IPC
.LP
/dev/socksys socket interface as used by the Lachman STREAMS
based networking implementation.
.LP
Wyse V/386 system call socket interface.
.LP
/dev/spx STREAMS device for connections to local X server.
.LP
TLI devices for IP.
.RE
.LP
.SH BUGS
.LP
There are two many bugs. Most people will be unlikely to encounter
any of them however.
.PP
Unix variants with non-standard extensions which are not SVr4, SCO or Wyse
will not be recognised and may fail unexpectedly. A new personality may
need to be built.
.PP
The recognition of SCO and Wyse binaries is dependent on comment strings
embedded in the binary at compile time. If these strings are missing or
not as expected the binary may not be recognised correctly and may
fail unexpectedly. It is also possible that binaries from other systems
may be misrecognised although given the strings used this should be
unlikely.
.PP
Some Xenix functions are unimplemented, in particular Xenix semaphores
and shared memory.
.PP
There is some basic support for STREAMS and XTI/TLI networking interfaces.
Since Linux does not use STREAMS at all this is something of a kludge.
It should be sufficient for most programs though.
.PP
Programs, applications or packages which require modules or device drivers
to be linked in to the kernel will not work. Linux is \fBnot\fR based on SYSV
code and does not have SYSV internals. The driver would need rewriting for
use under Linux.
.SH FILES
.LP
.PD 0
.TP 20
.BI /lib/modules/`uname -r`/misc/iBCS
default location for the iBCS module
.PD
.SH "SEE ALSO"
.BR insmod (1)
.BR kerneld (8)
.BR modprobe (1)
.SH AUTHOR
.LP
Mike Jagdis <jaggy@purplet.demon.co.uk>.
.LP
Based on original work by Eric Youngdale, Alfred Longyear, Drew Sullivan,
Joseph L. Portman III and others.
