Skip to content

Latest commit

 

History

History
965 lines (523 loc) · 37.1 KB

File metadata and controls

965 lines (523 loc) · 37.1 KB

Windows 2000

Step-by-step guides for VMware Workstation 17.6.4, focused on running Windows 2000 in a virtual environments. Learn to enable shared folders, USB passthrough and serial port passthrough to control legacy scientific instruments and laboratory hardware, making older software and devices compatible with modern systems. Windows 2000 was an NT-based business operating system and did not include all the drivers available in the consumer-focused Windows 98 SE. Windows XP, on the other hand, bridged the business and home markets and consequently consolidated a much wider driver support base. Windows 2000 reached its official end of life in July 2010, meaning Microsoft no longer provides security updates, bug fixes, or technical support for this operating system.

Notes

VMware Workstation Player 17.6.4 has Windows 2000 as an option for a Virtual Machine. However Windows 2000 is regarded as a legacy Operating System and isn't tested by Broadcom. Moreover the VMware Tools 12.5.3 which comes with VMware workstation player doesn't support Windows 2000. VMware Tools 6.5.5 is the last version of VMware Tools to support Windows 2000 and should be downloaded seperately as an ISO.

On modern hardware, with a 11th-14th Generation Processor, the following entries should be added to the VMX file:

monitor.virtual_exec = "hardware"
monitor.virtual_mmu = "software"
mks.enableVulkanRenderer = "FALSE"
cpuid.0.eax = "0000000X"
cpuid.1.ecx = "00000001"

Before installing VMWare Tools 6.6.5, Windows 2000 SP4 should be installed alongside post-SP4 updates. An ISO of the SP4 update will need to be created and mounted to the VM for installation. The post-SP4 updates should be installed using the WSUS Offline Update 6.6.5 ISO.

Downloads

Windows 2000 ISO

Windows 2000 is considered abandonware and the Windows 2000 ISO and Product Key can be obtained from WinWorld:

WSUS Offline Update

The last version of WSUS Offline Update to support Windows 2000 was 6.6.5. The Website Archive.org hosts the ISO created from WSUS Offline Update before Microsoft removed Windows 2000 downloads from their download servers:

VMware Tools ISO

The Windows 2000 drivers for the Windows 2000 Guest are contained in the VMware Tools Installation ISO. The Website Archive.org hosts the ISO created by VMware before Broadcom removed it:

Configuring Virtual Hardware for a Windows 2000 Guest

Select Player → File → New Virtual machine...

Select I will install this operating system later and then next:

Select Windows 2000 Professional and then next:

Use the default Virtual Machine Name and Location (if Documents is integrated with OneDrive, you may want to move this to a local only location) and select next:

Select 20 GB and select next:

Select customise hardware:

Set the memory to 512 MB:

Set the number of processors to 1:

Under CD/DVD ensure connected at power on is checked and select browse to browse for the Windows 2000 Professional ISO:

Select the Windows 2000 Professional ISO:

Uncheck Connect at Power On for Network Adaptor:

Under USB Controller, select USB 2.0:

Under Sound Card, use the default settings:

Under display uncheck accelerate 3d Graphics:

Select Finish:

Windows 2000 Guest Virtual Machine Configuration File

Navigate to the directory on the Windows 11 Host that the Windows 2000 Guest is installed:

Look for the Windows 2000.vmx file:

Open in Notepad or Notepad++ (recommended):

Press Ctrl+f to begin a search for an option for example bios.bootDelay:

If the line exists it can be modified to a new value. In this case it doesn't exist so can be appended to the end:

bios.bootDelay = "20000"

Modern Generation Processors (11-14th Generation)

Certain legacy settings may need to be configured to run older guest operating systems such as Windows 2000.

Legacy CPU settings:

cpuid.0.eax = "0000000X"
cpuid.1.ecx = "00000001"

These settings help emulate older CPU instructions that Windows 2000 expects.

Legacy monitor / virtualization settings

mks.enableVulkanRenderer = "FALSE"

