I think its mostly to *ensure* the extensions are loaded. When I've installed B5 and B6 after forcing an unload of the extensions I've found it errs out on "...not having found a driver" or something similar to that if I didn't reboot.
I've played around with how to uninstall Parallels and found that sometimes the extensions seemed to unload (e.g. no err on kextunload) yet when I ran kextstat it would indicate its still loaded. Come to find out the extensions are cached in some manner I don't fully understand yet there is a method to signal them to be removed from cache by touching the extensions dir /System/Library/Extensions (I think kextcache is invoked somehow to look at this at an interval). I found that I also had to touch the directory a few times sometimes to make sure it unloaded. If you look at the crude script in my thread http://forum.parallels.com/thread1226.html you'll see I even had to put it to sleep and touched again to make sure (which is similar to what parallels does in their script). I think this mechanism also works in the reverse and you can't be assured an extension is loaded prior to someone starting the app thus the reboot is done. I do think if they built in more logic to the install script though in theory it should be able to call kextstat from a script and find the extensions are there and then exit the install.
As an added thought -- rebooting is probably a good idea to ensure any extensions not installed by Parallels but the app has a dependency on are at least loaded at boot. In production at work the first step to getting a sane platform is a reboot so I guess whats good for the goose is good for the gander.
Have a look at kextcache kextload kextunload etc. man pages - I didn't have the time nor the desire to fully understand it - I have a hard enough time keeping up with Solaris
Last edited: Apr 30, 2006