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>.