This disables the Vulkan renderer, forcing VMware to use a more compatible DirectX/software renderer.

Legacy monitor / virtualization settings:

monitor.virtual_exec = "hardware"
monitor.virtual_mmu = "software"
These settings ensure proper CPU and MMU handling for legacy guests.

Installing the Windows 2000 Guest

Select the Windows 2000 Guest and select Play:

The Windows 2000 Professional setup will begin:

Click into the VM and press to proceed:

Note once clicked into the VM, the VM will capture the mouse. To return the mouse to the host PC, press Ctrl + Alt.

Press c to proceed:

Press to install onto the 20 GB Virtual Drive:

Press to format the 20 GB Virtual Drive using NTFS:

Under system locale, select customise:

Select your locale from the dropdown menu and select apply:

Under keyboard layout, select customise:

Select your input language and select apply:

Select next:

Input your name and select next:

Input the product key supplied by WinWorld and select next:

Input the computer name and select next:

Select your timezone and select next:

Select typical settings and select next:

Select next:

Select Finish:

Select next:

Select next:

Select Finish:

Uncheck show this screen at startup and select exit:

Installing Windows 2000 SP4 and Post-SP4 Updates

Select Player → Manage → CD/DVD and select Settings:

Select Browse:

Select the wsusoffline-w2k-enu.iso:

Select OK:

Select My Computer:

Right click the D: drive and select explore:

Launch the update command script (1):

The service pack will install:

Restart the VM when prompted:

Select Restart and OK:

Relaunch the update script (2) and restart the VM when prompted:

Relaunch the update script (3) and restart the VM when prompted:

Relaunch the update script (4):

When all updates are installed no missing update found. Nothing to do! will display.

Install VMware Tools

In the Windows 2000 VM. Select Player → Removable Drives → CD/DVD and then settings:

Select Browse:

Select the vmware-tools-655-win.iso:

Select ok:

Open My Computer and select the CD/DVD (the CD/DVD label and icon are sometimes slow to update on Windows 2000):

Launch the setup:

Select next:

Select typical and next:

Select Install:

Select Finish:

Select Yes to restart the VM:

Right click My Computer and select Properties:

Select the hardware tab and select Device Manager:

There is one unknown device:

Right click it and select Properties:

Select Reinstall Driver:

Select next:

Select next:

Select next:

Selet next:

Select finish:

Select close:

Now there are no errors in the Device Manager:

With VMware tools installed, the VM can be resized:

Backing up the Windows 2000 VM

When the VM is powered down the VM can be backed up by copying the folder Windows 2000 Professional found in Documents → Virtual Machines on the Windows 11 Host PC.

Shared Folders

Create a new folder on the Windows 11 Host or Ubuntu 24.10 Host PC called vmshared:

Select Player → Manage → Virtual Machine Settings:

Select Options → Shared Folders and change the setting to Always Enabled and check Map Network Drive. Select Add:

Select next:

Select browse:

Select the folder vmshared on the Windows 11 Host PC or Ubuntu 24.10 Host PC and then next:

Select next:

Select Enable this Share and Finish:

Select OK:

The shared folder is now mapped as a network drive in the Windows 2000 Guest. Go to My Computer:

Select shared folders on host:

Then the vmshared folder:

Files can be bidirectionally copied and pasted to this folder between the Windows 2000 guest and the Windows 11 host. On the Windows 2000 guest, the folder may need to be refreshed to view changes made on the Windows 11 or Ubuntu 25.10 host. To do this blank click some empty space in the folder and select refresh:

Installing Python

Python will be used as an example of installing a program on Windows 2000:

Note the Windows Installer for Python 3.2 will work on Windows 2000 however the Windows installer for PySerial will only work on Windows XP and later. For PySerial the zipped .tar.gz folder should be used. This should be extracted on the Windows 11 Guest. The Python 3.2 folder and Pyserial 3.0.1 folder can be dragged and dropped from the Windows 11 Host to the Windows 2000 Guest. However drag and drop isn't totally reliable and sometimes stops working until the Windows 2000 Guest is restarted. Therefore shared folders is often better:

