Linux °æ (¾«»ªÇø)
·¢ÐÅÈË: netiscpu (˵²»Èç×ö), ÐÅÇø: Linux
±ê Ìâ: [B] Red Hat Linux Unleashed (57)
·¢ÐÅÕ¾: ×Ï ¶¡ Ïã (Sat Jul 25 05:04:34 1998), תÐÅ
DOSemu
_________________________________________________________________
o Installing DOSemu from Source Distributions
# Building an Executable Version of DOSemu
o Configuring DOSemu
# Making a DOS Boot Floppy
# Configuring Parameters in /etc/dosemu.conf
# Getting DOSemu To Run for the First Time
# Configuring Disk Options
@ Accessing a Dedicated MS-DOS Disk or Partition
@ How To Access Any Linux Directory from DOSemu
# Creating Diskimages
@ Creating Floppy Image Files
@ Accessing a Floppy Image Under DOSemu
@ Creating Hard Diskimage Files Under Linux
@ Accessing a Diskimage Under DOS
# Configuring Video Options for the Virtual Consoles
of Linux
# Using DOSemu from Other Than a Virtual Console
# Configuring Keyboards
# Configuring Serial Ports
# Configuring Printers
# Using Debug Parameters
# Other Configuration Parameters
o Runtime Options of DOSemu
o Limitations of DOSemu
# Notable Software That Won't Run Under DOSemu
# Hardware Limitations for DOSemu
# Performance Limitations
@ CPU Performance
@ Disk Performance
@ Video Performance
o Mouse Support
o Optimizing DOSemu
# Using Garrot
# Other Optimization Suggestions
o Sources for More Documentation About DOSemu
# Where To Get More Information About DOSemu
o How DOSemu Works
o A Brief History of DOSemu and Its Contributing Authors
_________________________________________________________________
57
DOSemu
DOSemu stands for DOS emulator. This is a bit of a misnomer, because
DOSemu does not actually emulate MS-DOS. Instead, it provides an
environment in Linux under which MS-DOS and MS-DOS applications can be
run. DOSemu enables you to run MS-DOS sessions
* On a virtual console
* Within an xterm
* As an X Window application
* Over a serial or network connection
The development of DOSemu is not yet complete. A small but growing
number of MS-DOS applications will run under DOSemu. The most
impressive application reported to run under DOSemu is the real mode
of MS Windows 3.0.
MS-DOS applications will not run as fast under DOSemu as they would
under native MS-DOS, but most applications are fast enough. You have
the added advantage of being able to run Linux and MS-DOS applications
side by side.
The design of DOSemu will always cause some speed degradation, but the
same design also provides the capability to virtualize a PC. The disk
drives, serial ports, and memory configurations configured under
DOSemu do not need to match the hardware that actually exists on your
PC.
______________________________________________________________
NOTE: There are a few things you need to be wary of when you first
start using DOSemu. DOSemu is considered to be alpha software.
Major disk corruption is unlikely to happen when you run DOSemu,
but you should take normal precautions. You should back up anything
valuable on your DOS and Linux hard-drive partitions before
actually running DOSemu.
Although DOSemu is strictly user-level code, some unexpected
results may occur. When you first configure and test DOSemu you
should shut down any critical Linux applications and be prepared to
reboot your machine. This may seem like an unnecessary precaution
for an experienced Linux user. However, my first attempt at DOSemu
caused my modem to hang up because DOSemu reset the configured
serial ports.
______________________________________________________________
Installing DOSemu from Source Distributions
DOSemu is available on some CD-ROM distributions and on most major
Linux BBSs and FTP sites such as sunsite.unc.edu (in directory
/pub/Linux/system/Emulators/dosemu). The latest version available as
of this writing was 0.53pl39 (pre-release 0.53, patch level 39).
DOSemu is dependent on the version of the Linux kernel installed.
Version 0.52 will not work with kernels newer than 1.1.30, nor will
version 0.53 work with Linux kernels prior to 1.1.30.
For the truly adventuresome, the latest development version of DOSemu
is available on the Internet via anonymous FTP at
dspsun.eas.asu.edu/pub/dosemu/. As with the development version of any
software, it is not as thoroughly tested, and may have some serious
bugs. Stick to the released versions if at all possible.
The latest released version at the time of writing that is stable was
/pub/linux/ALPHA/dosemu/dosemu0.60.4.tgz from tsx-11.mit.edu. Be
cautious with later releases.
The DOSemu distribution needs to be installed in a directory under
/usr/src. DOSemu will not build correctly if the distribution is
installed elsewhere. A DOSemu distribution consists of a compressed
tar file that is unpacked by a shell command such as
bash# tar -zxvf filename.tar.gz
DOSemu is undergoing constant revisions. Review the QuickStart and
other README files before proceeding.
Building an Executable Version of DOSemu
DOSemu is distributed as source code that needs to be compiled and
linked before you use it. This is not a very complicated task because
the process is automated. To build DOSemu, you need the following
software installed:
* GNU C compiler version 2.5.8 or later
* GNU make
* libc 4.5.21 or later
* ncurses
To build DOSemu, log in as root, change directory (cd) to the
directory created by unpacking the tar archive and type the following
commands:
bash# make config
bash# make depend
bash# make most
The DOSemu distribution includes a reference manual written in TeX. If
you have TeX installed and want to create a typeset version of the
manual, use make everything instead of make most.
To properly compile DOSemu, you need to be logged in as root, and have
approximately 12MB of virtual memory free. Use the top command to
check how much free memory is available. You can increase the free
memory by either installing an additional swap file or by killing
unnecessary processes. Fortunately, you only need excess memory to
compile DOSemu.
The full build of DOSemu takes approximately 10 minutes on a 90 MHz
Pentium. When the build is complete, you are ready to configure and
run DOSemu.
Configuring DOSemu
DOSemu can be configured to boot MS-DOS from a floppy or hard drive.
As when configuring a real PC, you usually start by booting from a
floppy and work up to booting from a hard drive.
Making a DOS Boot Floppy
The simplest and safest way to initially configure DOSemu is by using
a boot floppy. Create a bootable DOS floppy from your favorite DOS
distribution. DOSemu supports MS-DOS Versions 3.3 through 6.22, as
well as DR-DOS 6.0.
In addition to bootable DOS, the disk should have the following DOS
files:
* format.com
* sys.com
* DOS mouse driver for your mouse
* A simple file editor such as edit, edlin, or ted
From the dosemu subdirectory, copy the following device drivers onto
the floppy:
* emufs.sys
* ems.sys
* cdrom.sys
From the command subdirectory copy the following file:
exitemu.com
______________________________________________________________
NOTE: The easiest way to copy files from a Linux directory to an
MS-DOS formatted floppy is to use the mcopy command. For example:
mcopy filename a:
______________________________________________________________
Configuring Parameters in /etc/dosemu.conf
Everything you need to configure DOSemu exists in the file
/etc/dosemu.conf. A user-specific configuration file can be created in
a user's home directory named ~/.dosrc. Both of these files have the
same format. I will refer to these files interchangeably as
dosemu.conf. A sample configuration file is in the examples/
subdirectory of the standard DOSemu distribution. Look for the file
named dosemu.dist.
The example file is several hundred lines long. Most of this
configuration file contains comments to help explain the configuration
options. Anything to the right of a # character is a comment. A # in
the first column means that the entire line is a comment. Sample
configuration lines for nearly all supported hardware and software
options are contained in this file. Most DOSemu configurations can be
expressed in 25 to 30 lines.
Configuration parameters in /etc/dosemu.conf have two basic formats. A
parameter that needs just one value has the form parameter value. A
parameter that needs multiple values has the form parameter { value1
value2 ... }.
Getting DOSemu To Run for the First Time
One way to configure DOSemu is to copy the example configuration file
to /etc/dosemu.conf, and then edit the parameters based on information
in the comments. Another way is to create a simple dosemu.conf file
and add to it as needed. A bare-bones file looks like the following:
timint on
keyboard { layout us keybint on rawkeyboard on }
video { vga console }
cpu 80486
bootA
floppy { device /dev/fd0 threeinch }
Use a text editor to make the following customizations to dosemu.conf
based on your actual hardware:
* Change the video line to cga, ega, or ma if you don't have VGA.
* Change the cpu to 80386 if you do not have a 80486 or Pentium.
* If your boot floppy is a 5.25, replace threeinch with fiveinch.
Make sure your drive A floppy is not mounted under Linux and insert
your boot floppy into drive A. Start DOSemu from a virtual console by
typing DOS. Your version of DOS will boot from drive A, and you should
be at the familiar A:> prompt. If you are using an empty MS-DOS disk,
you will soon run out of things to do. To exit DOSemu prompt press
Alt-Ctrl-PgDn, or use the exitemu.com command provided on your boot
floppy.
Configuring Disk Options
Most Linux users have DOS partitions on a hard drive. Some may even
have a separate hard drive dedicated to DOS. This section shows
several ways to configure DOSemu to access these drives as native DOS
disks. You can abandon your boot floppy and boot from a hard drive,
even if you do not have an MS-DOS formatted drive or partition
anywhere.
Accessing a Dedicated MS-DOS Disk or Partition
The easiest way to access a hard drive is to configure the drive in
your dosemu.conf file. The disk or partition in question must be
formatted for MS-DOS and be a primary partition. Extended DOS
partitions are not yet supported. The format of the parameter entry to
access a hard drive is
disk { type "device" readonly }
The type parameter can be partition or wholedisk, and the device is
the Linux device being accessed. Typical names would be /dev/hda1 for
a partition or /dev/sda for an entire disk. The readonly qualifier is
optional, and like the name infers, it write-locks the disk or
partition in question. If you boot Linux from a hard drive using LILO,
do not access that drive using wholedisk. When DOSemu boots from that
drive, it will give you a LILO prompt. Unfortunately, neither LILO nor
Linux will run from within a DOSemu session.
The following are some examples of valid entries for disks:
disk { partition "/dev/sda4" } # mount 4th partition
disk { partition "/dev/hda1" readonly} # mount 1st IDE partition readonly
disk { wholedisk "/dev/sda" } # mount the whole 1st SCSI disk
______________________________________________________________
NOTE: Linux may have other tasks also accessing disks. To avoid
problems with file corruption, disks mounted as read/write under
Linux should be configured as read-only. Use umask=022 in the
/etc/fstab entry for the dos partition:
/dev/hda1 /dos messydos umask=022
______________________________________________________________
How To Access Any Linux Directory from DOSemu
A much safer way to access a DOS directory is through the emufs.sys
device driver. This driver enables you to access any Linux
subdirectory as a logical device under DOS. In your config.sys of your
boot device, simply add the lines
device = emufs.sys /c
where /c is the Linux directory you want to mount. The next available
drive letter is used for this logical drive.
Any disk or device mounted in the Linux file system can be made
available to DOSemu as a logical disk through the emufs driver. Disks
and directories do not need to be DOS formatted and can include
CD-ROMs as well as NFS and IPX mounted disks. However, files in these
directories must be in the MS-DOS 6.0 format to be visible under
DOSemu.
With a logical device you can do typical operations such as read,
write, and delete files, and run executables. Utilities such as
drvspace, undelete, and defrag will not work on disks accessed through
dosemufs.
Creating Diskimages
DOSemu has an additional abstraction called a diskimage. A diskimage
is a Linux file that appears to DOS as a logical device. Either a
floppy or a hard disk is supported as a diskimage. A diskimage makes
an ideal boot device because the size can be set just large enough to
boot MS-DOS. Unlike drives accessed by dosemufs, drives configured by
diskimages work with utilities like undelete, scandisk, and defrag.
Creating Floppy Image Files
A floppy disk file is easy to create under Linux. The floppy image
file does not need to do anything except exist initially. To create an
initial floppy image file use the touch command; for example,
touch filename
This new floppy will appear as an unformatted floppy when you boot
DOSemu. Because the size of the floppy is configured in DOSemu,
formatting the floppy will expand the image file to the expected size
(1.44MB for a high-density, 3.5-inch floppy).
Accessing a Floppy Image Under DOSemu
To use a floppy disk, you need to specify the floppy geometry for the
benefit of DOS.
floppy { heads 2 sectors 18 tracks 80 threeinch file /usr/dos/hdimage }
This simulates a 1.44MB, 3.5-inch floppy. A diskimage floppy can be
used in the same way as any floppy, except that it cannot be removed.
Expect the diskimage floppy to operate significantly faster than a
real floppy, with formatting taking only a few seconds.
______________________________________________________________
NOTE: Some DOS utilities that like to reboot MS-DOS, such as
DRVSPACE, will check to see if you have a floppy in drive A before
allowing you to continue. Because you cannot eject a floppy
diskimage, you need to remove the floppy configuration and restart
DOSemu.
______________________________________________________________
Creating Hard Diskimage Files Under Linux
Hard diskimage files are more confusing to configure than floppies. To
initially create the hard disk file, use the command mkhdimage found
in the periph directory of the DOSemu distribution. Instead of
specifying the size of the image, you need to specify the number of
heads, sectors, and cylinders of the disk to create. The following is
an example mkhdimage command that creates a 10MB disk:
mkhdimage -h 8 -s 20 -c 128 > /usr/dos/hdimage
To compute the size of a disk based on disk geometry, multiply
heads´sectors´cylinders´512 (number of bytes per sector under MS-DOS).
Because these parameters do not represent the real characteristics of
a disk, the ratio of heads to sectors to cylinders does not matter to
DOSemu. However, MS-DOS will only recognize the first 1024 cylinders
of a disk.
Because mkhdimage only creates a file of 128 bytes, no other check of
available space for the configured amount takes place. Do not
configure a diskimage drive larger than the available disk space.
Accessing a Diskimage Under DOS
To use a diskimage as a logical hard drive, use the disk parameter
with a type of image rather than wholedisk or partition, as well as
the name of the Linux file used.
disk { image "/usr/dos/hdimage" }
Like floppy diskimages, hard diskimages are not initially formatted.
When a diskimage file is initialized it is also unpartitioned. Use the
MS-DOS fdisk utility to create a partition on the drive you configure.
To avoid confusion and data loss, configure DOSemu with only one real
floppy and only the new hard diskimage for a hard drive. Sometimes a
new diskimage will appear to fdisk to have a partition created, but
MS-DOS is unable to access the partition. The easy fix is to delete
the existing partition and re-create it.
Hard diskimages are different than floppies in that disk space used
under Linux is allocated on demand. A newly formatted diskimage of any
size takes up enough disk space to store FAT information. The disk
file grows as disk space is used under DOS. An interesting observation
is if a diskimage is drvspaced under MS-DOS, drvspace will allocate
the entire amount of space for its drive mapping.
Configuring Video Options for the Virtual Consoles of Linux
Linux's virtual console can support more than just text-mode virtual
consoles. Due to the direct-access nature of most DOS-based video,
this is perhaps DOSemu's biggest weakness. Not all video boards will
work correctly with DOSemu, and even fewer will work perfectly. The
basic configuration for the video section with graphics looks like the
following:
video { type console graphics chipset chipset_type memsize kb vbios_seg address
vbios_size=hex }
If your video board is 100 percent VGA—compatible, omitting
everything past the keyword graphics might work.
The following chipset keywords are supported:
* et4000
* s3 (801, 805, and 928)
* diamond
* trident
Video boards that do not have the BIOS configured at 0´C000 need the
vbios_seg to be set to the actual address. When in doubt, the video
BIOS starting address (vbios_seg) as well as the video BIOS size
(vbios_size) can be determined by the Microsoft Diagnostics (MSD)
utility that comes with MS-DOS and Windows.
The following line will allow DOS access to known video ports
directly, and will help compati-bility:
allowvideoaccess on
Using DOSemu from Other Than a Virtual Console
DOSemu does not need to run under just a Linux virtual console. DOSemu
can run in an xterm, on a remote (network or dial-up) connection, or
within its own X Window interface. Remote connections and xterms are
configurable in exactly the same way as are virtual consoles, except
that no levels of graphics are possible. Remote sessions typically
cannot generate a Ctrl-Alt-PgDn to end the session; using the
exitemu.com is the quickest way to end a remote DOS session.
The X Window interface to DOSemu is called xdos. Xdos is a relatively
recent development for DOSemu, and has only a few additional features
over running DOSemu in an xterm. Xdos has built-in mouse support so
that a mouse supported under X Window also works within the xdos
window. Graphics support does not yet exist for xdos, but may be
eventually possible—development work is underway. Figure 57.1
shows an example xdos session running within X Window. Configuration
parameters available for xdos are listed in Table 57.1.
Figure 57.1. Example xdos session running under X Window.
Parameters specific to xdos take the form
X { param1 value1 param2 value2}
Table 57.1. Xdos-specific dosemu.conf parameters.
Parameter Sample Meaning
title "DOS box" X Window—specific title.
display "mybox:0" X server to use if xdos is to be displayed on
another X server.
font "vga" Monospaced font to be used.
icon_name "xdos" Icon name to use when DOSemu iconized.
updatelines 25 Number of text lines in the display.
updatefreq 8 How often X updates the xdos screen. 20 is approximately
once per second.
blinkrate 8 How often the cursor blinks.
A starting point for configuring xdos is the following line:
X { title "DOS box" icon_name "xdos" updatelines 25 updatefreq 8}
Configuring Keyboards
The DOSemu keyboard can be configured to handle a number of different
keyboard layouts for international keyboards. If a given layout is
available in the Linux kernel configuration, it is probably available
to DOSemu. The following is the default configuration for a keyboard:
keyboard { layout us keybint on rawkeyboard off }
The keybint option enables DOSemu to handle keyboard interrupts more
accurately but is a bit unstable.
The normal keyboard handlers should suffice for simpler DOS tasks, but
will not handle more complicated keystrokes. Keyboard-intensive
packages like WordPerfect that make heavy use of Alt and Ctrl keys
need to be represented better. The rawkeyboard option offers a nearly
complete representation of the PC keyboard by bypassing all key
translations. This is known as raw mode. To use raw mode simply turn
it on in the keyboard configuration. Raw mode is only possible when
you are running DOSemu from a virtual console.
______________________________________________________________
NOTE: If DOSemu unexpectedly exits while a keyboard is in raw mode,
you may be stuck with a disabled keyboard. The only option may be
to reboot your PC.
______________________________________________________________
If you are running xdos the keyboard mapping is controlled mainly by
your ~/.Xmodmap file. Because the backspace and delete keys are
typically reversed under X Window, the following Linux commands will
restore the expected keystrokes:
xmodmap -e "keycode 107 = 0xffff"
xmodmap -e "keycode 22 = 0xff08"
Changing this mapping may cause the same problem with other X Window
applications.
______________________________________________________________
NOTE: Sometimes keystrokes are echoed in duplicate. This phenomenon
happens on consoles that have the istrip setting turned on. To turn
istrip off, use stty.
______________________________________________________________
Configuring Serial Ports
To configure serial ports you simply need to make them known to
DOSemu. The basic configuration looks like the following:
serial { com1 device /dev/cua0 }
This example maps DOSemu's com1 to Linux's serial port 0 (which maps
to COM1 under native DOS). You can specify additional parameters, such
as the port address and IRQ. All of the serial port parameters except
the Linux port apply only to ports configured under DOSemu. DOSemu
accesses the real serial ports as Linux devices that are configured by
the kernel. The IRQ, com port number, and port addresses are what you
want DOSemu to simulate, and do not need to match the actual hardware.
The same IRQ restrictions between COM 1/3 and COM 2/4 still exist
under DOSemu. If you cannot use two ports simultaneously under Linux,
you cannot do so under DOSemu.
The following example configures the hardware com1 as com3 with a
different IRQ and base address:
serial { com3 base 0x3e8 iq 5 device /dev/cua0 }
It is generally less confusing if you configure ports as they really
exist.
Configuring Printers
Printers under DOSemu can print to a device or file, or you can let a
Linux program such as lpr handle the output. Each printer statement in
dosemu.conf is assigned an LPT device number in the order in which it
occurs in the file. Multiple printers can be declared to DOSemu;
however, MS-DOS has a set limit of three LPT devices.
To configure a printer to save to a file or device, simply specify the
file keyword and the name of the file or device. A time-out value will
specify how long DOSemu waits in seconds after the last character is
received before flushing data and closing the file or device. The
following are some example printer configurations using a file and
device designation:
printer { file "/usr/tmp/dos-print-1" timeout 10 }
printer { file "/dev/lp1" timeout 10 }
______________________________________________________________
NOTE: Direct access to a printer using the device name can cause
problems if other Linux tasks also access that device. Avoid this
method if possible.
______________________________________________________________
To configure a printer to send data through an external program such
as lpr, specify the command to use and any options to include on the
print line. The option parameter must contain the string %s in the
same place you would specify the filename if you were using this
command under Linux (for example, lpr -p %s). An example of
configuring the printer to print using lpr is as follows:
printer { command "lpr" options "-p %s" timeout 10 }
DOSemu implements printing as a two-step process:
* Save the file to temporary disk file.
* Issue a command to print the file.
When the time-out expires, DOSemu closes the temporary file and issues
the specified command. The directory /usr/tmp needs to exist to save
the temporary files, and should have world access. Setting the sticky
bit on this directory will help speed up printing. The sticky bit
speeds up file access by maintaining the files in memory rather than
only on disk.
Using Debug Parameters
A large level of debugging information is available under DOSemu. This
information is sent to stderr, but can be sent to a file using
redirection; for example,
dos 2> dbg.out
or through a DOS command-line option,
dos -p dbg.out
There are approximately 20 different debug message types that can be
turned on. When you are configuring DOSemu, the most useful message
type is the config parameter. This points out syntax problems in the
configuration file. Turning on debug information is most helpful when
DOSemu returns to the shell prompt without any error messages.
The following example debug configuration shows all the available
debug parameters :
debug { config off disk off warning off hardware off
port off read off general off IPC off
video off write off xms off ems off
serial off keyb off dpmi off printer off
mouse off}
Other Configuration Parameters
There are several miscellaneous parameters that can be adjusted for
DOSemu. Table 57.2 shows the various parameters and their meanings.
Table 57.2. Other DOSemu configuration parameters.
Parameter Possible Values Meaning
dosbanner on or off Turns on/off welcome banner when booting DOSemu.
mathco on or off Tells MS-DOS if a coprocessor is available. Because
Linux already emulates a math coprocessor, set this to "on".
dpmi on or off Turns on DPMI support. This is a bit unstable, so use
with caution.
FastFloppy number Turns on higher speed floppy access. Use with
caution.
speaker off native Turns on access to speaker by direct access,
emulated or by a speaker emulation mode.
EmuSYS File extension Uses an alternative config.sys file with this
file extension. A good value might be "EMU". Alternative to DOS 6 boot
menus.
EmuBat File extension Uses an alternative autoexec.bat file with this
file extension. Similar to EmuSYS.
Cpu 80286, 80386 CPU type to emulate. Because you won't fool all
programs, use what you really have.
ipxsupport on or off Allows IPX access through the Linux kernel.
xms Size in kilobytes Amount of XMS memory to make available.
ems Size in kilobytes Amount of EMS memory to make available.
Hogthreshold Number The higher the number, the longer DOS can "hog"
the CPU waiting for a keystroke. An initial setting of 5000 is a good
starting point. Set to 0 to turn off hog detection.
bootB
Specifies that DOS is to boot from the floppy configured as B.
port{ }
Allows DOSemu access to specific hardware ports. List the hex values
of hardware ports desired.
mouse Type of mouse Microsoft, Logitech, mmseries, you have Mouseman,
Hitachi, busmouse, Mousesystems, and PS2 are supported.
Runtime Options of DOSemu
Table 57.3 shows command options supported on the DOSemu command line.
Options specified here will override conflicting parameters specified
in the dosemu.conf file. A few other options are available, but are
either intended for development use or are not completely supported as
of yet. Use the -? option to get a complete list of the command
options.
Table 57.3. DOSemu command-line options.
Option Meaning
-A Boot from floppy drive A
-C Boot from hard drive C
-D Set debug options
-F Number of floppy disks to use from dosemu.conf (1-4)
-H Number of hard disks to use from dosemu.conf (1 or 2)
-P Copy debug information to file, same as using 2>
-V Turn on VGA emulation
-c Optimize video performance under virtual consoles
-e Specify the amount of EMS memory to make available
-f Flip definition of A: and B: floppy drives
-k Use raw keyboard console (rawkeyboard in dosemu.conf)
-t Deliver time interrupt 9
-x Specify the amount of XMS memory to make available
-? Print command summary only
-2 Emulate a 286
-3 Emulate a 386
-4 Emulate a 486
Limitations of DOSemu
DOSemu is not perfect yet. Development is underway, with many known
opportunities for speed optimizations and improvements.
Notable Software That Won't Run Under DOSemu
Perhaps the most significant application that does not run under
DOSemu is Windows 3.1. As with Linux in general, volunteers are
working to correct this. Other software that requires DOS Protected
Mode Interface (DPMI) is also likely to cause problems. To find an
up-to-date list of software that has been successfully used under
DOSemu, look for the file /doc/EMUsucess.txt in the DOSemu
distribution.
Hardware Limitations for DOSemu
Not all video cards are currently supported under DOSemu. More popular
cards are supported simply because developers are more likely to have
them. Some non-typical hardware is reported to work under DOSemu with
some patches.
Sound cards are problematic under DOSemu. They have the potential to
perform DMA (direct memory access) to memory the Linux kernel had
allocated elsewhere. A generic sound-card interface that interacted
with the kernel's built-in sound card support would solve this
problem.
Performance Limitations
DOSemu runs slower than a native MS-DOS session. I have successfully
run a few older benchmark programs under DOSemu to
compare the performance degradation to native MS-DOS. Benchmark
results are not a perfect measure, but they do demonstrate potential
performance in some distinct areas. I measured three different areas:
CPU performance, disk performance, and video performance, each of
which produced strangely different results.
CPU Performance
DOSemu's raw CPU speed depends on what else is happening under Linux.
With an otherwise idle Linux box, DOSemu's compute speed is close to
that of a native MS-DOS session. The Landmark Version 2.0 and PC-Bench
Version 5.6 show similar performance, with perhaps a 10 to 20 percent
performance penalty under DOSemu for the instruction mix, CPU, and FPU
measurements.
Disk Performance
Determining the disk speed degradation under DOSemu proved to be
difficult. In some cases there was a performance decrease, and in
others a performance increase. This discrepancy seems directly related
to the quality of support of the controller and disk drive from the
underlying Linux kernel, as well as the built-in caching provided by
Linux.
Linux runs as a pure 32-bit operating system, and handles I/O
operations to disk controllers in bait mode. This, combined with much
better SCSI support, can lead to equal or better disk benchmark
numbers under DOSemu than under native DOS. Not all disks are as fast
under DOSemu, with performance degradation ranging from small to huge.
As with CPU speed, disk speed depends on what other Linux tasks are
doing.
Video Performance
Video support is Linux's Achilles' heel. Text performance is much
slower when not running DOSemu under a virtual console. Under a
virtual console, benchmarked text speed approaches that of native
MS-DOS. When you are using real-world applications, the text speed is
dramatically slower, with an observed speed as low as 20 percent of
the speed under native MS-DOS. Graphics speed is even worse.
Mouse Support
For mouse support, you can get Microsoft compatible mouse drivers from
oak.oakland.edu:/Simtel/msdos/mouse/mouse701.zip (mscmouse). Make sure
you have the correct port assigned to the mouse. Even so, some mice do
not get recognized for up to 60 seconds, so be patient.
Another known problem is that DOSemu is not able to use COM4 after
DOSemu finishes execution. This port is at 0x2E8, /dev/cua3 in Linux
and uses interrupt 5. You can run the command:
setserial /dev/cua3 irq 5
Another cure is to disable the allowvideoportaccess on line in the
config file.
Optimizing DOSemu
There are a few changes that will help DOS performance under DOSemu
short of buying a faster PC.
Using Garrot
Garrot is an MS-DOS based Terminate and Stay Resident (TSR) program
written by Thomas G. McWilliams that releases CPU time from a DOSemu
process back to Linux. Some MS-DOS applications poll endlessly on
events such as keyboard input. Garrot keeps track of how long a DOS
application has been running without giving control back to Linux.
After a threshold of time has expired, control returns to Linux. The
Garrot threshold is best determined by trial and error. A good initial
value is half the bogo-mips value. Bogo-mips is the value that the
Linux kernel assigns for internal delay loops, and is displayed when
booting the Linux kernel.
For CPU-intensive DOS applications, Garrot will cause a minor
degradation in CPU speed. For non-CPU—intensive applications,
Garrot will show a dramatic decrease in overall CPU usage, as measured
by the Linux utility top.
Other Optimization Suggestions
The following parameters in dosemu.conf will help speed up various
aspects of DOSemu:
* Hogthreshold. Set this to half the value shown in boot up messages
for BogoMIP message.
* fastfloppy
* X parameters "updatefreq" and "updatelines"
* -c option on the DOS command line
Because DOSemu runs as a Linux process, any general Linux
optimizations should also help performance under DOSemu. Typical
optimizations include having enough swap space, optimizing the kernel,
and killing unneeded Linux processes.
Sources for More Documentation About DOSemu
The DOSemu manual (dosemu.texinfo) written by Robert Sanders has not
been updated in some time but is still a good source of information.
It is distributed with DOSemu.
The "dosEMU Novice's Altering Guide" or DANG is a road map to the
inner workings of DOSemu. It is designed for the adventurous, those
people who wish to modify the source code themselves. DANG is
maintained by Alistair MacDonald (am20@unix.york.ac.uk) and is posted
periodically to the MSDOS channel of Linux Activists.
The EMU success list (EMUsuccess.txt) is a list of all programs that
have been reported to work with DOSemu. It is posted periodically to
the mailing list. The most recent version can be found on
dspsun.eas.asu.edu/pub/dosemu.
Of course, there is the DOSemu FAQ/HOWTO. But you already know about
that, don't you? It is also posted frequently to the mailing list. The
most recent version can be found on dspsun.eas.asu.edu/pub/dosemu.
Where To Get More Information About DOSemu
Try subscribing to the linux-msdos-digest mailing list. To subscribe,
send e-mail to Majordomo@vger.rutgers.edu with the following command
in the body of your e-mail message:
subscribe linux-msdos-digest your_username@your.email.address
To get rid of these messages, send e-mail to
Majordomo@vger.rutgers.edu with the following command in the body of
your e-mail message:
unsubscribe linux-msdos-digest your_username@your.email.address
______________________________________________________________
NOTE: The Netware-HOWTO by Lauri Tischler (ltischler@fipower.pp.fi)
is now a separate document. It is included with the DOSemu
distribution and may also be found at sunsite.unc.edu.
______________________________________________________________
How DOSemu Works
DOSemu works similar to the DOS feature of MS Windows in that it uses
the virtual 86 (vm86) feature of the i386 and above chips. Under vm86,
a process runs under a private 80x86 environment that is isolated by
the i386 processor from any other process.
In addition to private access to an 80´86 processor, MS-DOS and MS-DOS
applications need to interact with PC hardware through port accesses
and interrupt functions. In vm86 mode, both port access and interrupts
return vm86 back to the DOSemu.
For port access attempts, DOSemu tries to recognize the port, and
either simulates its function or passes the request to the real
hardware. Ports that DOSemu are allowed to map are configured by the
Port parameter in dosemu.conf. Direct access to hardware ports is
possible under Linux through /dev/kmem support.
DOS interrupt functions are widely understood and well-documented.
Interrupts are caught from virtual 86 mode, and are implemented by
executing the equivalent functionality as Linux system calls.
A Brief History of DOSemu and Its Contributing Authors
The first release of DOSemu was written by Matthias Lautner in
September 1992. Since that time, many other people have contributed
major pieces of functionality. There are too many authors to name, but
some of the more significant contributors include Robert Sanders,
James MacLean, Andres Tridgell, Stephen Tweedie, and Andreas Kies.
Other parts of DOSemu functionality were borrowed from Carnegie
Mellon's MACH DOS emulator.
--
Enjoy Linux!
-----It's FREE!-----
¡ù ÐÞ¸Ä:£®netiscpu ÓÚ Jul 25 06:08:29 Ð޸ı¾ÎÄ£®[FROM: mtlab.hit.edu.cn]
¡ù À´Ô´:£®×Ï ¶¡ Ïã bbs.hit.edu.cn£®[FROM: fengyun.hit.edu.]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º613.972ºÁÃë