Christopher B. Browne's Home Page
cbbrowne@acm.org

13. init

The first process started on a Unix system is called init. It typically starts by rummaging through /etc/inittab to see what processes should be started.

This often begins with running a script named something like /etc/init.d/rcS which controls how to start up the whole variety of system services such as configuring networking, logging, running file servers like NFS , Coda , and SAMBA, as well as other daemons such as mail servers , web servers , database servers, and such.

Once the system services are started, init will start up getty processes to allow users to log in. There are two traditional approaches to it:

The SYSV approach is not particularly elegant, but it is straightforward to write programs to predictably manipulate the set of startup scripts, which is not practical with the BSD approach. Proponents for both approaches can easily find instances where their favorite approach is to be preferred.

Here are links to some of the "traditional" init implementations:

People have built alternatives, trying to fulfil one improvement or another. Some have built "minimalist" alternatives to init, in one case resorting to assembly language to make it as tiny as possible. The more interesting alternatives try to improve functionality and/or reliability:

Google

If this was useful, let others know by an Affero rating

Contact me at cbbrowne@acm.org