*BSD News Article 42988


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!math.ohio-state.edu!cis.ohio-state.edu!news.sei.cmu.edu!nntp.sei.cmu.edu!bb3.andrew.cmu.edu!cantaloupe.srv.cs.cmu.edu!cgd
From: frank@fwi.uva.nl (Frank van der Linden)
Newsgroups: comp.os.386bsd.announce,comp.unix.bsd.netbsd.announce
Subject: NetBSD now runs Doom in Linux compat mode
Followup-To: comp.unix.bsd.netbsd.misc
Date: 1 Mar 1995 00:34:29 GMT
Organization: FWI, University of Amsterdam
Lines: 87
Approved: 386bsd-announce@agate.berkeley.edu,netbsd-announce@agate.berkeley.edu
Message-ID: <3j0fel$2b8@mail.fwi.uva.nl>
NNTP-Posting-Host: lagavulin.pdl.cs.cmu.edu
Summary: Linux compat code added to NetBSD
Keywords: Linux,NetBSD,Doom,emulation,compatability
X-Organisation: Faculty of Mathematics & Computer Science
                University of Amsterdam
                Kruislaan 403
                NL-1098 SJ Amsterdam
                The Netherlands
X-Phone:        +31 20 525 7463
X-Telex:        10262 hef nl
X-Fax:          +31 20 525 7490
Originator: cgd@LAGAVULIN.PDL.CS.CMU.EDU

I am pleased to announce that Support to run Linux binaries has just been
added to the kernel, and will be improved in the time to come. This means
that NetBSD-current users can now finally do what they have always wanted
to do with their system: run Doom! (no, I wasn't going to say "run
'ls' with colors.. ;-))

What does it do?
---------------
- It runs Linux a.out binaries, both statically and dynamically linked.
- It implements most Linux system calls, with a few exotic exceptions
  like vm86 support and such.
- It does not support Linux ELF binaries yet, but support for this will
  be added.

How do I run Doom on my NetBSD-current/i386 system then?
-------------------------------------------------------
You will need to:

 1) Get the latest source code for the NetBSD-current kernel.
    It might take a little while for the enhancements to
    appear on the NetBSD mirror site of your choice, so make
    sure you get the latest sources, with the src/sys/compat/linux
    directory in them. These should start to appear after the
    next update from source tree to ftp tree has finished.
 2) Compile a NetBSD-current kernel with the COMPAT_LINUX option
    enabled. Having Sysv shared memory support enabled (the SYSVSHM
    option) is not needed, but it will help speed up things,
    as Doom wants to use the MITSHM extension to X.
 3) Get the Linux Doom from an ftp site near you.
 4) Since Doom is dynamically linked, you will need to get some files
    from a Linux system near you. These files are to be located in
    the directory /emul/linux, a "shadow root" directory used
    by the system for Linux binaries. In this dir, you will need
    the following files:

  lib/libc.so.4.6.27 (a slightly earlier version will probably work too)
  lib/libc.so.4 (a symbolic link to the above)
  lib/ld.so
  etc/ld.so.cache
  etc/ld.so.conf
  usr/X11/lib/libXt.so.3.1.0
  usr/X11/lib/libXt.so.3 (a symbolic link to the above)
  usr/X11/lib/libX11.so.3.1.0
  usr/X11/lib/libX11.so.3 (a symbolic link to the above)

 5) Unpack the Doom file you ftp-ed in /emul/linux.
 6) cd /emul/linux/usr/games/doom
 7) You might as well move the sndserver away, since it can't do its
    job (sound is not (yet?) supported in the Linux compat code), and
    will only take up memory:
    mv sndserver sndserver.foo
 8) Run ./linuxxdoom
 9) Have fun :)

The game may be a little slow to start up, but that's not quite due to
the compatability code. However, once it starts running, the speed
is really quite good. I'm running it on a 486/33 with 8 Mb of 
memory, and have 4 xterms open at the same time. If you want
a larger screen (the -2 option), you should use the SYSVSHM option
in your kernel to keep a reasonable speed, though.

But, this is turning in to a Doom FAQ, and that's not what this posting
is about. The baseline is, that NetBSD-current/i386 now supports Linux
binaries, with the ability to run Doom as very nice side-effect 8-)
Running Doom was of course a nice first goal, but the code will be
maintained and enhanced; if it is only useful to run Doom it doesn't
belong in the NetBSD kernel.

If you want to know more about the Linux emulation in NetBSD, or NetBSD
itself, you can join the NetBSD mailing lists (see the posting about
the mailing lists in this group). Bugreports about the Linux compatability
mode can be reported via the normal NetBSD bugreport channels, or
mailed directly to me.

Lastly, I would like to thank the NetBSD team for providing a system
which code is set up in such a good way that adding this particular
feature was easy and natural to do. More specifically, I would
like to thank Chris Demetriou and Charles Hannum for commenting
on the code, and giving me the chance to add it to the NetBSD source tree.

- Frank
-- 
                Frank van der Linden, frank@fwi.uva.nl
Use NetBSD, it's free and works on: i386, Mac, Amiga, HP300, Sun3, Sun4c, PC532
                  Work in progress: DEC MIPS R2k/3k, VAX, Sun4m, Alpha
                     (And even more architectures to come)