Why require a reboot after install?

Discussion in 'Parallels Desktop for Mac' started by tangential, Apr 30, 2006.

  1. tangential

    tangential Bit Poster

    This is mostly idle curiosity, but I am a little puzzled by that.

    I am fairly new to the mac world, but I've worked with *nix systems since the early 80's. Based on other kernel modules I've built and installed in my mac so far (tun driver for example) I thought that loading and unloading modules was something the OS X kernel handled pretty straightforwardly.

    I've run vmware in linux for years now (since their first beta) and I've never had to reboot, even when making major version upgrades. Their install would simply unload their kernel modules (of course no vms could be running) and compile and install new modules.
  2. brettw


    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 :confused:
    Last edited: Apr 30, 2006

Share This Page