How to run DOS applications in Linux

On this page

  1. Wine
  2. DOSBox
  3. DOSemu

Chances are that most of you reading along those lines have started your “adventure” in computers through DOS. Although this long deprecated operating system is only running in our memories anymore, it will always hold a special place in our hearts. That said, some of you may still want to drink a sip of nostalgia or show your kids what old days were like by running some MS-DOS applications on your Linux distribution. The good news is, you can do it without much effort!

For this tutorial, I will be using a DOS game I was playing when I was a little kid called “UFO Enemy Unknown”. This was the first ever squad turn-based strategy game released by Microprose a bit over twenty years ago. A remake of the game was realized by Firaxis in 2012, clearly highlighting the success of the original title.


Since DOS executables are .exe files, it would be natural to think that you could run them with wine, but unfortunately you can't. The reason is stated as “DOS memory range unavailability”.

What this means is that the Linux kernel forbids any programs (including wine) from executing 16-bit applications and thus accessing the first 64k of kernel memory. It's a security feature and it won't change, so the terminal prompt to use DOSBox can be the first alternative option.


Install DOSBox from your Software Center and then open your file manager and make sure that you create a folder named “dosprogs” located in your home directory. Copy the game files inside this folder and then open dosbox by typing “dosbox” in a terminal. Now what we need to do is to mount the “dosprogs” folder into dosbox. To do this type mount c ~/dosprogs and press enter on the DOSBox console. Then type c: to enter the newly mounted disk as shown in the following screenshot.

You may then navigate the disk folders by using the “cd” command combined with the “dir” until you locate the game executable. For example, type “cd GAME” to enter the GAME folder and then type “dir” and press enter to see what the folder GAME contains. If the file list is too long to see in a screen, you may also give the “dir /w/p” command a try. In my case, the executable is UFO.bat and so I can run it by typing its name (with the extension) and pressing enter.


Another application that allows you to run DOS executables under Linux is DOS Emulator (also available in the Software Center). It is more straight forward in regards to the mounted partitions as you simply type “D:” and enter on the console interface to access your home directory. From there you can navigate to the folder that contains the DOS executable and run it in the same way we did in DOSBox. The thing is though that while DOSemu is simpler to use, it may not run flawlessly as I found through my testing. You can always give it a try though and see how it goes.

Share this page:

6 Comment(s)

Add comment

Please register in our forum first to comment.


By: Laxator2

I was pleased to see that UFO is still the most people's favourite oldie.

By: CFWhitman

Just as a point of interest, FreeDOS is still under active development and is used on very old hardware or as an embedded system (some companies also install it on new hardware to fulfill regulations in some places that all computers must be sold with a working operating system). Also DR-DOS is still sold and targeted for use as an embedded operating system.

DOSbox is a great way to run some old programs, particularly games. I used it to play through the original Warcraft on a Linux box. Most DOS programs work very well in DOSbox.

By: newGuy

what flavor of linux is this and this set up? From the screenshots id really like to try that UI...!

By: Keegan Reed


By: roger

Note dosbox printersupport is primative or none existant there are hacks and diffrent versions out there that give you some printer support.

By: Njassa

There should be a method to execute DOS-programs from BASH command line, no X-Windows environment needed. I could do that myself, but maybe somebody has done it already. That is not hard, you could just interpreter everything so it would be safe.