I love testing the latest version of Windows 10 via the Windows Insider program but sometimes it is interesting to go back and play with operating systems from the past. Depending on your age, it could be your first time looking at the great-great-great grandfather of Window 10 or a trip down memory lane.
One great feature of Windows 10 Professional is Hyper-V, the ability to run multiple virtual PCs from your PC and this is what I used for my retro Windows project.
My aim was to install Windows 3.1, Windows NT 3.51, Windows 95, Windows NT4 and Windows 2000 on Windows 10 via Hyper-V. Somethings worked and some did not but I did get Microsoft Bob working! So here is my guide to running old versions of Windows on Windows 10 along with a few tips you need to get them working.
Jump to the bottom of the post for my video of the OS in action.
Installation Media
Before you can start, you are going to need the installation media and this is where licensing gets a little tricky. I already had ISO files of Windows NT4 and Windows 2000 but getting hold of Window NT3.51 took a bit more searching. One site I found is winworldpc.com which has install media for a range of old OS, from Windows 1.x up to Windows 2000. You can even try beta versions of Windows and some more obscure operating systems. Later versions of Windows require a product key, which I already had. Downloads from winworldpc.com come in the 7zip format so you are going to need tool that can unpack 7zip files. The virtual floppy drive files are .IMG file type, to use them with Hyper-V you will need to rename them to .VFD files.
Setting up Hyper-V
Hyper-V is Windows’s virtualization technology, and what I will be used to emulate the old hardware. This is part of Windows 10 Professional and not included in the Home version of Windows 10. There are other solutions like Oracle’s Virtual Box.
To turn on Hyper-V go to Windows’s Turn Windows features on or Off, find Hyper-V and tick the box:
After a reboot Hyper-V will be ready.
Creating a retro virtual machine
This part is more or less the same for all versions of Windows. You will need the install media, which will be virtual floppy disk images or virtual CD drive images.
Create a new virtual machine using the wizard in Hyper-V and give it a suitable name.
Select Generation 1 of the machine type.
Select the startup memory of 1024MB and turn off Dynamic memory. The next question on the wizard is the network connection, leave this as Not connected for now.
Next create a new virtual hard disk, I found that a 2GB fixed side VHD files works best. On the install options screen tick the box to install an operation system from a bootable floppy disk or CD/DVD. Use the browse button to location the floppy disk image or CD/DVD and click Finish. This will create your virtual machine.
The next step is to enable legacy support for the guest OS. So load up PowerShell (type Powershell into the search box) and run as administrator. From the command line type the following command:
Now you can start up your virtual machine by going into Hyper-V manager, right clicking and selecting Start. Double click on the virtual machine and it will bring up the virtual machine version.
Network access
For the 32bit systems from Windows NT3.51 and up to Windows 7 you need to use a legacy network adapter rather than the default network adaptor. So go to Hyper-V Manager and select the settings for your VM (right click). In the settings select the Network Adapter and click Remove to remove the adapter.
Then go to Add Hardware and select Legacy Network Adapter.
Select the network switch you created during the setup of Hyper-V. If you do these steps you should be able to get Windows NT4, Windows 2000 etc connected to the internet. Be careful when connecting an old version of Windows to the internet, they were not known for their security!
Windows 1.0, 2.0, 3.11 and Windows 95
Before the birth of Windows 95 all version of Windows ran on top of MS-DOS so if you are going back before Windows 95 you will need to install DOS first. So I grabbed a copy of MS-DOS 3.30 which shipped on two floppies.
I got as far of getting Windows 1.0 started nothing worked past the initial screen so I gave up with that. With Windows 2 I got the startup screen again but nothing past that.
I also had the same problem with Windows 3.11. I got as far as the setup and then I got as far as disk 3.
With Windows 95 I got as far as the final part of the setup and this it got stuck:
Windows NT 3.51
I had more success with true 32bit versions of Windows. For Windows NT 3.51 you get a bootable floppy disk and a CD with the install media. So to get it up and running you mount the NT start up floppy disk and the NT install media. Windows takes you through the setup and pretty soon I was up and running. 2GB fixed virtual drive and 1024MB of memory would great.
You should be able to install Internet Explorer 2 if you want to surf the information super highway! I had more luck getting on the internet on NT4
Windows NT 4
NT4 was a real blast from the past! I have installed many an NT4 system in the distant past so it was like meeting up with an old friend. This was simple to install, as the CD image is bootable so no need for any virtual floppy drives. Using the legacy network driver I was able to get the network up and running and even managed to get Internet Explorer 2 and 3 installed.
I don’t think I will be switching to IE3 and NT4 from Microsoft Edge!
I even tried Netscape Navigator:
How about Microsoft Bob!
Windows 2000
Windows 2000 Professional which is a single bootable CD image and simple to install. Windows 2000 came with Internet Explorer 5.
All the old apps are there like HyperTerminal, Netmeeting and Pinball:
Windows Longhorn
I managed to get Longhorn M3 and M4 builds running but they have expiration dates so they stopped working a couple of hours after setting them up. Longhorn was Microsoft’s code name for the operating system to replace Windows XP. Microsoft reset the project which then became Windows Vista.
Conclusion
It was an interesting trip down memory lane and it was great to see how you can trace Windows 10’s roots right back to Windows NT 3.51, NT4, Windows 2000 and Longhorn. It also shows how flexible and useful Hyper-V is. I ran all the guest operating systems on my Surface Laptop 2, the beauty of running old operating systems is that they don’t take up much disk space or demand much RAM (well maybe not the case for Longhorn!).
I would love to know if any readers have had any luck running old operating systems on Windows 10.
Video
In this video I show some tips to get started and take you back to Windows NT 3.51, Windows NT4, Windows 2000, Windows Longhorn beta, Windows 1.0 and Microsoft Bob! I end the video with a classic blue screen of death!
6 thoughts on “Running old versions of Windows on Windows 10 with Hyper-V”
Thanks for the article Ian. I found it helpful since I’m also trying to get a version of Windows NT running on Hyper-V for a project at work. But I seem to be having some problems. I’ve created the virtual switch and assigned it to the physical NIC on the chassis. The vNIC for the host is configured, tied to the virtual switch and can connect to the network. The vNIC for the Windows NT guest was created in PowerShell and is also tied the virtual switch. Everything in PowerShell and the GUI seems like it is configured properly – legacy vNIC assigned to the virtual switch attached to the physical NIC – but the Windows NT guest cannot connect to the network. Running ipconfig in the command prompt on WNT populates no information, as though there were no network connection. Is there something else I need to do inside of WNT to make it recognize the vNIC created by Hyper-V?
Ian – my dream is to create a VM that is a complete clone of my existing still-running XP machine, with all its apps and data. More – that XP machine was fully updated through 2018 or 2019 (forget which) by using the POS registry trick, which is no longer possible with a new XP install.
My host PC would be my Win 10 Pro 64-bit machine.
Is there a way, not just to install an old OS but to clone in a complete older PC?
Thanks!
There is a tool Microsoft have for creating a VHD image from a real PC. You can then mount that image file in Hyper-V so that would work. ITs called disktovhd
You probably ran into freeze ups because you allotted too much memory to the old OSes. windows 9x/ME had a usable cap of 512mb then would become unstable and crash if you could even get it to boot. NT4 doesn’t like more than 256mb before a certain service pack (dont remember which) so just install sp6 then up the ram from there. Its been too long for me to remember the pre win95 probably have even lower ram cap but its been too long and i don’t remember what it is anymore. hope this helps.
you are 100% correct. Those old Win versions 98-ME are capped at 512 and wont even boot above 512. That probably explains why they did not work on his VM install.
Best to set the old OS\’s as follows:
ME and 98 = 512mb or less
95 = 64mb
3.1 = 16mb
anything older = 8mb
I plan to test these old OS sometime soon (over this winter) with Win11 Hyper-V. I will update my findings when I am done.
I tried doing this myself. I was able to get Windows for Workstations 3.11 working on Virtual Box with SVGA, Sound, and Internet Access.
Windows 3.1 I couldn\’t get the internet to work because Microsoft didn\’t provide a TCP/IP stack and I couldn\’t get WinSock configured manually so I gave up once someone told me 3.11 worked out of the box with networking/internet.
{"id":null,"mode":"button","open_style":"in_place","currency_code":"GBP","currency_symbol":"\u00a3","currency_type":"decimal","blank_flag_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/thedigitallifestyle.com\/w\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"none","featured_image_url":false,"featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"TheDigitalLifestyle.com","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"TheDigitalLifestyle.com","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for being a supporter!","payment_confirmation_title":"TheDigitalLifestyle.com","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Thanks for the article Ian. I found it helpful since I’m also trying to get a version of Windows NT running on Hyper-V for a project at work. But I seem to be having some problems. I’ve created the virtual switch and assigned it to the physical NIC on the chassis. The vNIC for the host is configured, tied to the virtual switch and can connect to the network. The vNIC for the Windows NT guest was created in PowerShell and is also tied the virtual switch. Everything in PowerShell and the GUI seems like it is configured properly – legacy vNIC assigned to the virtual switch attached to the physical NIC – but the Windows NT guest cannot connect to the network. Running ipconfig in the command prompt on WNT populates no information, as though there were no network connection. Is there something else I need to do inside of WNT to make it recognize the vNIC created by Hyper-V?
Ian – my dream is to create a VM that is a complete clone of my existing still-running XP machine, with all its apps and data. More – that XP machine was fully updated through 2018 or 2019 (forget which) by using the POS registry trick, which is no longer possible with a new XP install.
My host PC would be my Win 10 Pro 64-bit machine.
Is there a way, not just to install an old OS but to clone in a complete older PC?
Thanks!
There is a tool Microsoft have for creating a VHD image from a real PC. You can then mount that image file in Hyper-V so that would work. ITs called disktovhd
You probably ran into freeze ups because you allotted too much memory to the old OSes. windows 9x/ME had a usable cap of 512mb then would become unstable and crash if you could even get it to boot. NT4 doesn’t like more than 256mb before a certain service pack (dont remember which) so just install sp6 then up the ram from there. Its been too long for me to remember the pre win95 probably have even lower ram cap but its been too long and i don’t remember what it is anymore. hope this helps.
you are 100% correct. Those old Win versions 98-ME are capped at 512 and wont even boot above 512. That probably explains why they did not work on his VM install.
Best to set the old OS\’s as follows:
ME and 98 = 512mb or less
95 = 64mb
3.1 = 16mb
anything older = 8mb
I plan to test these old OS sometime soon (over this winter) with Win11 Hyper-V. I will update my findings when I am done.
I tried doing this myself. I was able to get Windows for Workstations 3.11 working on Virtual Box with SVGA, Sound, and Internet Access.
Windows 3.1 I couldn\’t get the internet to work because Microsoft didn\’t provide a TCP/IP stack and I couldn\’t get WinSock configured manually so I gave up once someone told me 3.11 worked out of the box with networking/internet.