IBCS-US

 

NAME

ibcs-us - Emulate other Unix systems  

SYNOPSIS

ibcs-us [ options ] [ program args... ]  

DESCRIPTION

ibcs-us is an emulator - it loads and runs a program designed to execute on another Unix system. The emulated program is given the command line options args.... ibcs-us intercepts and emulates the system calls program uses but the rest of the environment such as files libraries and most special devices must be supplied some other way (but see --map.) It probably won't work with programs that aren't statically linked.

ibcs-us attempts to map inode numbers into a 16 bit range as required by most personalities, and it does to attempt emulate the /dev/spx and /dev/socksys devices on personalities that use them.  

COMMAND LINE

ibcs-us accepts the following command line options:

-h, --help
Print a short message explaining what command line arguments ibcs-us expects and list the command line options it accepts.
-l filename, --log=filename
In a past life most of ibcs-us ran as kernel modules. When those modules wanted to tell you something (such as the trace produced by --trace, errors and warnings) they wrote it to the kernel's log file. This option directs those messages to filename. If filename is a number logging is written to that file descriptor instead, for example --log=2 writes logging information to stderr. The default is to write it to stderr.
-m filename.map, --map=filename.map
Rewrite filenames given to system calls. The filename passed to the system call is made absolute and normalised before checking if it should be rewritten. In filename.map blank lines and lines starting with # are ignored. Other lines must have one of the formats:

prefixmap: /path/from --> /path/to
prefixmap: /dir/from/ --> /dir/to/

The first form redirects all references to the file name /path/from to go to /path/to instead. The second file redirects all references to file names starting with /dir/from/ to start with /dir/to/ instead. All path names must be absolute (ie, start with a /). They have leading and trailing white space stripped. The --> must be surrounded by white space.

-p personality, --personality=personality
Force the personality to be personality. The personality selects which Unix system is emulated. If not set ibcs-us attempts to guess it. The personalities ibcs-us recognises are defined in the source in include/ibcs-us/linux26-compat/linux/personality.h. The personality can be specified as a hexadecimal number, and/or as the names in that file separated by a +.

The personalities listed in include/ibcs-us/linux26-compat/linux/personality.h that are vaguely likely to do something useful are: PER_OSF4, PER_OSR5, PER_SCOSVR3, PER_SOLARIS, PER_SUNOS, PER_SVR3, PER_SVR4, PER_UW7, PER_WYSEV386 and PER_XENIX.

-t trace, --trace=trace
Print debugging trace about what is happening to the log. trace is a number whose bits turn on the various kinds of specified in the source file include/ibcs-us/ibcs-lib/trace.h. trace can be a hexadecimal number or the symbolic constants defines in that file separated by +. ~0 turns all trace on.
 

INSTALLATION

ibcs-us must be run as root or be given the CAP_SYS_RAWIO capability using capset(1). It drops the privileges that don't match the credentials(7) of the file being run before executing it.

Emulated programs that use fork(2) (eg, they run other programs) or look at what other programs are running may not like Linux process ids (pids) above 32767. The maximum pid Linux will create can be changed until the next reboot by running:

sudo sh -c "echo 32768 >/proc/sys/kernel/pid_max"

On Debian it can be set at boot using sysctl(8). Create the file /etc/sysctl.d/99-ibcs-us.conf with the following line in it:

kernel.pid_max = 32786
 

HISTORY

iBCS is an acronym for Intel Binary Compatibility System. That was the name of the kernel patches (later turned into dkms modules) ibcs-us was derived from. Prior to that it was called ABI (Application Binary Interface).  

BUGS

Do not expect ibcs-us to work for you. It was developed 20 years ago by cheapskates who did not what to pay for the licence fees of the Unix systems this program emulates, and it's been been bit rotting ever since. The current maintainer hates the thing so he is not interested developing it further nor in fixing bugs that don't effect him directly, but he will accept bug reports accompanied by a patch.  

HOMEPAGE

https://ibcs-us.sourceforge.net  

AUTHOR

The author of this man page and ibcs-us's current maintainer is Russell Stuart, <russell+ibcs-us@stuart.id.au>.