SystemStarter

Q. What is SystemStarter and what does it Do?

A. SystemStarter is a BSD derived program that knows how to start and stop System processes. Unlike the init system usually found in Linux, SystemStarter is written in C and uses bundles of information called StartupItems as configuration. In a Linux system, each entry in /ect/init.d is normally a shell-script. StartupItems are made from simple config files and plist (PropertyList files).


Q. What is the advantage of SystemStarter compared to traditional UNIX init scripts?

A. SystemStarter produces the graphical output you see when your mac is booting up. It can produce a graphical output that looks a little more friendly to non-technical users than the sort of thing we expect to see from a Solaris or Linux box.


Q. Where are the StartupItems?

A. System Domain StartupItems can be found in /System/Library/StartupItems/ .Producers of third party applications are not encouraged to add or edit any of the files in this folder as these services are quite fundamental to OS X.

Third party components can be found in /Library/StartupItems/

There is usually no need to change a system StartupItem - any StartupItem in the /Library/StartupItems/ folder takes priority over one in the /System folder.


Q. How do I set what Daemons start at boot time - My system seems to have accumulated many StartupItems for daemons that I do not use all that often?

A. Edit the /etc/hostconfig file to control which StartupItems lauch at startup. Items are formatted, one per line as follows: MAILSERVER=-YES- which would be changed to MAILSERVER=-NO- . Lightweight Daemons are not started this way, however. They are controlled (in Mac OS X 10.2) by "xinetd" which launches them only upon receiving requests on their port. These are controlled by text files in /etc/xinetd.d/ usually one file per named service. Edit the line "disable = no" to control each service. Another way to prevent a service from starting at boot time is to just move the StartupItem out of the way. Unfortunately this prevents the startupitem from being manually started.


Q. How can I make my own StartupItems?

A. See StartupItemHowto


Q. Are there any other technical resources related to this topic?

A. An excellent technical paper including the history of this component can be found here: http://www.usenix.org/events/bsdcon02/full_papers/sanchez/sanchez_html/