Arduino Pro Micro (sparkfun) and virtualbox. Uploads with Duemilanove worked

The Pro Micro, Micro, Leonardo, and other ATmega32U4-based boards have a different style of bootloading and resetting compared to Uno, Nano, Duemilanove, and other ATmega328P-based boards. The ATmega328P-based boards do not lose contact with the USB driver when they are resetting and uploading. The ATmega32U4-based boards not only lose contact with the USB temporarily during reset, but they also use a different COM port for the bootloader compared to when the board is running and communicating via Serial.

So, I have found it difficult to get them working via a virtual box, such as connecting to a guest OS in VirtualBox. In theory you can set VirtualBox so both COM ports are mapped to your guest OS, but I don't know if the mapping would happen fast enough to allow the bootloader to do its work. I custom-compiled the Leonardo bootloader to use the same USB identification information as the core, and it is tricky to get perfect, but that did allow me to upload from a VirtualBox guest. It was a tedious exercise and one I did just out of curiosity, but I did not keep notes or keep the custom bootloader, and I moved on to other things. As a result, at this point I just know it can be done, but I found it to be not worth the trouble. I'm sorry because I know that is not going to be useful to you.

In the end I found it more useful to program the ATmega32U4-based boards via ICSP and a programmer instead of USB when it is more convenient to do so, or to use the Optiboot bootloader and an external FTDI adapter and program them like a Pro Mini. I use the Leonardo bootloader and USB when uploading from the host OS.