COMPAT_IBCS2(8)         OpenBSD System Manager's Manual        COMPAT_IBCS2(8)

NAME
     compat_ibcs2 - setup for running iBCS2 binaries under emulation

DESCRIPTION
     OpenBSD supports running Intel Binary Compatibility Standard 2 (iBCS2)
     binaries.  This only applies to i386 systems for now.  Binaries are sup-
     ported from SCO UNIX and other systems derived from UNIX System V Release
     3.  iBCS2 support is only well tested using SCO binaries.  XENIX binaries
     are also supported although not as well tested.  This option is con-
     trolled by the kern.emul.ibcs2 sysctl(8).  SVR4 binaries are supported by
     the COMPAT_SVR4 option.

     iBCS2 supports COFF, ELF, and x.out (XENIX) binary formats.  Binaries
     from SCO OpenServer (version 5.x) are the only ELF binaries that have
     been tested.  Most programs should work, but not ones that use or depend
     on:

           kernel internal data structures
           STREAMS drivers (other than TCP/IP sockets)
           local X displays (uses a STREAMS pipe)
           virtual 8086 mode

     The iBCS2 compatibility feature is active for kernels compiled with the
     COMPAT_IBCS2 option enabled.  If support for iBCS2 ELF executables is de-
     sired, the EXEC_ELF32 option should be enabled in addition to
     COMPAT_IBCS2.

     Many COFF-format programs and most ELF-format programs are dynamically
     linked.  This means that the shared libraries that the program depends on
     will also be needed.  Also, a "shadow root" directory for iBCS2 binaries
     on the OpenBSD system will have to be created.  This directory is named
     /emul/ibcs2.  Any file operations done by iBCS2 programs run under OpenB-
     SD will look in this directory first.  So, if an iBCS2 program opens, for
     example, /etc/passwd, OpenBSD will first try to open
     /emul/ibcs2/etc/passwd, and if that does not exist open the `real'
     /etc/passwd file.  It is recommended that iBCS2 packages that include
     configuration files, etc., be installed under /emul/ibcs2, to avoid nam-
     ing conflicts with possible OpenBSD counterparts.  Shared libraries
     should also be installed in the shadow tree.

     Generally, it will only be necessary to look for the shared libraries
     that iBCS2 binaries depend on the first few times iBCS2 programs are in-
     stalled on the OpenBSD system.  After a while, there will be a sufficient
     set of iBCS2 shared libraries on the system to be able to run newly im-
     ported iBCS2 binaries without any extra work.

   Setting up shared libraries
     How to get to know which shared libraries iBCS2 binaries need, and where
     to get them?  Depending on the file type of the executable, there are
     different possibilities.  (When following these instructions, root privi-
     leges are required on the OpenBSD system to perform the necessary instal-
     lation steps).

     1. COFF binaries
          Simply copy all of the available shared libraries since they are
          fairly small in size.  The COFF shared libraries are typically found
          in /shlib and can be obtained from the following sources:

                SCO UNIX version 3.x (aka ODT)
                SCO UNIX version 5.x (aka OpenServer)
                SCO UnixWare
                Many versions of SVR4.2/x86

          After copying the shared libraries, the following files should be
          present on the OpenBSD system:

                /emul/ibcs2/shlib/libc_s
                /emul/ibcs2/shlib/libnsl_s
                /emul/ibcs2/shlib/protlib_s

     2. ELF binaries
          Copy all of the available shared libraries from the source system or
          distribution, or use the `ldd-elf' program (in development) to de-
          termine the libraries required by a specific binary.

          After copying the shared libraries, the following files should be
          present on the OpenBSD system:

                /emul/ibcs2/usr/lib/libc.so.1
                /emul/ibcs2/usr/lib/libcrypt.so
                /emul/ibcs2/usr/lib/libndbm.so
                /emul/ibcs2/usr/lib/libsocket.so.1

     If access to an SCO system is impossible, the extra files will need to be
     obtained from an SCO distribution.  As of January 1998, SCO sells a copy
     of SCO OpenServer (iBCS2) and/or SCO UnixWare (SVR4) for personal/non-
     commercial use for only the cost of shipping (about $20US).  The distri-
     bution comes on an ISO 9660-format CD-ROM which can be mounted and used
     to copy the necessary files.

BUGS
     The information about SCO distributions may become outdated.

     Attempting to use a nameserver on the local host does not currently work
     due to an absurd shortcut taken by the iBCS2 network code (remember that
     there are no kernel sockets).

     16/32/64 bit offsets may not be handled correctly in all cases.

OpenBSD 4.7                      May 31, 2007                                2