Launch the Python 3.2 setup:

Select Install for all User:

Select Next:

Select Next:

Select Finish:

Open My Computer:

Navigate to the C: Drive:

Python 3.2 is installed in the Python32 folder:

In this folder there is the python.exe:

There is no Scripts folder or Python Package Manager pip in this version of Python. The Lib folder containns python's standard libraries:

In this folder is a subfolder called site-packages, where third-party libraries are installed:

In the extracted folder pyserial-3.0.1 (package), copy the serial folder (library):

And paste this to site-packages:

For pyserial, there is the pyserial (package) folder and serial (library) folder. Normally the name of package and library are consistent however sometimes these differ as in the case of pyserial. Usually the differences are for historical reasons (for example a package being forked and the forked package being maintained and the original package being depreciated).

Python was not added to the path during installation, which means the full directory to the python.exe needs to be specified from the command prompt. To add to the path, right click Computer and select Properties:

Select the Advanced Tab and select Environmental Variables:

Under System Variables select Path and Edit:

Append the value:

;C:\Python34\

For clarity my full path looks like the following. The semi-colon is a delimiter:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Python32

Newer versions of Windows often display this in a list for convenience. Using a new line instead, this becomes:

%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
C:\Python32\

The command prompt looks for a command in all of the directories listed in the path as well as the current working directory.

Select OK:

Select OK:

Select Start All Programs → Accessories → Command Prompt:

If the following is input:

python

Notice the Python program is found (which is in the folder C:\Python32\ which is on the Windows path) and the prompt changes to the Python Prompt. The Python print function can be called, supplying a str as an input argument:

print('Hello World!')

The library serial can be imported using:

import serial

To exit the Python program use the function call:

exit()

This exits the Python program and returns to the command prompt.

USB Device Passthrough

A Brother QL-570 label printer will be used as an example of a USB Device that can be connected to the Windows 2000 VM. The Brother QL-570 Windows 2000 Driver can be downloaded from from the Brother website using the Windows 11 Hst PC and copied over to the Windows 2000 VM Desktop:

The driver can be installed:

Select unzip:

Select OK:

Select close:

Go to the extracted folder:

Launch the setup:

Select Start:

The driver install will prompt for connection to the printer:

When a USB device is connected to the Windows 11 Host PC and the Windows 2000 VM is launched, there will be a prompt to connect it to the Windows 11 Host PC or the Windows 2000 VM:

Alternatively the USB device can be connected by going to Player → Removable Devices → Brother QL-570 and selecting Connect:

Sellect OK:

The Brother QL-570 passes through to the Windows 2000 VM via the Windows 11 host USB port is detected:

To complete the printer driver installation the Windows 2000 VM needs to be restarted:

The p-touch editor can now be installed:

Select yes:

Input your user name and select next:

Select next:

Select next:

Select next:

Select next:

Select finish and restart the Windows 2000 VM:

Launch the p-touch editor:

Select the BrotherQL-570 printer:

Create a test label:

Select print:

The ptouch editor on the Windows 2000 VM prints to the QL-570 attached to the host PC using VMwares USB passthrough:

Serial Port Passthrough

Close the Windows 2000 VM. Attach a USB to Serial Port to the Window 11 Host PC:

On the Windows 11 Host PC, right click the Start Button and select Device Manager:

Expand ports (COM & LPT). In this example, the USB Serial COM Port is COM3:

Right click it and select properties:

The Baud rate will be shown, in this case 9600 Bits per second. Update this to match the speed the device you want to connect expects:

The port number can be changed by selecting Advanced:

In this case it will be left at port 3:

Open VMware Player and select Edit Virtual Machine Settings:

Select Add...:

Select Serial Port and Finish:

Select Connect at Power On. Autodetect is useful for a single port, but for multipe ports, it is more useful to select the serial Port indiviually. In this example COM3 will be used:

Select OK:

Launch the VM:

Right click My Computer and select Properties:

