What version of MS-DOS does Rufus use to make bootable USBs?
Rufus allows for the creation of a bootable MS-DOS flash drive. It does this out of the box as an option without needing to specify an image or ISO.
However, documentation on the tool is virtually non-existent as it is, and I can't find anything that specifies what version of DOS the program uses for this purpose. Does anyone know?
He extracts the version from the Windows file diskcopy.dll
/* Extract the MS-DOS files contained in the FAT12 1.4MB floppy
image included as resource "BINFILE" in diskcopy.dll */
static BOOL ExtractMSDOS(const char* path)
looking at other comments in dos.c that are the DOS files from WinME (DOS 8.0), he does the same patching as shown here:
* COMMAND.COM and IO.SYS from diskcopy.dll are from the WinME crippled version * that removed real mode DOS => they must be patched: * IO.SYS 000003AA 75 -> EB * COMMAND.COM 00006510 75 -> EB
Rufus developer here.
As correctly pointed by @magicandre1981 the version of MS-DOS provided by Rufus is the MS-DOS from Windows Millenium Edition, "uncrippled" to enable boot (I didn't invent this patch, but picked it up from the HP USB and other tools).
Also, and this is the important part, Rufus does NOT embed the MS-DOS files within the application, but picks them up from the Windows system it is running from, because, since the MS-DOS binaries are proprietary and copyrighted by Microsoft, it is illegal for anybody else but Microsoft to distribute MS-DOS binaries, be it in a zip file or an application (as a matter of fact, it appears that HP got into legal problems with Microsoft when they tried to produce a version of their HPUSBFW utility that embedded the Windows 98 MS-DOS files, and Microsoft quickly got them to stop doing that).
So, up to Windows 10, we relied on the fact that the MS-DOS files (from Windows ME) were included in the DLL (diskcopy.dll
) that Windows uses to create DOS bootable floppy disks (which actually contains a complete bootable floppy FAT image), and picked the files from there, which we can legally do.
However, with the introduction of Windows 10, Microsoft dropped the ability to create bootable floppies (since nobody using Windows 10 is expected to boot from floppy) and removed diskcopy.dll
. This means that we don't have a legal way to create MS-DOS bootable USB flash drives any more, and the end result is that:
- If you use Rufus on Windows XP to Windows 8.1: you have the ability to create bootable USBs with either FreeDOS or MS-DOS (WinME edition).
- If you use Rufus on Windows 10 or later: you have the ability to create bootable USBs with FreeDOS only.
In practice, I have yet to encounter a tangible report from someone indicating that FreeDOS does not work where MS-DOS does, which is why I don't consider the loss of MS-DOS support in Windows 10 a big loss. Plus, as opposed to using MS-DOS, which is closed source and which Microsoft has stopped supporting a long time ago, FreeDOS is Open Source and actively supported, so you're usually much better off using FreeDOS.
I decided to test it myself. I created a bootable USB running MS-DOS using Rufus and then booted into it on my laptop. Once in MS-DOS, I ran the ver
command to determine its version, which returned Windows Millennium, aka Windows ME.
I'm guessing that this means the version of MS-DOS used by Rufus is pulled from Windows ME, rather than being one of the earlier, standalone versions. How this ME-integrated version differs from the earlier versions I'm not entirely sure.