{"id":14420,"date":"2026-07-08T02:00:00","date_gmt":"2026-07-08T06:00:00","guid":{"rendered":"https:\/\/www.both.org\/?p=14420"},"modified":"2026-07-04T16:32:41","modified_gmt":"2026-07-04T20:32:41","slug":"yes-freedos-runs-windows-3-11","status":"publish","type":"post","link":"https:\/\/www.both.org\/?p=14420","title":{"rendered":"Yes, FreeDOS runs Windows 3.11"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"\" data-post-id=\"14420\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div>\n<p class=\"wp-block-paragraph\">For years, the FreeDOS kernel couldn&#8217;t support Windows 3.1 or 3.11\u2014at least, in 386 Enhanced mode. You could get Windows 3.x to run in Standard mode on FreeDOS, but it turns out that Windows 3.x 386 Enhanced mode relied on a lot of MS-DOS internals, and would break if things weren&#8217;t <em>just so<\/em>. Figuring out what Windows expected and making the changes to support Windows was a really tough task.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But thanks to a lot of hard work, several FreeDOS kernel developers (including Andrew Bird, Bernd B\u00f6ckmann, Jeremy Davis, C. Masloch, Tee-Kiah Chia, Sava, Stas Sergeev, Jiri Malak, Tom Ehlert, and others) collected changes and contributions to add the necessary Windows support in the FreeDOS kernel. As of kernel version 2044 (earlier this year) you could finally run Windows 3.x in 386 Enhanced mode with the FreeDOS kernel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And after even more hard work, the kernel developers (including Andrew Bird and Jeremy Davis) have released kernel version 2046 (in late June) with additional Windows 3.x compatibility. To recognize this achievement, I thought it would be interesting to explore running Windows 3.11 on FreeDOS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing Windows 3.1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You will need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the latest FreeDOS kernel<\/li>\n\n\n\n<li>an installation copy of Windows 3.11<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Starting the installation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We release a test version of the FreeDOS distribution every month, with all of the latest updates and fixes, so anyone can test everything at once. The July 2026 (&#8220;T2607&#8221;) test release includes FreeDOS kernel 2046. That means using the T2607 test release is the easiest way to test Windows 3.11 with the latest FreeDOS kernel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Boot the test release, either in a virtual machine or on real hardware. If you&#8217;re installing in a virtual machine, make sure the Windows 3.1 &#8220;disk 1&#8221; installation floppy is loaded in the machine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I started with my QEMU virtual machine running the FreeDOS T2607 test release. When I booted the system to install Windows, I also set up the <code>A:<\/code> floppy drive to use &#8220;disk 1&#8221; from the Windows 3.11 installation. Things will go a lot smoother later on if you start QEMU from the directory that contains the Windows install floppies. I saved my floppy disk images in a subdirectory from where I keep my FreeDOS virtual hard disk image, which meant I had to reference the hard disk image from the <code>..<\/code> directory when I started QEMU:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ qemu-system-i386 -hda ..\/freedos.qcow2 -fda DISK1.IMG<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When you see the FreeDOS boot menu, select the menu option to &#8220;Load FreeDOS low with some drivers (Safe Mode).&#8221; This only loads the HIMEMX driver to support extended memory and skips loading JEMMEX, which can cause problems with Windows 3.11.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"400\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/freedos-boot.png\" alt=\"a computer menu with white text on a black background; menu item 4 is selected: Load FreeDOS low with some drivers\" class=\"wp-image-14404\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When FreeDOS boots to a DOS prompt, change to the <code>A:<\/code> floppy drive and start the Microsoft Windows 3.11 Setup program:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\&gt; A:\nA:\\&gt; SETUP<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"400\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/install-win-1.png\" alt=\"a program install screen: Welcome to Setup\" class=\"wp-image-14405\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The Setup program walks through all of the steps to install and configure Windows 3.11. I selected the &#8220;Express Setup&#8221; which used the defaults.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"400\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/install-win-2.png\" alt=\"a program install screen: Windows Setup\" class=\"wp-image-14406\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">During the installation, the Setup program will ask you to insert the next floppy in the series. If you are installing in QEMU, you will need to use the monitor to change the <code>floppy0<\/code> device to use the next floppy image. Do this with the <code>change floppy0<\/code> command, and specify the filename for the next floppy disk. For example, here&#8217;s a screenshot showing <code>DIR A:<\/code> for the first floppy install disk, then typing <code>change floppy0 DISK2.IMG<\/code> in the monitor. When I run <code>DIR A:<\/code> after that, it shows the contents of the second floppy install disk.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"814\" height=\"698\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-qemu-monitor.png\" alt=\"three overlapping windows; the front window shows DIR commands, the second window shows a &quot;change floppy0&quot; command\" class=\"wp-image-14407\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>That&#8217;s why it&#8217;s easier if you started QEMU from the directory with the Windows 3.11 installation floppy images.<\/em> Otherwise, you have to add a path to the floppy images when you use the <code>change floppy0<\/code> command.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After installing from the first two floppies, the Windows Setup program will switch into graphics mode to complete the install.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/install-win-8.png\" alt=\"a program install screen: copying Paintbrush at 2%\" class=\"wp-image-14408\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When the Windows Setup program is finished, choose the option to &#8220;Return to MS-DOS&#8221; so you can do a manual step next.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/install-win-17.png\" alt=\"a program install screen: Windows 3.1 is now set up\" class=\"wp-image-14409\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Editing the configuration<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before starting Windows for the first time, you need to make a manual edit in the Windows system initialization file. Use the FreeDOS Edit program to edit the <code>C:\\WINDOWS\\SYSTEM.INI<\/code> file, and add the line <code>InDOSPolling=TRUE<\/code> under the <code>[386Enh]<\/code> section.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"400\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/edit-system-ini.png\" alt=\"editing a file in a text editor, the line &quot;InDOSPolling=TRUE&quot; is highlighted\" class=\"wp-image-14410\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>InDOSPolling=TRUE<\/code> setting helps Windows 3.11 better detect changes in the DOS state. By enabling this option, Windows can manage memory and other resources more effectively in a protected mode environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Running Windows 3.11<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After making the configuration change, you only need to start the FreeDOS SHARE program. Windows 3.11 will not run on FreeDOS without SHARE services loaded.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\WINDOWS\\&gt; SHARE\nSHARE installed<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s all you need to run Windows 3.11 on FreeDOS. Start Windows in 386 Enhanced mode with the <code>WIN \/3<\/code> command from the <code>C:\\WINDOWS<\/code> directory, and you&#8217;ll be greeted by the Windows Program Manager:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311.png\" alt=\"several computer icons on a desktop: file manager, control panel, print manager, and others\" class=\"wp-image-14411\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Windows 3.11 on FreeDOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It was quite an odd experience to run Windows on FreeDOS. You might know that I <a href=\"https:\/\/www.both.org\/?p=14240\">started the FreeDOS Project<\/a> because I didn&#8217;t like Windows 3.x.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But Windows 3.11 runs great on FreeDOS! I started by launching the &#8220;About Program Manager&#8221; window, so I could verify that Windows 3.11 was <em>indeed<\/em> running in 386 Enhanced mode\u2014and it is!<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-about.png\" alt=\"a computer information screen: Windows 3.11 in 386 Enhanced Mode\" class=\"wp-image-14412\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I didn&#8217;t have any Windows apps to install, so I experimented with several of the standard Windows accessories and games. As expected, all the standard desktop accessories like the clock and calculator worked fine.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-clock.png\" alt=\"a computer clock showing the time at 3:36\" class=\"wp-image-14414\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-calc.png\" alt=\"a computer calculator showing the result of a calculation: 42\" class=\"wp-image-14413\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I was also able to use Notepad and Write to start new documents. However, this is where I encountered a problem: I could open existing files, but <em>I could not save files<\/em>. Every time I tried to save a document or file to my <code>C:<\/code> drive, Windows complained that it thought the drive was on a network and I couldn&#8217;t write to it. I tried with multiple files and had the same error every time.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-write.png\" alt=\"text in a word processor: This is Windows 3.11 in 386 Enhanced Mode running on FreeDOS\" class=\"wp-image-14416\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-err2.png\" alt=\"an error message: This file is on a network drive with create but no modify privileges\" class=\"wp-image-14415\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After doing some other testing, I think this error is due to a bug in the FreeDOS SHARE command. This will need additional bug fixes. In the meantime, be aware that you can <em>run Windows<\/em> but <em>cannot save files<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minesweeper was a great blast from the past, and I cleared the &#8220;easy&#8221; level in no time.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/minesweeper.png\" alt=\"a grid of squares, some with flags and some with numbers\" class=\"wp-image-14417\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I lucked out with Solitaire and won my first game. But I&#8217;ll admit that I set the options to draw one card at a time, which made the game a bit easier to play.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/win311-sol.png\" alt=\"starting a new game of solitaire, a deck of cards on a green background\" class=\"wp-image-14418\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/www.both.org\/wp-content\/uploads\/2026\/07\/sol-win.png\" alt=\"after winning a game of solitaire, a deck of playing cards jumping across the screen\" class=\"wp-image-14419\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s a testament to the dedication of these developers that FreeDOS can run classic Windows 3.11. Thanks to everyone who is contributing to\u2014or has contributed to\u2014the FreeDOS kernel. You are part of something special.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A major milestone for this open source DOS.<\/p>\n","protected":false},"author":33,"featured_media":7679,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[340,739],"tags":[267,665],"class_list":["post-14420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-freedos","category-windows","tag-freedos","tag-windows"],"modified_by":"Jim Hall","_links":{"self":[{"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/posts\/14420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.both.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14420"}],"version-history":[{"count":4,"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/posts\/14420\/revisions"}],"predecessor-version":[{"id":14424,"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/posts\/14420\/revisions\/14424"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.both.org\/index.php?rest_route=\/wp\/v2\/media\/7679"}],"wp:attachment":[{"href":"https:\/\/www.both.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.both.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.both.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}