Joachim Nilsson c0356b5c7a Massive cleanup to be able to boot Debian 6.0
Update license and copyright information details in all files.
Much cleanup by moving hard coded strings/data to #defines and using more
common default values for each such #define.

finit.c:
        o Make sdown[], startx[] allocated strings by default NULL
        o This fixes the issues where the shutdown handler segfaulted
        o Add ability to handle NULL input to build_cmd() by allocating space
        o Ignore kernel cmdline "quiet" if in debug mode
        o Add support for "network" stanza in finit.conf
        o Mount -n to skip removing /etc/mtab
        o Call swapon to enable swap if enabled in /etc/fstab
        o Cleanup /tmp, /var/run and /var/lock
        o Move sig_setup() *after* mount, sig_init() otoh runs early
        o Start initctl monitor before forking off startx/getty process
        o The startx process is now the console process. Only a getty is
          started when in debug mode. Otherwise only X is started if it
          is properly setup in /etc/finit.conf
        o NOTE: Currently X evdev does not work!
        o Support for /usr/sbin/services.sh has been replaced with finit
          now instead supporting builtin run-parts for /etc/finit.d/

helpers.c:
        o Bug fixes in run_parts() and also added chdir(oldpwd) at bottom.
        o New functions:
          - getuser() similar to getgroup()
          - cls() clear screen, only runs when not in debug mode
          - set_procname() used to set name "console" on console process
          - set_hostname() encapsulates /etc/hostname and sethostname()

signal.c:
        o Split sig_setup() in two: sig_init() and sig_setup()
          The former to be called as soon as possible, while latter is
          supposed to run when the base filesystem is properly up.
        o Remove hard coded distribution specific progress bar write()
        o Add debug messages to do_shutdown()
        o Remove any lingering sync files in sig_setup()

initctl.c:
        o Add debug messages and a new default: case to catch stray runlevels

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2012-09-19 18:06:12 +02:00
2008-08-12 18:01:44 -03:00

Finit -- A reimplementation of the EeePC SysV init replacement "fastinit"
=========================================================================

Finit is a reimplementation of the EeePC "fastinit" program based on its
system calls with gaps filled with frog DNA.

Finit's original purpose was to build upon the general workings of the
EeePC fastinit and improve/optimize it for Xandros or alternative
distributions running on the Eeepc.  However, focus has now shifted to
small embedded Linux systems and headless miniature servers with a need
for extremely fast boot.

Nevertheless, finit comes in three flavors:

o finit-org is a replica of the Asus fastinit,
o finit-mod is an improved drop-in replacement for fastinit, and
o finit is a generic replacement for other systems.

Finit-mod and finit (previously finit-alt) were much improved with
patches from Metalshark.

See the GitHub project's Wiki at https://github.com/troglobit/finit, or
the original author's home page at http://helllabs.org/finit/ for more
information.


Usage scenarios
---------------

1. Provide an extremely fine tuned and fast boot on embedded systems or
   Linux distributions for the EeePC or other netbooks. (finit)

2. Replace the original Eeepc 702 fastinit (finit-mod)

3. Provide a reverse engineered document of the original EeePC fastinit
   implementation. (finit-org)

Finit is distribution-specific.  Currently it generates a finit-mdv
executable for Mandriva 2008/2008.1 systems.  Smurfy ported it to
eeeXubuntu, and parts of his port have been merged to finit.


Finit features
--------------

Finit reads configuration information from /etc/finit.conf. See the
source code for available options.


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 to the kernel parameter line to enable trace messages
and to run a shell after the X server.

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