Hi vProud,
A VMware VM boots in much the same way as a physical machine.
I work on the virtual machine's firmware (EFI and BIOS), so I can try to answer questions you might have. The later boot process (when the OS enumerates devices) is specific to the guest OS, so you'll need to name the guest OS if you have questions about that aspect.
I can't simply explain the process from start to finish... There are entire textbook chapters (and quite likely some entire textbooks) written on the complex topic of booting an OS and and enumerating devices in the PC architecture, in varying levels of detail, and this forum's compose window is not big enough to fit it all in, so I would refer you to those publications. A good starting point is the Wikipedia article for Booting, where it describes specifically the boot sequence of IBM PC compatibles.
There's plenty more information available on the details of the process, depending on how much detail you want:
- Intel - Intel 64 and IA-32 Architectures Software Developer Manuals (SDM) for the very early CPU initialization.
- MindShare - ISA System Architecture and PCI System Architecture for lots of information about firmware (UEFI/BIOS) device enumeration, legacy and motherboard devices – although those books contain a lot more information than you are likely to want/need!
- The ACPI (Advanced Configuration and Power Interface) specification for more details of OS device enumeration and some interaction between firmware and the running OS.
- The UEFI forum for information on how EFI/UEFI firmware is designed (not for legacy BIOS).
There is also plenty of source code out there if you want to see how it is done:
- The EFI Developer's Kit II, an open-source implementation of most of what's needed for building an EFI/UEFI firmware ROM image for a system (excludeing platform-specific glue).
- The ACPI Component Architecture which provides an implementation for most of the guts of ACPI (device enumeration/configuration/plug-and-play, power management, and heaps of other stuff).
- And of course the Linux kernel, where you can explore an implementation of just about everything related to CPU, ISA, PCI, ACPI, and almost every other acronym in the world.
Feel free to ask additional questions!
Cheers,
--
Darius