What MS-DOS Can Do That Linux Can't

What MS-DOS Can Do That Linux Can't

Linux shares important technical and cultural roots with MS-DOS. They're both text-based operating systems at heart, even though their proponents later developed GUIs which could sit on top of that text interface. Both are largely associated with hardcore geeks rather than casual users. Both ended up flourishing into vibrant developer communities in which tons of people wrote free software for the sake of making something useful or good.

Yet DOS and Linux are very different operating systems. For starters, Linux is much, much larger than DOS. Someone once described Linux to me as "DOS on steroids". This analogy has a kernel of truth to it: An out-of-the-box installation of any major Linux distro can generally do much more than a basic install of DOS. There is so much depth to Linux that you could literally spend the rest of your life tweaking it. Some people will.

For all this functionality and depth, however, there's something to be said for simplicity and streamlining. Linux has garnered so much additional weight that it is, arguably, an even worse example of bloatware than Microsoft Windows, and that's saying a lot. Windows XP installs in about a gigabyte of hard disk space, which is much, much larger than any reasonable operating system should use, but a full install of many Linux distros will run into 5 gigabytes or more. Granted, you can greatly reduce this size by choosing to not install certain optional components, but even so, Linux is big.

The "DOS on steroids" analogy is especially ironic when you consider that because it's so much smaller, DOS can often outperform Linux in terms of speed. Some people think that DOS has been dead for years, but in reality, it is, in many ways, the perfect rendition of the basic PC OS: Give the user a shell and a way to poke values into memory, and let them code the rest. For some people, this is exactly what computing should be.

I won't deny the practicality of an everything-including-the-kitchen-sink OS, but there are certain things MS-DOS has always been able to do that Linux has never done, and never will. Far from being dead, DOS is immortal in its purity of design. I'd like to take a moment to look at a basic list of key things MS-DOS can do that Linux can't.

Work with only 3 files

MS-DOS requires only 3 files to boot: IO.SYS, MSDOS.SYS, and COMMAND.COM. With these three files, you can have a usable DOS complete with shell prompt and some commands for listing and copying files. Granted, the functionality is somewhat limited, but this is a level of setup simplicity that Linux doesn't even begin to approach.

Boot in under 5 seconds

A basically-configured MS-DOS system will finish booting and present you with a command prompt well under 5 seconds after the BIOS POST completes, unless you need to load some device drivers which take a particularly long time to load, in which case this might extend out to 10 seconds or so. Even then, this is a boot time that's a fraction of even the fastest Linux boot time.

Use commands without spaces

In MS-DOS, you can type a command like "cd.." to move up a level, and it will work fine. In Linux, it will not; you need to type "cd ..". The different is the space in between. Similar examples abound; in MS-DOS, you can type "dir/p", without a space between the command and its switch. This is a big deal, even if it might not seem like it.

Run CPU opcodes natively

MS-DOS can run pure machine-language programs natively. This is, in fact, the norm.

Linux requires programs to be compiled into some high-level executable format before they can be run. The old standard for Linux used to be the a.out format; this has since been superceded by ELF (Executable and Linkable Format), but the end result is the same: You're not actually running machine language. Linux isolates the user from the computer by making it impossible to send even basic commands to the CPU.

Be real

Linux generally doesn't run in real mode. There are some hacks available that attempt to shoehorn it into being real, but this is sort of like trying to make a polar bear fly.

MS-DOS runs in real mode by default, without any extra hacks required.

Proponents of protected mode are quick to say that real mode is bad because it has no memory protection, but this is exactly why you want to use real mode. Protected mode is a kludge to prevent people from hurting themselves when they don't know what their software is doing. This is actually the antithesis of the entire Linux mindset of placing power in the hands of the user. By using real mode natively and allowing you to access all memory locations directly, MS-DOS actually does better what Linux is supposed to do: Allow you to use your computer.

...Not to mention the fact that Linux is hard to fit in real mode because the kernel is so large. Getting it into 1 MB of memory is a trick. The MS-DOS kernel fits into a fraction of that space, with room to spare.

Back to the main page