Linux Emulation for SCO
May 8, 1998
This paper describes some of the rationale and implementation
decisions for lxrun, an Intel Linux emulator, plus how to get, build, configure and run it; what some of the current and future development
issues and enhancements are and the current status of the project.
There is not much difference between the execution environment required by Linux binaries and binaries for other Intel UNIX platforms, the main one being the way in which system calls are handled. For example, in Linux an "int $0x80" instruction is used, which jumps to the system-call-handling portion of the Linux kernel. On SCO systems, "int $0x80" is an unused vector and therefore causes a general protection trap resulting in a SIGSEGV signal. Lxrun intercepts these signals and calls the SCO equivalent of the system call that the Linux program attempted. It also remaps some ioctls, flags, return values and error codes. Using lxrun, a Linux binary can be run on a non-Linux platform with little performance penalty. Lxrun can also take advantage of the lower overhead in some Linux libraries, occasionally resulting in improved performance over native binaries. No kernel modifications are necessary.