Select the hardware tab and then device manager:

Expand ports, note the Windows 11 COM3 is passed through to the Windows 2000 VM as COM1:

Right click the communication port and select properties:

The Baud rate will be shown, in this case 9600 Bits per second. Update this to match the speed the device you want to connect expects (consistent with the settings on the Windows 11 Host):

Select Advanced:

Update the COM Port Number to be consistent with the Windows 11 Host:

In this case COM3. Select OK:

The Serial Port COM3 is now ready for use in the Windows 2000 VM:

I don't have a device that connects via Serial Port, so will test the Serial Port using Python with pyserial. The Serial Port looks like the following:

Pin Number Name
1 Data Carrier Detect (CDC)
2 Received Data (RXD)
3 Transmit Data (TXD)
4 Data Terminal Ready (DTR)
5 Ground (GND)
6 Data Set Ready (DSR)
7 Request to Send (RTS)
8 Clear To Send (CTS)
9 Ring Indicator (RI)

A Python script will be used which essentially transmits the data using pin 3 and then reads it back using pin 2. A Serial port can only read low 0 and high 1 signals, so any data sent via the Serial Port has to be in the form of a byte. In the basic American Standard for Information Interchange (ASCII), each ASCII character is an 8 bit binary sequence:

Char Decimal Hex Binary
H 72 0x48 01001000
e 101 0x65 01100101
l 108 0x6C 01101100
l 108 0x6C 01101100
o 111 0x6F 01101111
(space) 32 0x20 00100000
S 83 0x53 01010011
e 101 0x65 01100101
r 114 0x72 01110010
i 105 0x69 01101001
a 97 0x61 01100001
l 108 0x6C 01101100
\n 10 0x0A 00001010

Open notepad:

Paste in the following code:

import time
import serial

# Replace 'COM3' with your serial port
port = 'COM3'
baudrate = 9600

# Open the serial port
ser = serial.Serial(port, baudrate, timeout=1)

time.sleep(2)  # give the port some time to initialize

# Test data
test_data = b'Hello Serial\n'

# Write data
ser.write(test_data)
print('Sent: {}'.format(test_data))

# Read back data
received = ser.read(len(test_data))
print('Received: {}'.format(received))

# Check if the loopback worked
if received == test_data:
    print('Serial loopback test passed!')
else:
    print('Serial loopback test failed!')

ser.close()

Select file → save as:

Save the file as script.py ensuring that save as type is All Files and Encoding is UTF-8:

The script file is in Documents. Right click the script file and select Properties:

Copy the file location:

The file path contains spaces:

C:\Documents and Settings\Philip\My Documents\script.py

To prevent CMD from taking C:\Documents, and, Settings\Philip\My and Documents\script.py as seperate command line arguments, double quotations much be used:

"C:\Documents and Settings\Philip\My Documents\script.py"

Because this is a long path name, the DOS path is often more convenient:

C:\DOCUME~1\Philip\MYDOCU~1\script.py

The Python script can be launched using:

python C:\DOCUME~1\Philip\MYDOCU~1\script.py

With no pins connected, the following shows:

With pins 2 and 3 connected, the following shows:

The code works as expected and interfaces with the Serial Port which is passed through to the Windows 2000 Guest VM from the Windows 11 Host PC.

Parallel Port Passthrough

VMware can theoretically passthrough a physical parallel port. However, USB-to-parallel adapters are designed exclusively for printers and do not provide true parallel port functionality for other hardware. By the time of Windows 2000, parallel ports were already considered legacy and were rarely included on new PCs. I do not have a parallel port printer available to test passthrough functionality.

PCI/PCIe Card Passthrough

VMware does not support direct passthrough of PCI or PCIe cards to a guest virtual machine. Additionally, there are no USB adapters that replicate the functionality of PCI/PCIe expansion cards.

Return to VMware Installation Guide.

Python is just used as an example of a legacy program to run in a Windows 2000 VM and not covered in detail in this tutorial. For details about using Python, see my other GitHub repository Python Tutorials.