161 lines
5.3 KiB
Markdown
161 lines
5.3 KiB
Markdown
cinit is a fast, small and simple init with support for profiles
|
|
|
|
## Introduction
|
|
|
|
cinit is a fast init system with dependency features and
|
|
profile support. It was orientated on the design of
|
|
Richard Goochs
|
|
[need concept](http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/)
|
|
and Felix von Leitners
|
|
[minit](http://www.fefe.de/minit/).
|
|
Minit does not support real dependencies (you don't know whether the
|
|
service you depend on really started) and the need concept is somehow
|
|
slow (as seen in gentoo).
|
|
In addition, minit needs libowfat and dietlibc, which may not be found
|
|
on every Unix system.
|
|
|
|
### Cinit main features
|
|
|
|
* portability: it should run on every Unix
|
|
* true dependencies (soft and hard!)
|
|
* parallel execution
|
|
* highly customisable (see conf/*)
|
|
* profile support (specify what services to start depending on the profile)
|
|
|
|
|
|
### Why should I use cinit?
|
|
|
|
* To significantly speedup the startup process
|
|
* To use highest level of parallelisation at startup
|
|
* To benefit from real dependencies (so called ***needs*** and ***wants***)
|
|
* To easily create profiles that can be chosen at startup (even **before** init is started!)
|
|
|
|
### How does cinit work?
|
|
|
|
Cinit creates a dependency tree at startup and executes the services.
|
|
A service can have two type of dependencies:
|
|
|
|
* ***wants*** describe soft dependencies (i.e. it's not fatal if the wanted service fails to start)
|
|
* ***needs*** describe hard dependencies (if the needed service fails, the depending won't be started)
|
|
|
|
Let's have a look at an example:
|
|
|
|
|
|
A
|
|
(wants)
|
|
/ \
|
|
|------> B \ C
|
|
| / \ / \
|
|
^ (needs) (needs) (wants)
|
|
| D E F
|
|
| |
|
|
|------<------(needs)----|
|
|
|
|
|
|
Or in words:
|
|
|
|
* B and C do not have dependencies
|
|
* They will be started at the beginning
|
|
* A wants B and C
|
|
* A waits until B and C are executed and started afterwards,
|
|
independently of the success of B and C
|
|
* A will also be started, if B and C fail to start.
|
|
* D needs B
|
|
* D will only be started, if B is successfully started
|
|
* E needs B and C
|
|
* E will only be started, if both B and C are successfully started
|
|
* F wants C and needs B
|
|
* F will only be started, if B is successfully started
|
|
* F waits until C is started and is started afterwards
|
|
|
|
## Getting cinit
|
|
|
|
### Development versions
|
|
You can get the latest (development) version via git:
|
|
|
|
git clone git://git.schottelius.org/cLinux/cinit.git
|
|
|
|
Additionally, the following other git ressources are available:
|
|
|
|
* [Gitweb](http://git.schottelius.org/?p=cLinux/cinit.git;a=summary).
|
|
* [Mirror at github](http://github.com/telmich/cinit)
|
|
* [Mirror at gitorious](http://gitorious.org/cinit)
|
|
|
|
|
|
### Archives
|
|
|
|
Have a look at the [archives](archives).
|
|
|
|
## Documentation
|
|
The documentation is currently spread all over the ***doc/*** directory
|
|
within the tarball and is being cleaned up. Additionally there
|
|
are two presentations available:
|
|
|
|
* [[2005-10-22: (German) speech at Technophil|software/cinit/speeches/2005-10-22]]
|
|
* [[2005-08-06: (German) online speech|software/cinit/speeches/2005-08-06]]
|
|
|
|
### Pre-Configuring
|
|
If you want to fine tune cinit parameters, add different path names,
|
|
change the DESTDIR, ... have a look at conf/*.
|
|
|
|
|
|
### Installing cinit
|
|
You can install cinit parallel to any other init-system, it won't
|
|
kill other init's config nor /sbin/init, if it exists:
|
|
|
|
# make all install
|
|
|
|
This will create /sbin/cinit.
|
|
If /sbin/init does not exist, it will be linked to /sbin/cinit.
|
|
|
|
### Configuring cinit
|
|
You'll have to configure cinit in /etc/cinit and add services,
|
|
before you can use it.
|
|
|
|
Please read doc/configuring.cinit for details.
|
|
Please read doc/FAO if there are still questions open.
|
|
|
|
There are some testing examples below doc/examples/, to be used
|
|
as a starting point.
|
|
|
|
There are currently no tools to merge your existing init-system
|
|
to cinit (like sysvinit-merge, bsd-merge or minit-merge) available,
|
|
but they are in the making (see various bugs in ditz).
|
|
|
|
### Configuring the OS / Kernel
|
|
|
|
After configuring cinit you need to tell your kernel to boot cinit instead
|
|
of your current init system. How to do that depends on your system:
|
|
|
|
* Linux/LILO and Linux/yaboot (ppc):
|
|
* append="init=/sbin/cinit"
|
|
* grub1 and grub2:
|
|
* kernel <normal kernel specification> init=/sbin/cinit
|
|
|
|
## Support
|
|
|
|
### IRC
|
|
You can join the development ***IRC channel***
|
|
[#cstar on irc.freenode.org](irc://irc.freenode.org/#cstar).
|
|
|
|
### Mailing list
|
|
Bug reports, questions, patches, etc. should be send to the
|
|
[cinit mailing list](http://l.schottelius.org/mailman/listinfo/cinit).
|
|
|
|
## Related websites
|
|
|
|
* [cinit](http://www.nico.schottelius.org/software/cinit/)
|
|
* [cinit mailing list](http://l.schottelius.org/mailman/listinfo/cinit)
|
|
* BSD init systems (same codebase):
|
|
* [FreeBSDs init](http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/init/)
|
|
* [NetBSDs init](http://cvsweb.netbsd.org/bsdweb.cgi/src/sbin/init/)
|
|
* [OpenBSDs init](http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/init/)
|
|
* [initng](http://www.initng.org/)
|
|
* [minit](http://www.fefe.de/minit/)
|
|
* [runit](http://smarden.org/runit/)
|
|
* [need/simpleinit](http://www.atnf.csiro.au/~rgooch/linux/boot-scripts/)
|
|
* [sys-v-init](ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/)
|
|
* [upstart](http://www.netsplit.com/blog/work/canonical/upstart.html)
|
|
|
|
|
|
[[!tag unix]]
|