Have you ever noticed when you create a new VM, a floppy device is present in the GuestOS regardless if you had actually added one or not? If not, it is pretty simple to demonstrate. Create any Windows VM using a non-vSphere 6.5 release, install the OS and then power it on. You should now see a floppy device (A:) show up under "My Computer" as seen in the screenshot below.
Although this may look like a strange behavior (more on this in a bit), it is completely harmless as there is no real floppy device being presented to the VM. For many customers, this behavior was either unnoticed or it was just ignored as it did not bother them. However, there is a concern for some customers who must prove that the virtual hardware seen from the GuestOS matches the virtual hardware presented to the VM, usually for compliance purposes. To prevent a floppy device from showing up, you can edit the BIOS, but this generally does not scale as it must be done manually (no APIs exists) and even some of the BIOS editing utilities are fairly limited in their capabilities.
So why does this happen and how does vSphere 6.5 help?
In talking to one of our Principal Engineers about this topic, as this question comes up from time to time about disabling floppy devices in the BIOS. I came to learn more about the behavior described above and the nice enhancement that was introduced in vSphere 6.5 for Virtual Hardware Plug-N-Play.
The reason for the current behavior is that physical systems (as well as virtual) used to include a SuperIO chip that had always exposed 1 x floppy controller, 2 x serial ports and 1 x parallel port. This meant that even if a floppy device was not present in the VM, the OS would still see one and would just report back that there was no disk in the drive.
Due to the various behaviors of different GuestOS types as well as the firmware types (BIOS or EFI), this problem was solved across a couple of Virtual Hardware releases:
- In vHW8 - ACPI was introduced and would only report a floppy device if one was actually present. For GuestOSes that uses EFI firmware, this worked perfectly. However, for GuestOSes that uses the BIOS firmware, it would still fall back to reading the CMOS and would still report a floppy device even though one was not present.
- In vHW11 - The SuperIO chip was modified to not include these default devices, but this only worked for some GuestOSes. For other GuestOSes, it would still fall back to reading the CMOS data rather than the BIOS data.
The change that was introduced in vSphere 6.5 which does NOT require a Virtual Hardware update was that the Virtual BIOS itself was modified such that it would compute the CMOS state based on the actual state of the floppy device. For customers, this means that as long as you have a vHW8 VM that is powered on from a powered off state (not resumed or vMotion) running on vSphere 6.5, the fixed BIOS will automatically be loaded and the GuestOS will now reflect the actual configured Virtual Hardware of the VM. If you decide to later on add a floppy device, the GuestOS will correctly report it and the same will be true if you remove it. Simply upgrading to vSphere 6.5 and ensuring that you perform a complete power cycle of your VM will give you full plug-n-play support for these devices across all GuestOSes. Just another reason to consider vSphere 6.5 🙂
Below is a screenshot of taking the exact same VM (created in ESXi 6.0), moving the VM to an ESXi 6.5 host and then powering it on. As you can see, the floppy device is no longer showing up.
Aaron Patten says
Nice feature but have seen it break OVAs that relied on a certain device enumeration.