FreeDOS supports vintage hardware IBM PC as well as modern ones, in addition to embedded computers. Unlike MS-DOS, it is composed of free and open source software, licensed under the terms of the GNU General Public License (GPL). It does not require license fees or royalties and creation of custom distributions is permitted. However, in its "util" section, it includes non-GPL software such as 4DOS.
FreeDOS has a sparsely-populated IRC channel, #freedos, on irc.i7c.org.
The FreeDOS distributions are available in several variants:
- fdbasecd lets you install FreeDOS on harddisk. The functionality is similar to what you know from MS DOS.
- fdbasews contains everything from fdbasecd, plus all source code, plus a pre-installed FreeDOS which you can run directly from CDROM. The whole cdrom is still smaller than 50 MB.
- fdfullcd adds many extra programs like compilers and more utilities.
- fdfullws also includes the source codes of all the extra programs.
If your computer cannot boot from cdrom, or if the boot loader on the FreeDOS cdrom does not support your BIOS, then you will have to boot from an existing DOS or from diskette. We provide a special boot diskette which will automatically detect the FreeDOS cdrom and then change to that drive and start the Installer. You can download the diskette from the same place as the ISO images. To create a diskette from the image, use FreeDOS DISKCOPY (which you can also download separately) or the RAWRITE tool or a suitable tool for any operating system you already have. For example in Linux, you can use dd if=theimagefile of=/dev/fd0 to copy a diskette image to a formatted diskette in fd0 (DOS would call that the a: drive).
With the special boot diskette, you can even install on a PC which does not have a cdrom drive: Just copy the ISO image file (cdrom image) to a file called c:fdbootcd.iso and the installer boot diskette will “mount” that file. In other words, it will create a virtual cdrom in a virtual cdrom drive from it.
FreeDOS 1.0 has a few known bugs which are too small to upload updated ISO images yet. However, those bugs can be quite annoying if you do not know how to fix them yourself, so here is a list of bugs and bug fixes.
- (fd)config.sys contains a "SET lang=DE " line if you install German FreeDOS. Note that there is a space after the DE and before the end of the line. This space confuses the translation library of many tools, so they will use the English default messages instead. Use EDIT to edit your config.sys and remove the space. Note that many tools simply do not support translated messages yet. Let us know which tools we should translate next.
- (fd)config.sys is missing the usbaspi line if you installed the usbdos package. Insert this line before the aspidisk or di1000dd line: 123?DEVICEHIGH=%dosdir%\DRIVERS\USB\usbaspi.sys
- the HTML Help command does not support the full set of HTML.
- the HELP command only supports English language yet. You should have a help.com file which always redirects to English.
- to view big text files, use the LIST / LESS style tool PG, which you can find in the EDITORS package set. The DRIVERS package set contains MORESYS, which allows you to view those multi-page help screens of some GNU tools easily: sometool --help >more$ works like sometool --help |more, only better.
- FASTHELP and MAKEROM seem to be incomplete, you may want to download updated versions. The default FORTUNE cookie binary has issues with a self-checker, so you should get the updated version. You can remove the outdated FDFINDCD file.
- there are updated versions of DEFRAG and MEM which are newer than FreeDOS 1.0 - download those separately. The functionality of GS (GhostScript) and the PDF tools for DOS is still quite limited. Stay tuned for updated versions in the future.
- CWSPARAM does not work because not the real CWSDPMI is included. FreeDOS 1.0 contains HXRT DPMI in disguise instead.
- the following packages need a working internet connection during installation - you may want to wait with installing those until you got your FreeDOS internet configured properly. This will also make the initial installation a lot faster. CDRTOOL and DFL (indirectly), FPROT, ASPI, SCSI, USBDOS (this can also make install very slow as it scans the whole USB bus during install), VIA. With the exception of CDRTOOL (MEDIA), DFL (UTIL) and FPROT (UTIL), all those are in the DRIVER package set. See the FdDependencies page for more dependencies. For example many packages need CWSDPMI (and 386+ CPU).
- if you have no internet, you may want to omit: WGET, FDSTPOP, BSFLITE, LNXSMAL, LYNX, OPENXP, VNC, HXRT, WATTCP, ARACHNE, CRYNWR. However, LYNX, LNXSMAL, ARACHNE and HXRT are also useful in offline mode.
- depending on how you install Arachne, some files (*.acf and arachne.cfg) might contain c:\arachne... values for cache / mail / download paths while c:\fdos\arachne... would be correct. If you get cache errors or no connection with Arachne, look there.
- you can get a much shorter PATH when you write batch files to call EMACS, SETEDIT, VIM, FBC and PACIFICC. In addition, you have to run EMACS from within its own directory the first two times anyway, to allow proper self-init of EMACS. Note that DOG contains many binaries, so it is not practical to remove DOG from the PATH and add wrapper batch files to call those. You may want to move many DRIVERS to the DRIVERS directory to keep the BIN directory short.
- the OPENGEM GUI contains only very few programs in the default install.
- MKNOD, MKFIFO, CHOWN, CHGRP and SYNC have no effect. They are only there to make Linux style scripts happy. TELNORG and TELNET are identcial, you can remove TELNORG. ZCAT and GUNZIP are just copies of GZIP: You can define ALIAS commands to save space.
- to use HELPCFG to configure 4DOS 4HELP, you first have to decompress 4HELP with UPX.
- XHARBOUR (a free CLIPPER clone, 8 MB) needs the OWATCOM package: That package needs at least 30 MB disk space. Other large packages are FPASCAL (free Pascal, 31 MB), KRAPTOR (11 MB), Image MAGICK (8 MB), free DOOM (21 MB), and VIM (consists of several packages, ca 20 MB). Without those packages, installing all other (more than 200) packages of the FULLCD needs less than 100 MB disk space.
- the FULLCD includes all files from the BASEWS: This means you can run a complete FreeDOS system directly from the cdrom and all source code of all base packages is included (11 MB). The FULLWS cdrom should not be used: It contains all available source code from all FULLCD packages. You should only download sources for selected non-base packages separately, not the whole FULLWS ISO. This saves our and your bandwidth. Make sure to use our mirrors.
- the "load without drivers" option 4 is not available because no config.sys line uses it. However, autoexec.bat uses it. To solve this, add the following line to (fd)config.sys: 4?ECHO No drivers loaded
- if you do not need long file names, comment out the DOSLFN line. This will also save DOS memory.
- you (more or less) only need SHARE when you run Windows 3, so you can save again some DOS memory by omitting SHARE. It should be possible to get 620 kB DOS memory free now.
- Windows 3.0 and 3.1 must be run in STANDARD mode (type WIN /S (unless you installed the unstablx package), and SHARE must be loaded. Otherwise Windows will crash as soon as you open a DOS box or DOS program in it.
- If you have more than 256 MB RAM, you have to add a line PageOverCommit=1 to your [386Enh] section in the system.ini of your Windows. If you have even more than 1 GB RAM, you will have to use the HIMEM “MAX” option to limit the amount of RAM visible to DOS to something which Windows can handle.
- For the 386 Enhanced Mode of Windows 3.x, including the special Windows for Workgroups 3.11 version, you will have to use the special experimental “2037 unstable” kernel and you must not load EMM386 (or load the Microsoft version).
- If you are experiencing frequent crashes, try to boot without EMM386. It can easily happen that EMM386 tries to give you UMB space at a location which is already in use by something like SCSI, SATA, USB, PCMCIA or a network card. Those are often not detectable with the standard “X=TEST” option to exclude invalid UMB space. In this case, you have to disable EMM386, find out which areas can be used for UMB, and add suitable X=from-to or I=from-to range options to the EMM386 lines in your config.sys; Note that the NOEMS option gives you 64 kB extra UMB space but disables EMS 3.2 support, so only EMS 4.0 compatible programs will be able to use EMS. See the “EMM386 /?” output for more information.
- If you run FreeDOS 1.0 in Bochs x86 PC emulator version <=2.3, you will get a panic message "HALT instruction encountered in the BIOS ROM", when FDAPM loads. This is not a bug in FreeDOS or FDAPM, but in Bochs. Either update Bochs or get latest FDAPM.
Installing on a physical PC.
If your computer has no partitions with FAT filesystem yet, you will have to create one before you can install DOS. For example GPARTED which is included with many Linux distros and many Linux versions which can be run directly from CD or DVD (no installation of Linux on harddisk needed) can resize your existing NTFS Windows partitions to make space for DOS without having to reinstall Windows. FreeDOS will need one FAT type partition: This can be FAT12, FAT16 or FAT32, but FAT16 is clearly the recommended choice: FAT12 is too small and FAT32 is hard to boot from. You can use Windows or Linux to create and/or format the partition, if needed. Of course you can also use the FreeDOS install cdrom for that, but as this cdrom does not allow you to resize existing partitions, you should better use other tools. If you already do have a FAT partition, you can skip all the partition / format steps.
Most of the install process is guided by a menu system and should be self explanatory. The default source and target directories should be used. Note that DOS calls the first DOS compatible partition C: - this may not be the same as the first Windows partition, in particular with Windows XP or NT or 2000. When you booted from the install cdrom, the DOS A: drive will be a virtual boot diskette, and your actual diskette drive will be called B:. As soon as you boot from harddisk or diskette again, the virtual boot diskette will not be there any more, and your real diskette drive will be called A: again. If you install to a C: drive which already has another DOS or Windows 95/98 on it, the installer will often be able to automatically install a boot menu and keep FreeDOS configuration separate from the config and autoexec of the other DOS or Windows.
To be able to boot the installed FreeDOS from harddisk later, your DOS partition must either be the active / bootable one among your primary partitions or you will have to add a DOS menu item to your boot menu. For example Windows NT/2000/XP already includes a boot menu, as does Linux. In Windows, you have to edit boot.ini to create menu items. In Linux, you edit /etc/lilo.conf if you use LiLo or the menu.lst if you use GRUB. In the latter case, you will add something like:
title DOS # 0,3 is the GRUB way of saying /dev/hda4 rootnoverify (hd0,3) # optionally do: makeactive (flag partition as bootable) # select the boot sector of that partition chainloader +1 # this is implicit in non-interactive mode: boot
If you install by running setup.bat, you must make sure that SHSURDRV is in your PATH. You also have to start a recent version of FreeCOM (command.com). You can find such a file in freedos/setup/odin/command.com and (less recent) isolinux/buildcd/command.com on the cdrom.
Okay, I decided to write a Mini How-to to install FreeDOS on a guest PC using Virtual PC. I will guide you step by step how to set it up. All you need is:
- A copy of Virtual PC
- A FreeDOS CD Image file
Click Next and then make sure "Create a new floppy or hard disk image" is selected before you click Next again. Then choose "Create hard disk image" and hit Next. Give the image a location and filename and then hit Next.
In the next screen you can set the space on your virtual hard drive. Use a "dynamically expanding disk image" so the size of the disk image will grow when there is more data in the image. Hit Next when you made your choice.
Now you’re back in the main screen of Virtual PC. Select NEW PC and click Next. Give the guest PC a nice name and hit Next again. Choose GUIDE ME and then click Next. Choose DOS as the operating system and click Next. The memory allocation can be set to 16 MB as an minimum, but 32 MB is alright though. Hit Next when you are content, and in the next screen make sure you choose “Select an existing hard disk image’‘. In the next screen you have to point out the location of your image file you have created with the other wizard. Hit Next then Finish.
Select the new PC and hit “start up. Now at the top of the screen click CD and then “capture image. Point out the location of the FreeDOS CD image (standard the file is called “fdbootcd.iso’‘). Make sure below the floppy picture is greyed out.
Now reboot (Right-alt + R or PC-Reset) if you were too late to mount the image of the FreeDOS CD before the Guest PC was totally booted.
Now you get some sort of menu. Hit 1 followed by ENTER. In the next screen hit 1 and in the screen after that hit 2 if your PC is 386 or higher, otherwise press 1. In the next screen hit 1 again and then 1 again. Read the screen and when you’re done press any key. Read the README or just press ESCAPE to continue. Because we use a fresh hardisk press 4. Read the text again and press any key.
Choose a directory where to install FreeDOS to (I prefer C:\FDOS or C:\DOS). Press any key, and then choose whether you want the SRC_BASE pack or not installed (it is optional). FreeDOS will be installed now. Wait and when it’s done press a key to continue.
When you’re back at the DOS prompt type boot and hit the ENTER key. Now reboot.
When the system is rebooting press DEL. You will come in a BIOS screen. Go to Boot and open the “boot device priority’‘. Make the HD the first boot device. Save changes and exit.
Now when it lets you choose between two options, press 1. Now if you want to use the local CD-ROM driver on your virtual PC, type:
EDIT CONFIG.SYSDelete the “;1?’‘ before this line:
DEVICE=C:\xxx\bin\atapicdd.sys /D:FDCD0001Note “xxx’‘ is the folder you installed FreeDOS.
The problem with this driver is that it is very slow when you use it (I don’t know why, I still have to figure out).
If you want a fast one, make sure you have mounted the FreeDOS CD-ROM, reboot the system, press DEL, goto Boot and make the CD-ROM the first device. In the menu press 1, 1, and then 2. FreeDOS will be loaded and the CD-ROM drive will be much faster.
I haven’t been any further and haven’t used EMM386.EXE. If anyone has experience with it or knows how to use it, please contact me at email@example.com and you can also contact me for questions or if you want to say something or want to judge it.
Sorry for my bad English.
And oh yeah… I’m not responsible for any damage to your hardware or software. It worked for me with no problems.
(AND DON’T COPY THIS AND GET ALL THE CREDIT!!!)
Installing on Linux DOSEmu.
DOSEmu can boot from any real or virtual (diskimage) diskette drive when you do “xdosemu -A”. It can boot from a virtual harddisk with “xdosemu -C”. The latter can be either a special diskimage or simply a Linux directory. Put the ISO file into the Linux directory which simulates C: in your DOSEmu configuration, and boot DOSEmu with our special boot diskette, possibly just the diskimage of it. Then you can follow the normal install process to install FreeDOS on the simulated C: drive of DOSEmu. No partitioning nor formatting will be required, but you will have to convince the installer that the non-FAT C: drive is actually a working install target in some way. You can alternatively create a DOSEmu diskimage drive D: and install to that drive. Then you can swap the drive letters in the DOSEmu configuration at the appropriate time.
Willing to do a little command-line work, to make things easier? Note that the FreeDOS installer just unzips a bunch of packages from the install CDROM, then sets up some defaults for you. So a quick and easy way to install FreeDOS under DOSEmu is just to unzip the packages manually.
Simply unzip all the *.zip packages into a directory, say ‘freedos’, on your Linux filesystem. If you’ve mounted your FreeDOS 1.0 install CDROM as /media/cdrom, then just do this:
$ for f in /media/cdrom/pkgs/*x.zip ; do unzip -L $f -d freedos ; doneYou’ll need to copy the COMMAND.COM shell and the KERNEL.SYS kernel file into the ‘freedos’ directory, so FreeDOS can find them when you start DOSEmu.
$ cp freedos/fdos/bin/command.com freedos/ $ cp freedos/fdos/bin/kernel.sys freedos/Edit your DOSEmu conf to point to your ‘freedos’ directory as your C: drive, and you should be all set!
Installing on OS/2.
This section might be outdated, but the general outline is still the same: You can install to anywhere by simply unzipping all zip files of the distro into a directory and using ZIP. Some parts are already up to date for FreeDOS 1.0, while others might not be.
OS/2 has the ability to run FreeDOS in a Virtual DOS Machine (VDM), which can be started from either a diskette or a diskette-image file. Before beginning the FreeDOS installation, you may want to review the OS/2 VDM documentation by doing the following: Double-click on the Information icon on your desktop; double-click on the Application Considerations icon; click on the + to expand the Application Compatibility topic; click on the + to expand the DOS Application Compatibility topic; read the sections entitled "Running a Specific Version of DOS" and "Creating a DOS Image from a Startup Diskette."
To begin the installation process, start an OS/2 Command Prompt session. Create a directory called FDXFER, and move your .ZIP, files to it. Use your UNZIP program on those files. You can use the DISKCOPY program which is in one of the ZIP files to copy the special boot diskette image to a real diskette: DISKCOPY filename A: will do that, even in OS/2.
When the DISKCOPY operation is complete, enter the following commands:
COPY C:/OS2/MDOS/FSFILTER.SYS A: COPY C:/OS2/MDOS/FSACCESS.EXE A:Next, start the OS/2 System Editor, and add the following line to the top of the A:CONFIG.SYS file:
DEVICE=FSFILTER.SYSSave the file, and exit the editor. On your desktop, double-click on the OS/2 System icon; double-click on the Command Prompts icon; double-click on the DOS from Drive A icon. A full-screen DOS session will start, booting from the A: FreeDOS diskette.
The following steps are optional, and will allow you to start FreeDOS from a diskette image.
To make the diskette image, open an OS/2 Command Prompt session, insert the FreeDOS boot diskette in drive A: and enter:
VMDISK A: C:FREEDOS.IMGThe VMDISK program will display a message, warning that the diskette may not be bootable. Ignore the message and proceed. Next, copy the DOS Full Screen object in your OS/2 Command Prompts folder to the desktop. In the desktop object you just created, open the DOS_Settings on the Session page, and type the full name and path of your boot image file (C:FREEDOS.IMG) under the Startup_Drive option. When you click on this icon, it will boot a FreeDOS session from the image file, which emulates the floppy drive.
If you need to access your physical A: drive after the image session has been started, run the FSACCESS.EXE program which exists on your image file and in the C:/OS2/MDOS directory. The command syntax is: