Iinstalled Windows Virtual PC and Windows XP Mode on my Windows 7 Pro machine. Running XP Mode automatically installed XP on a Virtual PC. I would like to create a second Virtual PC the same as the first.
There's a link near the top of the window that says "Create virtual machine." I click that, follow the prompts, and a new virtual machine is created. Double-clicking it starts the new virtual machine, but it doesn't have an OS installed, so as it tries to boot, it fails and asks for boot disk.
Making a copy of an existing .VHD file will work as a solution, but if you want to start over with a clean Windows XP mode or if you have accidentally trashed your existing XP mode .VHD, here is another way to get multiple XP virtual machines:
When this new virtual machine is powered up, it will begin installing Windows XP into the virtual machine, finding the normal virtual environment of Intel 440BX chipset, S3 Trio video card, ethernet network card, etc. etc.You will need to create a name for the virtual computer (I suggest using the name you used for creating the .VMCX file) and a password for the "Adminstrator" account.
The Virtual Hard Disk (VHD) format is a publicly-available image format specification that allows encapsulation of the hard disk into an individual file for use by the operating system as a virtual disk in all the same ways physical hard disks are used. These virtual disks are capable of hosting native file systems (NTFS, FAT, exFAT, and UDFS) while supporting standard disk and file operations. VHD API support allows management of the virtual disks. Virtual disks created with the VHD API can function as boot disks.
An example of how VHD files are used is the Hyper-V feature in Windows 7, Windows Server 2008, Virtual Server, and Windows Virtual PC. These products use the VHD API to contain the Windows operating system image utilized by a virtual machine as its system boot disk.
The Microsoft Windows Software Development Kit (SDK) integrates Native VHD support for working with virtual disks, making it easier for developers and administrators to create, manage, and deploy Windows images in VHD files using either the platform API support or management tools. It is not necessary to install separate applications or implement a VHD format parser to enable these operations. These APIs allow for generic use of virtual disks independent of any other virtualization technologies.
The vhd is a differencing disk, and its parent is the standard Windows XP Mode base; I still have the old parent, and have verified it is binary identical to the XP Mode base in my new installation of XP Mode.
When I open up the settings for the .vmcx for my old XP mode, and select "Hard Disk 1", the "Virtual hard disk file" is set correctly, but the "Parent Disk:" field is pointing at the wrong path, and I can't see any way to edit it.
The path to the parent is hard-coded inside the .vhd, in several different formats; in my case, both relative and absolute paths, in both ASCII and UTF-16, for 4 total paths.You can get the .vhd file format specification from Microsoft.
But it didn't work; the paths were shown truncated in the Virtual PC settings editor. The string lengths are encoded elsewhere; in my case at 0x4AB, 0x4C3, etc. (I did a hex search for the old path lengths). I updated these lengths, but then the vhd was regarded as invalid by the Virtual PC settings editor. I figured that a checksum was now involved, downloaded the VHD spec, installed Word document viewer so I could read the .doc, and then I wrote the program below. Its output, when handed the path to the vhd, is the updated checksum and the location for the checksum; example output:
We have already observed such issues on WMware virtual machines that have only SCSI hard drives. Adding a virtual IDE or SATA hard drives on such machines will add a hard disk identifier that does not change on each reboot. This will allow PVsyst to run in licensed mode.
To be able to use PVsyst on Azure VM you need to make sure that you attach a secondary hard drive to the VM because the OS harddisk ID will always change when rebooting the machine.
This is an expected behavior, where the format of a virtual disk in multiwriter mode is changed to an unsupported format. For more information about the requirements of virtual disks in multiwriter mode, see Enabling or disabling simultaneous write protection provided by VMFS using the multi-writer flag (1034165).
To prevent this issue from re-occurring, ensure that virtual disks in multiwriter configurations are not converted to the lazyzeroedthick format. To use disks in multiwriter mode, the format must be Thick Provision Eager Zeroed.
To work around this issue if you need to extend a virtual disk in a multiwriter configuration, extend the virtual disk by running the vmkfstools -X command from the ESXi/ESX host command line (this is vSphere Client default behavior). This ensures that the virtual disk format stays in the correct eagerzeroedthick format.
Edit: While this answer was correct at the time (with a few rare exceptions), since then there's been more developments. We now have USB-C, for example, which supports both device and host modes. Many devices - especially SBCs - come with USB-C and a controller which can run in both modes. The main problem is still mostly on the Windows PC side, where there's a lack of any USB-C device mode drivers with the OS. Linux, however, does include USB-C device mode drivers (aka "USB Gadget" drivers - although you may need to compile a custom kernel if they haven't been included in your distribution.)
Unfortunately, you'd have to find a way to wire it onto your motherboard. Technically, it can be done. Practically, you'd have to redesign the motherboard to include it. You might be lucky enough to find an SPI or I2C bus exposed somewhere on your motherboard to allow you to add it, but they're usually wired directly into whatever they're being used for unless you're using a dev board or single-board computer with exposed GPIO and other ports such as a Raspberry Pi.
The other option would be a USB On-the-Go Controller. Motherboards designed for embedded and portable devices tend to have a USB OTG (On-the-go) contoller, which can function as either a Host or Device controller. For example, the aforementioned Raspberry Pi has an On-the-Go Controller, but on all models except the Pi Zero that gets rewired to a host port or an onboard USB hub denying the use of USB device functionality. The BeagleBone Black has an OTG port.
That's not all though - once you've got the hardware, you'd also need the software. Linux has some useful kernel USB Gadget drivers ("USB gadget" is another term for USB peripheral/device) such as g_serial and g_ethernet that allow you to plug your device into another computer and be visible as a serial or ethernet-over-USB device (there are others for exposing a device as mass storage, which allow you to use a file as a block device and expose the computer as a mass storage gadget). The BeagleBone Black tends to come with this enabled by default, so you can simply plug it into your PC over USB and see it as a networked device - and I believe it also appears as a mass storage device by using a composite driver (which allows it to appear as multiple USB device types over a single connection.) The Pi Zero can use these, but does not by default. For Windows or other OSes, you'd probably have to write that device driver yourself.
So, theoretically, you can do it. You can tear down your desktop PC, try and find an unused compatible bus on the motherboard somewhere (most likely some unused pins on a controller IC), or a way to extend an internal I2C or SPI bus, or something you can tear out and replace, and solder a USB OTG or device controller chip onto it. Then you can install Linux and use a gadget driver, or write your own for another OS. Practically, unless you're a top-notch electronics engineer, you're not going to be able to do it. At least, not until someone comes out with that elusive adapter with a device or OTG port on it that plugs into a USB port (theoretically, that could be done with a microcontroller such an Arduino wired to a pair of USB device controller ICs), and writes the drivers to run it.
I do wish people would stop repeating the erroneous claim that all personal computers lack the hardware to act as a USB device/slave/gadget/whatever. I can prove this is not the case. My first example of this is that all Apple Mac computers with a USB-C port have the capability of going into a USB-C slave mode. This is called "Target Disk Mode", and it is documented here: -us/HT201462
This is a function of temporarily turning your $2000 laptop into a $200 USB-C drive. Why do this? So that one can repair the drive on a non-booting Mac for one. How does this work? It works because Apple used a USB-C chip in their computers that is capable of acting as a USB slave/device/whatever, and installed some firmware to allow this function. This chip is not unique to Apple computers, this is also used by a number of other computer manufacturers.
There's more evidence to back up that most every laptop with USB-C ports also have the hardware needed to act as a USB slave/device. Take a laptop that uses USB-C for power and charging, get a USB-C to USB-C, get another computer with a USB-C port that is running Windows. Now, connect the laptop to the Windows computer with the USB-C cable and check the Device Manager for new devices. If the laptop is drawing power from the Windows computer then you should see in the Device Manager the laptop show as a "USB billboard device" in the list of devices. This is the laptop acting as a USB device. It has to appear as a device to a USB Power Delivery capable host, such as a USB-C power brick, to draw more than 5 watts of power. There's other ways of checking this so adjust the process for your preferred operating system or whatever.
There are some people working on expanding the capability of Linux systems to act as USB devices. It works right now for a wide range of USB virtual devices but it's not trivial to setup. I'm hoping that someday soon this capability becomes better supported, and is expected by users to work simply, easily, and with the high performance we expect from USB 3.x devices.
3a8082e126