-   Linux - Server (
-   -   Citrix replacement: using dosemu to run DOS/4G app and SSH/telnet to serve to users (

johnxcitizen 03-31-2011 05:27 AM

Citrix replacement: using dosemu to run DOS/4G app and SSH/telnet to serve to users
Hi, I have an old console-mode DOS 4G DPMI application (32-bit with shim for 16-bit DOS) that is served using Terminal Server and Citrix to users across a private WAN. I would like to replace the server with a Linux box. CPU use is critical for this, the existing server is CPU constrained. There are about 30 users.

I'm thinking of using DOSEmu (I think that DOSEmu virtualises and DOSBox emulates x86?) to get the app to run in Linux, and then set up a SSH server with a custom login script to run the application. Clients are running windows, and can use something like PuTTY to access the application. So far as the users are concerned, the app looks a little different, but works the same way, and runs much faster.

Is DOSEmu the right choice for this? Is it reliable enough for this task? Uptime is king!

I've been trying to use DOSEmu on a fresh Debian Squeeze install, and I get this error:

ERROR: term support not compiled in or not found:
ERROR: /usr/local/lib/dosemu/ cannot open shared object file: No such file or directory
ERROR: Terminal (S-Lang library) support not compiled in.
Install slang-devel and recompile, use xdosemu or console dosemu (needs root) instead.

I'm running as root, either on the console or on SSH, can't get slang-devel or libplugin_term, so does anyone know what is causing this, or how to get DOSEmu onto a fresh copy of Debian and make it work?

paulsm4 03-31-2011 11:54 PM

You've got lots and lots of options.

Furthermore, there's a lot you didn't really tell us:
a) What does this program do?

b) What resources does it require?
Just a keyboard, a DOS monitor, and ++1MB RAM?
Does it use a printer? Communicate over the network? What kind of network: LanMan? Novell? LanTastic?

c) How do users interact with it?
Do they run it locally (on their own "DOS PC")? Does it provide some network service?

Anyway, DOSEMu and DOSBox are both good candidates (although clearly you seem to have issues with DosEMu on your particular distro). Other alternatives you might want to consider are:

* DOS VM under Xen Server

* DOS VM under VMWare

* Virtual Box VM


* MS Virtual PC

* Etc.

'Hope that helps

You might want to try some equivalent of these commands to resolve the DOSEmu runtime errors:

apt-get install xorg-dev
apt-get install libslang2-dev
<= Use "apt-cache search" to find the exact package

johnxcitizen 04-01-2011 05:52 AM

Got it working (sort of), but painfully slow
Hi, thanks for the reply!

a) The program is an old ERP system. Very old.
b) Keyboard, mouse would be nice but is not necessary, beep would be nice but is not necessary, charmode display, more than 1MB RAM (this is 32bit code with a shim to talk to 16bit DOS), printer port redirected to a JetDirect printer (we currently use NET USE to map to a print share which forwards to the printer).
c) The users interact with the program running on the server -- the ERP system tries to do database synchronisation using file subrange locks (!) (and corrupts when it fails to lock properly) -- keeping it running on the one computer (or VM) reduces the incidence of corruption.

So I had another look at DOSEmu and noticed that the latest package is an RPM, so I installed CentOS into an ESXi VM and installed the RPM into it and it worked first try. I served it using SSH to a PuTTY client, and it worked except that there seems to be a charset issue (ASCII lines/boxes are rendered as accented characters).

Solved -- except that it is WAY too slow, even for one user. I noticed that when I entered DOSEmu that running DIR caused output that was less than instant (to compare, Linux LS is instant). The application runs OK (haven't tried printing), until the user attempts to run a report and then it is glacially slow. The server has maxed its CPU but HDD activity is nowhere near max.

I was hoping that DOSEmu would run DOS in an V86 VM (I'm assuming that Windows still uses V86 mode to do this for DPMI applications) so there would be minimal performance impact.

Maybe DOSBox would have better performance? Alternatively, serve from Windows over Telnet or SSH? Or even some kind of multiprocessing FreeDOS (if reliable enough)? If that isn't too far out of scope.

ComputerErik 04-02-2011 06:17 PM

Since this is a native Windows (DOS) application I would imagine that your Citrix setup should really give you the best performance. What is the problem with performance now on Citrix? Or are you just looking for a way to save on licensing, etc.?

If the application is setup such that everyone connecting is limited to share a single CPU and amount of memory, and you are getting those maxed out I doubt there is much you can do short of upgrading the application. Keep in mind that any emulation will add overhead due to the emulation layers, and will still be constrained to the same amount of CPU/Memory as the original application running in native mode.

johnxcitizen 04-03-2011 06:18 AM

The server has a number of CPUs, and while any given instance of the application is limited to a single CPU, the instances are spread out reasonably well (except when one user runs a report, ...).

The main reason for this is that I'm looking to save on bandwidth by delivering the application across a more suitable protocol than ICA but the licensing savings and control on Linux are appealing.

It's a pity about the overhead of the emulation layers considering that all the application is likely to be doing is calling INT21 and writing to display memory.

All times are GMT -5. The time now is 05:40 AM.