Next Previous Contents

16. EM86: How To Run Linux/x86 Apps on Linux/Alpha

Thanks to Jim Paradis, it is now possible to run Linux/x86 binaries on your Alpha box. The em86 emulator is based on the FX!32 emulator/binary translator Digital produced for Windows NT. (Unfortunately the second part is not available for Linux.)

The emulator is currently considered beta-quality, but it works very well for applications such as Netscape or Applix. At present, a UDB may not be fast enough for em86 (depending on your patience, of course) but anything starting at a 300MHz 21164 should do nicely. (If you are not satisfied with the speed, but happen to own a Digital Unix license for your machine, you may want to take a look at the next chapter.)
A future version of em86 may include the ability to redirect shared-library calls to the native libs, rather than load the x86 versions which must be run through the emulator. This will not only improve the speed, but also save you a lot of discspace.

See the em86 ftp directory for details. The README file will provide you with all the info you need to install the emulator. Note that for kernel version 2.0.30 the em86-patches are included in the alpha-patches at gatekeeper, which may save you some work.

16.1 Two quotes from the README

Here is what you can do with em86..

        Application Notes

              EM86 has been tested on numerous test cases and small
              applications (xtetris, for example). In addition, three
              major packages have been verified to run to varying
              degrees under EM86. Following are notes on each package.
 
              __________________________________________________________
              Application___________Notes_______________________________

              Netscape Navigator    Install Netscape Navigator Gold
              Gold 3.01             as per the supplied installation
                                    instructions.

                                    _____________ WARNING_____________

                                    DO NOT under ANY circumstances enable
                                    Java or JavaScript until further notice.
                                    Attempting to use these WILL crash your
                                    browser. While this is a known problem
                                    even under Linux/x86, none of the suggested
                                    workarounds improved the situation. We are
                                    currently investigating this problem.
                                    __________________________________

                                    If Netscape has trouble locating
                                    Internet hosts, but you can ping
                                    these hosts from the command line,
                                    try installing an /etc/nsswitch.conf
                                    file.


              Adobe Acrobat Reader  Use the supplied install procedure
              3.0                   to install Acrobat Reader. With
                                    the em86-patch applied to your
                                    kernel, this application should
                                    run normally. Otherwise, you will
                                    need to modify the script

                                    /usr/local/Acrobat3/bin/acroread

                                    to use EM86 to invoke the acroread
                                    binary.

              Applixware 4.2        Because Applixware uses rpm for
                                    installation, you must override
                                    the architecture check. (rpm does
                                    not normally allow you to install
                                    the binaries for one architecture
                                    onto a machine of a different
                                    architecture). To override, copy
                                    the install script from the CD to
                                    a writable location, then edit the
                                    script to supply the "-ignorearch"
                                    flag to rpm. Since Applixware has
                                    binaries that invoke other binaries,
                                    you need to apply the em86-patch
                                    to the kernel for it to run. Since
                                    Applixware pushes lots of data on
                                    the stack, you also need to apply
                                    the traparg patch to the kernel.

..and here is what you cannot..

        Restrictions

              The EM86 restrictions are as follows:

              o   EM86 emulates user-mode code only.
 
              o   EM86 cannot run programs that access virtual memory 
                  above the address 78000000.

              o   EM86 does not now, nor will in the future, support the 
                  following system calls: setup, break, ptrace, stty, 
                  gtty, prof, acct, phys, lock, mpx, ulimit, profil, 
                  ioperm, iopl, idle, mx86, modify-Ldt, create_module,
                  init_module, delete_module, get_kernel_syms, bdflush, 
                  afs_syscall, and sysctl.

              o   EM86 0.9.1 does not support the following system
                  calls that will be supported in future releases: mount, 
                  umount, uselib, old_readdir, sysinfo, ipc sigreturn, 
                  clone, adjtimex, quotactl, sysfs, flock, msync, mlock, 
                  munlock, mlockall, munlockall, sched_setparam,
                  sched_getparam, sched_setscheduler, sched_getscheduler, 
                  sched_yield, sched_get_priority_max, sched_get_priority_min,
                  sched_rr_get_interval, nanosleep, and mremap.

And if you don't care to spend all those CPU cycles while your Alpha pretends to be an Intel CPU, then the next chapter shows you an other way to make many applications available.


Next Previous Contents