Draft:Setting BIOS date

This page lists instructions on how to set the BIOS date for each virtualization software. Setting the BIOS date is necessary for builds that include a timebomb (specifically Windows 95 build 216 and Windows 2000 build 1627 and above), as they more often than not will not boot or install on the current date. The BIOS date should be before the timebomb date, but it is recommended to set the date close to the date of the build's compilation.

On Windows 10 builds 9833 through 14964 and the Mac OS X Public Beta, you must also disable the network adapter until you are able to disable the internet time sync in the Time and Date settings, otherwise the operating system will attempt to synchronize the system's time during installation and in turn activate the timebomb before you are able to reach the desktop, instantly bricking the build.

86Box

Setting the BIOS date on 86Box will vary depending on the system board that is used. Before you set the BIOS date, ensure that the "Time synchronization" setting in the machine configuration settings is set to "Disabled".

For most systems that have a BIOS setup utility installed on the system board, simply boot into the system setup during the power-on self-test (most BIOS utilize either the Del, F1 or F2 keys or a key combination like Ctrl+Alt+S for entering setup) and there should be an option to change the system time in the BIOS. If there isn't a proper BIOS setup utility available and a system reference/diagnostics disk must be used instead, then the disk should provide an option to change the system time on the board. Be sure to save the settings to the BIOS to set the time. Otherwise, boot into a DOS/Windows 9x boot disk and set the date with date MM-DD-YYYY.

VirtualBox

Setting the BIOS date in VirtualBox requires calculating the amount of milliseconds between the current date and the compilation date of the build you want to install.[1] The virtual machine should be turned off and VirtualBox should be closed before changing the BIOS date to avoid settings conflicts.

  1. Open a command prompt and make the VirtualBox installation directory the current directory (usually, run cd C:\Program Files\Oracle\VirtualBox).
  2. Run VBoxManage setextradata "name of virtual machine" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1. Be sure to set the name of the virtual machine that will have the time sync disabled between the first set of quotation marks.
  3. Calculate the offset between the desired BIOS date and the current date. You can use the date calculator on the Windows Calculator and convert the amount of days to milliseconds (days * 86400000), but the faster way to do so is via the PowerShell command ([datetime]"MM/DD/YYYY" - [datetime]::Now) and using the integer value in TotalMilliseconds (ignoring the values after the decimal).
  4. Run VBoxManage modifyvm "name of virtual machine" --biossystemtimeoffset <TotalMilliseconds>. Use the same name of the virtual machine from step 2 and use the milliseconds value obtained from step 3.

VMware

VMware comes with its own BIOS/EFI firmware that can be booted into, much like 86Box. However, installing VMware Tools or performing specific actions such as resuming from a saved state will cause the time to sync back to the current date. To fully disable the time sync, you need to add the following lines into the .vmx file of the virtual machine:[a]

tools.syncTime = "FALSE"
time.synchronize.continue = "FALSE"
time.synchronize.restore = "FALSE"
time.synchronize.resume.disk = "FALSE"
time.synchronize.shrink = "FALSE"
time.synchronize.tools.startup = "FALSE"
time.synchronize.tools.enable = "FALSE"
time.synchronize.resume.host = "FALSE"

To set the date on a BIOS system, power onto the firmware (VM > Power > "Power On to Firmware" (only available in VMware Workstation) or press the F2 key during POST) and set the BIOS date as you would in a normal BIOS. Be sure to save the settings to the BIOS to set the time.

To set the date on an EFI system, ensure that Secure Boot is disabled then power onto the firmware (VM > Power > "Power On to Firmware") and select "EFI Internal Shell (unsupported option)". Run the date MM/DD/YYYY command to set the date, then exit the shell and boot into the CD-ROM entry or restart the system.

QEMU

QEMU uses various open-source BIOS and EFI/UEFI implementations depending on the guest architecture. The x86 and x86-64 guests, for example, use SeaBIOS and TianoCore EDK II. The former does not include an internal setup utility. Besides of these, the user can also specify custom BIOS ROMs to boot with QEMU.

To set a BIOS date on QEMU, pass the -rtc base=YYYY-MM-DD,clock=vm argument to your launch configuration.

On builds that synchronize the time via online time sync, removing the network adapter (by passing -net none to your launch configuration) is also required until you are able to disable network time synchronization from within the system.

Notes

  1. tools.syncTime = "FALSE" may already exist in the .vmx file. The virtual machine will not start if there are duplicate parameter lines in the .vmx file.

References