This was to be expected, but Yosemite DP1 no longer includes:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <dict> <key>PathState</key> <dict> <key>/etc/rc.local</key> <true/> <key>/etc/rc.shutdown.local</key> <true/> </dict> </dict> <key>Label</key> <string>com.apple.SystemStarter</string> <key>Program</key> <string>/sbin/SystemStarter</string> <key>QueueDirectories</key> <array> <string>/Library/StartupItems</string> <string>/System/Library/StartupItems</string> </array> </dict> </plist>
The executable /sbin/SystemStarter is also removed, of course, and thus now you have to write LaunchAgents (per-user session) or LaunchDaemons (system-wide) scripts/applications because /etc/rc.local and /etc/rc.shutdown.local are no longer executed. I like this cleanup. Fully in line with Apple’s plan to depreciate StartupItems:
Deprecation Note: Startup items are a deprecated technology. Launching of daemons through this process may be removed or eliminated in a future release of OS X.
Maybe this is just a start and can we expect more cleanups, but for now… let’s just wait and see what the next developer preview brings. At least now you know why your
rc.shutdown.local scripts aren’t working anymore. Time to write that plist.
man launchd and
man launchctl for tips like where to put your plist.
~/Library/LaunchAgents Per-user agents provided by the user.
/Library/LaunchAgents Per-user agents provided by the administrator.
/Library/LaunchDaemons System wide daemons provided by the administrator.
/System/Library/LaunchAgents Mac OS X Per-user agents.
/System/Library/LaunchDaemons Mac OS X System wide daemons.