This was to be expected, but Yosemite DP1 no longer includes:
/System/Library/LaunchDaemons/com.apple.SystemStarter.plist
<?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.local
and/or rc.shutdown.local
scripts aren’t working anymore. Time to write that plist.
Tip
See 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.
Pingback: Notes from 2014-11-13 Meetup | MacDMV
Pingback: Notes from 2014-11-13 Meetup | Mac Meetups