Okay, perhaps you've heard the hooplah. DOSEMU can run Windows (sort of.)
DOSEMU has been able to run Windows 3.0 in Real Mode for some time now.
It is possible to boot WINOS2 (the modified version of Windows 3.1 that OS/2 uses) under DOSEMU. Many kudos to Lutz & Dong! But, as far as we know, you cannot install Windows 3.1 in DOSEMU, but you must do that in real mode DOS. Windows 3.1 also does not run in FreeDOS.
However, YOU NEED BOTH LICENSES, for WINDOWS-3.1 as well OS/2 !!!
Get DOSEMU & the Linux source distributions.
Configure DOSEMU typing './default-configure'.
Compile DOSEMU typing 'make'.
Get the OS2WIN31.ZIP distribution from somehere. One place that distributes it is http://www.funet.fi/pub/os2/32bit/win_os2
Unpack the OS2WIN31 files into your WINDOWS\SYSTEM directory. (Infact you only need WINDOWS/SYSTEM/os2k386.exe and the mouse driver)
Startup dosemu (make certain that DPMI is set to a value such as 4096)
Copy the file winemu.bat to your c: drive.
Cross your fingers.
As of version 0.64.3 DOSEMU is able to run Windows in xdosemu. It is safer then starting windows-31 on the console, because when it crashes, it doesn't block your keyboard or freeze your screen.
Get Dosemu & Linux source.
Run "./default-configure" to configure Dosemu.
Type "make" to compile.
For faster graphics (256 colors instead of 16 is faster in xdosemu), get a Trident SVGA drivers for Windows. The files are tvgaw31a.zip and/or tvgaw31b.zip. They are available at garbo.uwasa.fi in /windows/drivers (any mirrors?).
Unpack the Trident drivers.
In Windows setup, install the Trident "800x600 256 color for 512K boards" driver.
Do the things described above to get and install OS2WIN31.
In Dosemu, go to windows directory and start winemu.
Cross your fingers.
Notes for the mouse under win31-in-xdos:
In order to let the mouse properly work you need the following in your win.ini file:
[windows] MouseThreshold1=0 MouseThreshold2=0 MouseSpeed=0
The mouse cursor gets not painted by X, but by windows itself, so it depends on the refresh rate how often it gets updated, though the mouse coordinates movement itself will not get delayed. ( In fact you have 2 cursors, but the X-cursor is given an 'invisible' cursor shape while within the DOS-Box. )
Because the coordinates passed to windows are interpreted relatively, we need to calibrate the cursor. This is done automatically whenever you enter the DOS-Box window: The cursor gets forced to 0,0 and then back to its right coordinates. Hence, if you want to re-calibrate the cursor, just move the cursor outside and then inside the DOS-Box again.