Crawling through several manuals and blogs i cant find any answer how customization tools (sysprep) or the information find their way into the VM.
By mounting the boot disk over some API (would make sense as the customization depends on scsi0:0 as boot disk - but a Guest on IDE disk can be customized too) ?
A backdoor in the vm-tools (would mean a security threat) ?
Mounting a CDROM or Floppy (unlikely as it works on VMs without floppy or IDE controller) ?
Adding temporarly a disk ?
guestOS customization whether for Linux/Windows is irrelevant of the type of hard disk, so long as the OS type and it's configuration is supported with customization which you can find in the guestOS documentation.
The way customization work as I understand it is, depending whether you're talking about Windows (sysprep) or Linux (linuxprep) the customization of the guestOS such as hostname, IP address, netmask, etc. are stored in the VM directory located on their respective VMFS volumes. This file is in the form of imcXXXX which the actual customization binary file at least in UNIX/Linux, if you customize a VM using the APIs and you don't power on the VM, you wil see this file. Once you power on the VM and the cloning or provision is complete, this file is transferred into the VM, as I understand it, it uses VMware Tools/VIX to do this. Once this is done, depending whether it's Windows or UNIX/Linux the customization file will run to custom the OS. For Windows this would be your standard m$ sysprep, just like how it runs on a traditional physical system. With UNIX/Linux, it's really just a Perl script that executes to customize the IP Address, hostname, etc.
I don't believe this is really well documented by VMware, but basically at a high level that is whats going on when you're customizing an OS, upon the first boot is when the imcXXXX file is executed and you will find the respective log file in C:\Windows\Temp\vmware-imc\guestcust.log or /var/log/vmware-imc/toolsDeployPkg.log
Thanks for the description on how the imcXXXX is passed around. Do you happen to know which package in VMware tools is required to allow this file to be passed around. The reason for the question is our engineering group is trying to limit the packages deployed for VMware tools. However, their well intention idea has broken guest customization and now were trying to figure out which package is missing to fix it.
This is list of packages that are not installed with our custom install of VMware tools.
vmware-tools-esx.x86_64 8.6.5-2 vmware
vmware-tools-esx-kmods.x86_64 8.6.5-2 vmware
vmware-tools-esx-nox.x86_64 8.6.5-2 vmware
vmware-tools-guestsdk.x86_64 8.6.5-2 vmware
vmware-tools-hgfs.x86_64 8.6.5-3 vmware
vmware-tools-libraries-x.x86_64 8.6.5-2 vmware
vmware-tools-plugins-autoUpgrade.x86_64 8.6.5-2 vmware
vmware-tools-plugins-desktopEvents.x86_64 8.6.5-2 vmware
vmware-tools-plugins-dndcp.x86_64 8.6.5-2 vmware
vmware-tools-plugins-hgfsServer.x86_64 8.6.5-2 vmware
vmware-tools-plugins-resolutionSet.x86_64 8.6.5-2 vmware
vmware-tools-plugins-timeSync.x86_64 8.6.5-2 vmware
vmware-tools-plugins-unity.x86_64 8.6.5-2 vmware
vmware-tools-pvscsi-common.x86_64 8.6.5-3 vmware
vmware-tools-thinprint.x86_64 8.6.5-3 vmware
vmware-tools-user.x86_64 8.6.5-2 vmware
vmware-tools-vmblock-common.x86_64 8.6.5-3 vmware
vmware-tools-vmhgfs-common.x86_64 8.6.5-3 vmware
vmware-tools-vmmemctl-common.x86_64 8.6.5-3 vmware
vmware-tools-vmsync-common.x86_64 8.6.5-3 vmware
vmware-tools-vmxnet3-common.x86_64 8.6.5-3 vmware
vmware-tools-xorg-drv-display.x86_64 126.96.36.199-4 vmware
vmware-tools-xorg-drv-mouse.x86_64 188.8.131.52-4 vmware