Joachim Nilsson 1fece1f9b5 Work around compiler error for breaking strict-aliasing rules
This commit fixes the following warning on an ARM eabi/uClibc system.
helpers.c:86: error: dereferencing pointer 'a' does break strict-aliasing rules

The fix is trivial. Simply set IPv4 addressing scheme in the
struct ifreq instead of the struct sockaddr_in, whic is just
a pointer into the same ifreq anyway.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2012-09-26 23:10:53 +02:00

==============================================================================
        Finit — A fast plugin-based /sbin/init with service monitoring
==============================================================================

Welcome to finit!

This is a heavily extended version of the original /sbin/init replacement
finit_.  The original was a reimplementation of the EeePC "fastinit" daemon
based on its system calls with gaps filled with frog DNA.

Focus of this extended version is on small embedded GNU/Linux systems and
headless miniature servers with a need for extremely fast boot.  In such
environments configurations rarely change and setup is rather static and
straight forward.

In the world of finit we write C "scripts" to boot our system, this is what
gives the system its raw performance and the user full control.

If you chose finit you know what you want, a fast boot with no hassle.


Features
--------

**Service monitoring**
   Restarting a service when it exits

**Plugins**
   Extend and modify finit behavior. See examples in plugins/ directory.
   Plugin capabilities:
   
   * Service callbacks — should the service run/restart/stop?
   * Hooks — hook into the boot at predefined points to extend finit
   * I/O — listen to external events and control finit behaviour/services

Most extensions and functionality not purely related to what an /sbin/init
needs to start a system from the original finit_ has been reactored into
plugins with either hooks or I/O demands.


/etc/finit.conf
---------------

Contrary to most script based init alternatives (SysV init_, upstart_, OpenRC_
and the likes) finit reads its configuration from /etc/finit.conf, see the
source code for available options.

Try out the examples/finit.conf for a Debian 6.0 example configuration
capable of service monitoring SSH, sysklogd, gdm and a console getty!


/etc/finit.d
------------

At the end of the boot, when networking and all services are up, finit calls
its built-in run-parts(8) on the /etc/finit.d/ directory, akin to how the
/ec/rc.local file works in most other inits, only finit runs a directory of
scripts.  This replaces the earlier /usr/sbin/services.sh support of the
original finit_.


Rebooting and Halting
---------------------

Finit handles SIGUSR1 and SIGUSR2 for reboot and halt, and listens to
/dev/initctl so standard Linux reboot and halt commands should also
work.


Debugging
---------

Add finit_debug, or --debug, to the kernel command line to enable trace
messages.  A console getty is always started, see the file finit.h for
more useful comile-time tweaks.

Contact
-------

Finit is maintained collaborativly at https://github.com/troglobit/finit —
please file a bug report, clone it, or send pull requests for bug fixes and
proposed extensions, or become a co-maintainer by contacting the main author.

Regards
 /Joachim Nilsson <troglobit@gmail.com>

.. _finit: http://helllabs.org/finit/
.. _init: http://savannah.nongnu.org/projects/sysvinit
.. _upstart: http://upstart.ubuntu.com/
.. _openrc: http://www.gentoo.org/proj/en/base/openrc/

Languages
C 84.3%
Shell 11.9%
Makefile 2.1%
M4 1.7%