compat_ibcs2 - setup for running iBCS2 binaries under emulation
OpenBSD supports running Intel Binary Compatibility Standard
2 (iBCS2)
binaries. This only applies to i386 systems for now. Binaries are supported
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 controlled
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 desired,
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 OpenBSD
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 naming
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 installed
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 imported
iBCS2 binaries without any extra work.
Setting up shared libraries [Toc] [Back]
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 privileges
are required on the OpenBSD system to perform the necessary installation
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 determine
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/noncommercial
use for only the cost of shipping (about $20US).
The distribution
comes on an ISO9660-format CDROM which can be mounted
and used to
copy the necessary files.
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 3.6 February 8, 1998
[ Back ] |