the key itself plus the cinit release

Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
This commit is contained in:
Nico Schottelius 2009-11-07 21:11:05 +01:00
parent 373cd31b73
commit ca81f97577
1124 changed files with 103823 additions and 1 deletions

View file

@ -30,10 +30,13 @@ You can contact me via E-Mail at
nico-webcontact (at the following domain) schottelius.org
I recommened using PGP to encrypt any mail. The fingerprint of my
[[pgp-key|pgp-key-9217A3DF.txt]] is
[[pgp-key|pgp-key-31877DF0.txt]] is
BFE4 C736 ABE5 406F 8F42 F7CF B8BE F92A 9885 188C
(the [[previous one|pgp-key-9217A3DF.txt]] was BFE4 C736 ABE5 406F 8F42 F7CF B8BE F92A 9885 188C).
## Donations
If you enjoy some stuff I've written, you can donate some money via

View file

@ -0,0 +1,47 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.9 (GNU/Linux)
mQGiBEr1qJMRBADvS7tf7Nn0THB9DTIBv9xI9mZTx2O4JhCg/fLi8z0h81S+2vQy
G/UQpsyOSFYL27PDrKv6vf5yM3Hs2lsELTg1LoU/De8E/wEZDmwpDxOs5gJSsJir
nFeXQQaVyY2Mw7KDrWdVWUxqtAIWjJeD4ZE1Vd1XgDHzQl4b++zHrOAkBwCg8gGy
myKEvAVHcartZOVs76DlgyUEAIaxoqR8A6+8Kza+Xf3SIs4rhvSgytTXUIXwU7TU
oLMkJh41yciYPa921QY8rpcwnWNHcvFNP7OZqoDHifkU1Nni/yNaqDJ7JTU0tZ7p
gXrKk/8gw7+mcVt0okH2jEGlmNOvoBwwlRs8Vyenm6UB2fnpDMytRDh6qafHCold
uGCDA/0Zjm50IY4Lb2HFY+tilbZYNPSq9rfo1hy1esWyzGyg8zPEtbw40i2QKGz/
XcGd0muk2jy0J4IFn8yy9SCd5RHmjNJEWdNwWJwyAwsBOCKvwWk59N/oEMAOpKld
taOIeIf7bpDP0hL+SMtHHufDMZ614rqeyAJCFgMV5UQyJbLnbbQ8TmljbyBTY2hv
dHRlbGl1cyAoRVRIIFp1cmljaCkgPG5pY28uc2Nob3R0ZWxpdXNAaW5mLmV0aHou
Y2g+iGAEExECACAFAkr1tAQCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDX
3MjkMYd98OVnAKCfVF56Bfdkr1f7jt4xHGdWmEcZawCg2qaK6IdzX0i8RQw1QItJ
GzUp8LSIRgQQEQIABgUCSvW61AAKCRC4vvkqmIUYjN6SAJ0SQA0jEs3ABOBtj7Nk
EvfXlX5/NwCgwMijMvBc7DK8HpREdiUQ199tvXy0N05pY28gU2Nob3R0ZWxpdXMg
KHByaXZhdCkgPG5pY28tcHVibGljQHNjaG90dGVsaXVzLm9yZz6IYAQTEQIAIAUC
SvWokwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENfcyOQxh33wQfUAoKQg
JH80pjLHbm1sV5AWCZAelTTnAJ9c9u8fUayVQznWpcx/DlJy+O3DOYhGBBARAgAG
BQJK9brUAAoJELi++SqYhRiMqg4An0ZoJXWFIgkzg7q5SZZTdqPdSqACAJ9YGgY0
4BUb3ciGGF/ukZ4mH+6vHbkEDQRK9aiTEBAAjuEEaCDIE4mdMgHf6QQTfrNUdw7a
OhIA+hXzUsQlcN+4OmaaQBFEssOnup8z4p0jA9Qn4PAceAthe0EMUxNlVtIFC36y
iOtFHc+KA08NMGpJbQoRWBuk8yoTegG1NXhsmmyMFplfaAZtf4obY2lEU5PT18TH
iQ6DVzh20Gyf2Kv7O+8dfOtXT0TDu/D6iriy+u4OS5NEnsTJYWs1nmyqsoUd5L6C
VTz1dAGdEDtqLHFwpQF2EWZMvlm2vjxCHY6QDyKMaPrmEBBrfDHEFFXsQjOCC2xH
M0NmoBBRLaZJhtj1pAf8flcef/km9xWlJA6oxLJ/Prf8drwLLr3kIOa+nx5gDbJH
YI6v36FLsRTuDfT1+1HiFlrtJrVhR3u4B3iNUt8/bWVMGdTGDQv4L4+OiYT2jfSv
iWATGIVrStXm952wGb5aUvTxYJxa1+l/4EaXBncc/shiP+iKHBEW9IE3WEBznBnk
YIlG4p2rS9WcbbMLB/SZTmpZ24C3mzl+B7N9yabd+7CMHI+InbNw0ddGS923I27R
114DUp0y5obgR0DnjINY1TbJHq8uokwR79PAgXKwVsLSZK48oE2JEV4jnJlIg+mH
+bbmedqLQpgagm69lv9ju5gvVYrZ0hshmRVXmLvhlHIWYUmpAzy1sCu1PiI90Yrn
iSfz2GzwpAt1JJMAAwYP/jMIzFZ2+6XgD4isQ2SmmEJ6xpH0HgH7kPRdO0W8aLg9
UElFHEQoKhe8IY1fI9+SmD8SP++rQ2SRLDmUTCwGMc3CnOL6cdmuUVcZNQL+cbpb
wEOO1bjXWTPafcJhTJdrmbvt62hMLw8JFownpkC3+xFOwtzl5L+mYFp9T4yaRq1k
S2oC3QyK3LRq8knZGiqD7KjSTLAt5q48jBHduc276xuPjjgL9AjVKQh99ZHm3XBJ
OGK+UxnQG9MRueE8qJ3ASNmWLtTpVUxkf79gBoAf/enx23vohJco3Qb/Mnzqknoi
APeWDBzp5W1F52vnpOT4seuiAC9O8D0I1GNdulS/I0WrCTSoSx1rlZO7Aabrw3d5
rLO6gD6iWw7tm0leXru7rV4tYeq5ZlxU7hVd7mYm3IGtE16RPHnjLjfpmFvwYw0z
LezFmsaqgdUqXZELVIqo+PassfraQz+a5CDHoNZ/gdC3H7j2BsmnWF8KPXc4YXSl
vayUDt26TEcfn8Yh14hHeWkwRIOeUK5MC+/5ZvaGyunz77YEmzTKnauoqegwMRZR
X5zRbjo3xiUp+RnL6wYRZ9yjgRj3VfwlvujPfbeTXvdqfJhEDLSYpHr0PJfk2M6f
CcwD18nrAH8y1DfRUZb4hKWfCl5BsfCRM7op7SIH2mxBS9rVEoDwap9X69qtCK6l
iEkEGBECAAkFAkr1qJMCGwwACgkQ19zI5DGHffC+4ACffN/xTBaETBiiTihtLYdh
pKP2Q+oAoNZD6RUp3QPhjIH0w7q8FKgdsxcu
=Dkek
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

View file

@ -0,0 +1,4 @@
This is a non-existing file, how did you find it? ;-)
It seems like you know a bit about your system, perhaps
you want to join cinit development in #cLinux on irc.freenode.org?

View file

@ -0,0 +1,4 @@
--- !ditz.rubyforge.org,2008-03-06/config
name: Nico Schottelius
email: nico@ikn.schottelius.org
issue_dir: bugs

View file

@ -0,0 +1 @@
- git

View file

@ -0,0 +1,31 @@
*.o
*.a
MT
ddoc
contrib+tools/cinit.graph.text
config.h
sbin
tmp
os/current
tmpbin
src/os/current
src/ipc/current
src/cinit
*.html
*.htm
*.man
*.texi
*.texi
*.docbook
src/halt.kill
src/poweroff.kill
src/reboot.kill
doc/man/*.[0-9]
doc/man/*.xml
src/cmd
.*.swp
.exclude
src/.configured
src/cinit.halt
src/cinit.poweroff
src/cinit.reboot

View file

@ -0,0 +1,145 @@
#
# 2005-2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Don't edit Makefiles, use conf/* for configuration.
#
# Directories and files
CDIRS=src doc
#
# Targets
#
#
# Warn per default, make sure the user knows what she does
#
warn:
@cat doc/.buildwarn
all: sources documentation
dev-all: all
install clean dist distclean:
@for subdir in ${CDIRS}; do \
echo "Making $@ in $$subdir"; \
(cd $$subdir && ${MAKE} ${MAKEFLAGS} $@) || break; \
done;
.PHONY: sources
sources:
${MAKE} -C src all
.PHONY: documentation
documentation:
${MAKE} -C doc documentation
install-miniconf:
./bin/cinit.install.miniconf
install-dir:
./bin/cinit.install.dir
config:
@./bin/cinit.configure.os
@./bin/cinit.configure.tools
@./bin/cinit.configure.ipc
@touch src/.configured
################################################################################
# Tests
#
tests:
# does not work, due getting killed, due to design :-)
#./scripts/internal/compile_run_as_compiler.sh
./scripts/internal/test_on_hosts.sh ./scripts/internal/compile_test.sh
### User Mode Linux / DIRECTORY
UML_DIR_OS_DEBIAN=lenny
UML_ROOT_DIR=~/cinit/vm/uml/$(UML_DIR_OS_DEBIAN)
UML_ROOT_DIR_ABS=$(shell cd $(UML_ROOT_DIR) && pwd -P)
CONFDIR=etc/cinit/
uml-install-debian:
mkdir -p $(UML_ROOT_DIR)
sudo /usr/sbin/debootstrap $(UML_DIR_OS_DEBIAN) $(UML_ROOT_DIR)
me=$$(whoami); sudo chown -R $$me $(UML_ROOT_DIR)
# only install binaries, no need to test documentation
uml-install-config:
rsync -av --delete ./$(CONFDIR) $(UML_ROOT_DIR)/$(CONFDIR)
uml-install-cinit:
dir=$$(cd $(UML_ROOT_DIR); pwd -P); make -C src DESTDIR=$$dir install
uml-dir-start-cinit: uml-install-config
dir=$$(cd $(UML_ROOT_DIR); pwd -P); linux root=/dev/root rootflags=$$dir rootfstype=hostfs init=/sbin/cinit
uml-dir-start-plain:
./scripts/vm/uml-dir-start-plain.sh $(UML_ROOT_DIR_ABS)
### User Mode Linux / IMAGE
UML_IMG_FILE=~/cinit/vm/uml/Debian-3.0r0.ext2
uml-img-start-cinit:
./scripts/vm/uml-img-start-cinit.sh $(UML_IMG_FILE)
uml-img-start-plain:
./scripts/vm/uml-img-start-plain.sh $(UML_IMG_FILE)
# debian-etch
de-install:
rsync -av --delete ./ root@de:cinit
rsync -av --delete ./etc/cinit/ root@de:/etc/cinit
ssh root@de '(cd cinit; make clean install)'
de-run:
ssh root@de reboot
UBUNTUHOST=cinit@192.168.122.107
UBUNTUCONF=./etc/cinit-ubuntu
UBUNTUINSTALL="cd cinit && make clean && sudo make install"
UBUNTUTEST="sudo reboot"
ubuntu-sync:
rsync -av --delete ./ $(UBUNTUHOST):cinit
ubuntu-install: ubuntu-sync
ssh "$(UBUNTUHOST)" $(UBUNTUINSTALL)
ubuntu-test: ubuntu-install
ssh "$(UBUNTUHOST)" $(UBUNTUTEST)
################################################################################
#
# Developer targets
#
release: ./scripts/internal/cinit.release
./scripts/internal/cinit.release now
scripts/internal/cinit.release: ./scripts/internal/test-cmd.sh
./scripts/internal/test-cmd.sh
WEBFILE=~/privat/computer/net/netzseiten/www.nico.schottelius.org/src/software/cinit.mdwn
.PHONY: web
web: README
cp $< $(WEBFILE)
cinitconfconfdir=../cinit-conf/conf
sync-conf:
rsync --delete -av ./conf/ $(cinitconfconfdir)
cd $(cinitconfconfdir); git add .; git commit -m "sync with cinit/conf"

View file

@ -0,0 +1,238 @@
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 significant 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
* [[cinit-0.3pre18.tar.bz2|archives/cinit-0.3pre18.tar.bz2]]
([browse source](browse_source/cinit-0.3pre18/))
[[changes|browse_source/cinit-0.3pre18/doc/changes/0.3pre18]]
* [[cinit-0.3pre17.tar.bz2|archives/cinit-0.3pre17.tar.bz2]]
([browse source](browse_source/cinit-0.3pre17/))
[[changes|browse_source/cinit-0.3pre17/doc/changes/0.3pre17]]
* [[cinit-0.3pre16.tar.bz2|archives/cinit-0.3pre16.tar.bz2]]
([browse source](browse_source/cinit-0.3pre16/))
[[changes|browse_source/cinit-0.3pre16/doc/changes/0.3pre16]]
* [[cinit-0.3pre15.tar.bz2|archives/cinit-0.3pre15.tar.bz2]]
([browse source](browse_source/cinit-0.3pre15/))
[[changes|browse_source/cinit-0.3pre15/doc/changes/0.3pre15]]
* [[cinit-0.3pre14.tar.bz2|archives/cinit-0.3pre14.tar.bz2]]
([browse source](browse_source/cinit-0.3pre14/))
[[changes|browse_source/cinit-0.3pre14/CHANGES]]
* [[cinit-0.3pre13.tar.bz2|archives/cinit-0.3pre13.tar.bz2]]
([browse source](browse_source/cinit-0.3pre13/))
[[changes|browse_source/cinit-0.3pre13/CHANGES]]
* [[cinit-0.3pre12.tar.bz2|archives/cinit-0.3pre12.tar.bz2]]
([browse source](browse_source/cinit-0.3pre12/))
[[changes|browse_source/cinit-0.3pre12/CHANGES]]
* [[cinit-0.3pre11.tar.bz2|archives/cinit-0.3pre11.tar.bz2]]
([browse source](browse_source/cinit-0.3pre11/))
[[changes|browse_source/cinit-0.3pre11/CHANGES]]
* [[cinit-0.3pre10.tar.bz2|archives/cinit-0.3pre10.tar.bz2]]
([browse source](browse_source/cinit-0.3pre10/))
[[changes|browse_source/cinit-0.3pre10/CHANGES]]
* [[cinit-0.3pre9.tar.bz2|archives/cinit-0.3pre9.tar.bz2]]
([browse source](browse_source/cinit-0.3pre9/))
[[changes|browse_source/cinit-0.3pre9/CHANGES]]
* [[cinit-0.3pre8.tar.bz2|archives/cinit-0.3pre8.tar.bz2]]
([browse source](browse_source/cinit-0.3pre8/))
[[changes|browse_source/cinit-0.3pre8/CHANGES]]
* [[cinit-0.3pre7.tar.bz2|archives/cinit-0.3pre7.tar.bz2]]
([browse source](browse_source/cinit-0.3pre7/))
[[changes|browse_source/cinit-0.3pre7/CHANGES]]
* [[cinit-0.3pre6.tar.bz2|archives/cinit-0.3pre6.tar.bz2]]
([browse source](browse_source/cinit-0.3pre6/))
[[changes|browse_source/cinit-0.3pre6/CHANGES]]
* [[cinit-0.3pre5.tar.bz2|archives/cinit-0.3pre5.tar.bz2]]
([browse source](browse_source/cinit-0.3pre5/))
[[changes|browse_source/cinit-0.3pre5/CHANGES]]
* [[cinit-0.3pre4.tar.bz2|archives/cinit-0.3pre4.tar.bz2]]
([browse source](browse_source/cinit-0.3pre4/))
[[changes|browse_source/cinit-0.3pre4/CHANGES]]
* [[cinit-0.3pre3.tar.bz2|archives/cinit-0.3pre3.tar.bz2]]
([browse source](browse_source/cinit-0.3pre3/))
[[changes|browse_source/cinit-0.3pre3/CHANGES]]
* [[cinit-0.3pre2.tar.bz2|archives/cinit-0.3pre2.tar.bz2]]
([browse source](browse_source/cinit-0.3pre2/))
[[changes|browse_source/cinit-0.3pre2/CHANGES]]
* [[cinit-0.3pre1.tar.bz2|archives/cinit-0.3pre1.tar.bz2]]
([browse source](browse_source/cinit-0.3pre1/))
[[changes|browse_source/cinit-0.3pre1/CHANGES]]
* [[cinit-0.2.1.tar.bz2|archives/cinit-0.2.1.tar.bz2]]
([browse source](browse_source/cinit-0.2.1/))
[[changes|browse_source/cinit-0.2.1/CHANGES]]
* [[cinit-0.2.tar.bz2|archives/cinit-0.2.tar.bz2]]
([browse source](browse_source/cinit-0.2/))
[[changes|browse_source/cinit-0.2/CHANGES]]
* [[cinit-0.1.tar.bz2|archives/cinit-0.1.tar.bz2]]
([browse source](browse_source/cinit-0.1/))
[[changes|browse_source/cinit-0.1/CHANGES]]
* [[cinit-0.0.8.tar.bz2|archives/cinit-0.0.8.tar.bz2]]
([browse source](browse_source/cinit-0.0.8/))
[[changes|browse_source/cinit-0.0.8/CHANGES]]
* [[cinit-0.0.7.tar.bz2|archives/cinit-0.0.7.tar.bz2]]
([browse source](browse_source/cinit-0.0.7/))
[[changes|browse_source/cinit-0.0.7/CHANGES]]
* [[cinit-0.0.6.tar.bz2|archives/cinit-0.0.6.tar.bz2]]
([browse source](browse_source/cinit-0.0.6/))
[[changes|browse_source/cinit-0.0.6/CHANGES]]
* [[cinit-0.0.5.tar.bz2|archives/cinit-0.0.5.tar.bz2]]
([browse source](browse_source/cinit-0.0.5/))
[[changes|browse_source/cinit-0.0.5/CHANGES]]
* [[cinit-0.0.4.tar.bz2|archives/cinit-0.0.4.tar.bz2]]
([browse source](browse_source/cinit-0.0.4/))
[[changes|browse_source/cinit-0.0.4/CHANGES]]
## 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***
[#cLinux on irc.freenode.org](irc://irc.freenode.org/#cLinux).
### 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]]

View file

@ -0,0 +1,33 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Create a minimal "usable" config
#
set -e
. "$(dirname $0)/cinit-conf.read-conf"
cinit-conf.svc.init
cinit-conf.svc.categories
cinit-conf.svc.mount.proc
cinit-conf.svc.mount.root
cinit-conf.svc.shell
cinit-conf.svc-boot-enable "local-services/shell"

View file

@ -0,0 +1,42 @@
#!/bin/sh
#
# 2005-2008 Nico Schottelius (nico-cinit-conf at schottelius.org)
#
# This file is part of cinit-conf.
#
# cinit-conf is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit-conf is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit-conf. If not, see <http://www.gnu.org/licenses/>.
#
# cinit: read configuration into variables
# Date: 2005-05-24 (Last Changed: 2005-08-08)
#
hier="${0%/*}"
# try environment first
if [ "$CINIT_CONF_CONF_DIR" ]; then
CONFDIR=$CINIT_CONF_CONF_DIR
elif [ -d "${hier}/../conf/" ]; then
CONFDIR="${hier}/../conf/"
elif [ -d "/etc/cinit-conf/" ]; then
CONFDIR="/etc/cinit-conf/"
else
echo 'Did not find cinit-conf configuration!' >&2
echo "Please set the variable CINIT_CONF_CONF_DIR" >&2
exit 1
fi
CONFDIR=$(cd "${CONFDIR}" && pwd -P)
echo $CONFDIR

View file

@ -0,0 +1,490 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Try to migrate archlinux to cinit
#
set -e
################################################################################
#
# Base layout, same for every OS
#
cinit-conf.svc.init
cinit-conf.svc.categories
# Arch Linux has a minimal /etc/inittab, nice to migrate!
# Arch only starts /etc/rc.sysinit. Even nicer to migrate!
# These are covered already by our existing scripts
#/bin/mount -n -t tmpfs none /dev -o mode=0755
#/bin/mount -n -t proc none /proc
#/bin/mount -n -t sysfs none /sys
# Copy static device nodes to /dev
# /bin/cp -a /lib/udev/devices/* /dev/
cinit-conf.svc.udev.copy-static
# start up our mini logger until syslog takes over
/sbin/minilogd
# anything more serious than KERN_WARNING goes to the console
# 'verbose' cmdline parameter enables more messages
if /bin/grep -q " verbose" /proc/cmdline; then
/bin/dmesg -n 8
else
/bin/dmesg -n 3
fi
# enable rtc access
/sbin/modprobe rtc-cmos >/dev/null 2>&1
RTC_MAJOR=$(/bin/grep -w rtc /proc/devices 2>/dev/null)
RTC_MAJOR="${RTC_MAJOR%% *}"
if [ -n "$RTC_MAJOR" ]; then
/bin/mknod /dev/rtc0 c $RTC_MAJOR 0
/bin/ln -s /dev/rtc0 /dev/rtc
fi
HWCLOCK_PARAMS="--hctosys"
if [ "$HARDWARECLOCK" = "UTC" ]; then
HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
elif [ "$HARDWARECLOCK" = "localtime" ]; then
HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
else
HWCLOCK_PARAMS=""
fi
# Set clock early to fix some bugs with filesystem checks
# Clock is set again later to match rc.conf
if [ -n "$HWCLOCK_PARAMS" -a -f /etc/localtime ]; then
/sbin/hwclock $HWCLOCK_PARAMS --noadjfile
fi
echo > /proc/sys/kernel/hotplug
if [ -x /sbin/udevadm ]; then
stat_busy "Starting UDev Daemon"
/sbin/udevd --daemon
stat_done
else
# Static /dev, our last resort
status "Using static /dev filesystem" true
fi
# Trigger udev uevents
if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then
stat_busy "Triggering UDev uevents"
/sbin/udevadm trigger
stat_done
fi
# Load modules from the MODULES array defined in rc.conf
if ! [ "$load_modules" = "off" ]; then
if [ -f /proc/modules ]; then
stat_busy "Loading Modules"
for mod in "${MODULES[@]}"; do
if [ "$mod" = "${mod#!}" ]; then
/sbin/modprobe $mod
fi
done
stat_done
fi
if [ -d /proc/acpi ]; then
stat_busy "Loading standard ACPI modules"
ACPI_MODULES="ac battery button fan processor thermal"
k="$(echo $BLACKLIST ${MOD_BLACKLIST[@]} | /bin/sed 's|-|_|g')"
j="$(echo ${MODULES[@]} | /bin/sed 's|-|_|g')"
#add disabled MODULES (!) to blacklist - much requested feature
for m in ${j}; do
[ "$m" != "${m#!}" ] && k="${k} ${m#!}"
done
# add disablemodules= from commandline to blacklist
k="${k} $(echo ${disablemodules} | /bin/sed 's|-|_|g' | /bin/sed 's|,| |g')"
for n in ${ACPI_MODULES}; do
if ! echo ${k} | /bin/grep "\<$n\>" 2>&1 >/dev/null; then
/sbin/modprobe $n > /dev/null 2>&1
fi
done
stat_done
fi
fi
# Wait for udev uevents
if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then
stat_busy "Waiting for UDev uevents to be processed"
udevstart="$(/bin/date +%s%0N)"
/sbin/udevadm settle
stat_done
udevend="$(/bin/date +%s%0N)"
printhl " UDev uevent processing time: $((($udevend-$udevstart)/1000000))ms"
fi
# bring up the loopback interface
if [ -d /sys/class/net/lo ]; then
stat_busy "Bringing up loopback interface"
/sbin/ifconfig lo 127.0.0.1 up
if [ $? -ne 0 ]; then
stat_fail
else
stat_done
fi
fi
# If necessary, find md devices and manually assemble RAID arrays
if [ -f /etc/mdadm.conf -a "$(/bin/grep ^ARRAY /etc/mdadm.conf 2>/dev/null)" ]; then
# udev won't create these md nodes, so we do it ourselves
for dev in $(/bin/grep ^ARRAY /etc/mdadm.conf | /bin/awk '{print $2}'); do
path=$(echo $dev | /bin/sed 's|/[^/]*$||')
node=$(echo $dev | /bin/sed "s|^$path/||")
minor=$(echo $node | /bin/sed 's|^[^0-9]*||')
[ ! -e $path/$node ] && /bin/mknod $path/$node b 9 $minor
done
status "Activating RAID arrays" /sbin/mdadm --assemble --scan
fi
if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
if [ -x /sbin/lvm -a -d /sys/block ]; then
# Kernel 2.6.x, LVM2 groups
/sbin/modprobe -q dm-mod 2>/dev/null
stat_busy "Activating LVM2 groups"
/sbin/lvm vgscan --ignorelockingfailure --mknodes >/dev/null
/sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
if [ $? -ne 0 ]; then
stat_fail
else
stat_done
fi
fi
fi
# Set up non-root encrypted partition mappings
if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
/sbin/modprobe -q dm-mod 2>/dev/null
stat_busy "Unlocking encrypted volumes:"
csfailed=0
CS=/sbin/cryptsetup.static
do_crypt() {
if [ $# -ge 3 ]; then
cname="$1"
csrc="$2"
cpass="$3"
shift 3
copts="$*"
stat_append "${cname}.."
# For some fun reason, the parameter ordering varies for
# LUKS and non-LUKS devices. Joy.
if [ "${cpass}" = "SWAP" ]; then
# This is DANGEROUS! The only possible safety check
# is to not proceed in case we find a LUKS device
# This may cause dataloss if it is not used carefully
if $CS isLuks $csrc 2>/dev/null; then
false
else
$CS -d /dev/urandom $copts create $cname $csrc >/dev/null
if [ $? -eq 0 ]; then
stat_append "creating swapspace.."
/sbin/mkswap -f -L $cname /dev/mapper/$cname >/dev/null
fi
fi
elif [ "${cpass}" = "ASK" ]; then
printf "\nOpening '${cname}' volume:\n"
if $CS isLuks $csrc 2>/dev/null; then
$CS $copts luksOpen $csrc $cname < /dev/console
else
$CS $copts create $cname $csrc < /dev/console
fi
elif [ "${cpass:0:1}" != "/" ]; then
if $CS isLuks $csrc 2>/dev/null; then
echo "$cpass" | $CS $copts luksOpen $csrc $cname >/dev/null
else
echo "$cpass" | $CS $copts create $cname $csrc >/dev/null
fi
else
if $CS isLuks $csrc 2>/dev/null; then
$CS -d $cpass $copts luksOpen $csrc $cname >/dev/null
else
$CS -d $cpass $copts create $cname $csrc >/dev/null
fi
fi
if [ $? -ne 0 ]; then
csfailed=1
stat_append "failed "
else
stat_append "ok "
fi
fi
}
while read line; do
eval do_crypt "$line"
done </etc/crypttab
if [ $csfailed -eq 0 ]; then
stat_done
else
stat_fail
fi
# Maybe someone has LVM on an encrypted block device
if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
if [ -x /sbin/lvm -a -d /sys/block ]; then
/sbin/lvm vgscan --ignorelockingfailure --mknodes >/dev/null
/sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
fi
fi
fi
status "Mounting Root Read-only" /bin/mount -n -o remount,ro /
FORCEFSCK=
[ -f /forcefsck ] && FORCEFSCK="-- -f"
NETFS="nonfs,nonfs4,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,noshfs,nofuse,nofuseblk,noglusterfs"
fsck_reboot() {
echo "Automatic reboot in progress..."
/bin/umount -a
/bin/mount -n -o remount,ro /
/sbin/reboot -f
exit 0
}
if [ -x /sbin/fsck ]; then
stat_busy "Checking Filesystems"
FSCK_OUT=/dev/stdout
FSCK_ERR=/dev/null
/sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK >$FSCK_OUT 2>$FSCK_ERR
fsckret=$?
if [ ${fsckret} -gt 1 ]; then
stat_fail
fi
if [ $((${fsckret}&2)) -eq 2 ]; then
echo
echo "********************** REBOOT REQUIRED *********************"
echo "* *"
echo "* The system will be rebooted automatically in 15 seconds. *"
echo "* *"
echo "************************************************************"
echo
/bin/sleep 15
fsck_reboot
fi
if [ ${fsckret} -gt 1 -a ${fsckret} -ne 32 ]; then
echo
echo "***************** FILESYSTEM CHECK FAILED ****************"
echo "* *"
echo "* Please repair manually and reboot. Note that the root *"
echo "* file system is currently mounted read-only. To remount *"
echo "* it read-write type: mount -n -o remount,rw / *"
echo "* When you exit the maintenance shell the system will *"
echo "* reboot automatically. *"
echo "* *"
echo "************************************************************"
echo
/sbin/sulogin -p
fsck_reboot
fi
stat_done
fi
stat_busy "Mounting Local Filesystems"
/bin/mount -n -o remount,rw /
/bin/rm -f /etc/mtab*
# make sure / gets written to /etc/mtab
/bin/mount -o remount,rw /
# Write /proc, /sys and /dev to /etc/mtab
if [ -e /proc/mounts ]; then
/bin/grep -e "/proc " -e "/sys " -e "/dev " /proc/mounts >> /etc/mtab
fi
# now mount all the local filesystems
/bin/mount -a -t $NETFS -O no_netdev
stat_done
status "Activating Swap" /sbin/swapon -a
stat_busy "Configuring System Clock"
if [ ! -f /var/lib/hwclock/adjtime ]; then
echo "0.0 0 0.0" > /var/lib/hwclock/adjtime
fi
if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ]; then
/bin/rm -f /etc/localtime
/bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
fi
if [ -n "$HWCLOCK_PARAMS" ]; then
/sbin/hwclock --adjust #Adjust for system drift
/sbin/hwclock $HWCLOCK_PARAMS
fi
stat_done
RANDOM_SEED=/var/lib/misc/random-seed
if [ -f $RANDOM_SEED ]; then
stat_busy "Initializing Random Seed"
/bin/cat $RANDOM_SEED > /dev/urandom
stat_done
fi
stat_busy "Removing Leftover Files"
/bin/rm -f /etc/nologin &>/dev/null
/bin/rm -f /etc/shutdownpid &>/dev/null
/bin/rm -f /var/lock/* &>/dev/null
/bin/rm -rf /tmp/* /tmp/.* &>/dev/null
/bin/rm -f /forcefsck &>/dev/null
(cd /var/run && /usr/bin/find . ! -type d -exec /bin/rm -f -- {} \; )
: > /var/run/utmp
/bin/chmod 0664 /var/run/utmp
# Keep {x,k,g}dm happy with xorg
/bin/mkdir /tmp/.ICE-unix && /bin/chmod 1777 /tmp/.ICE-unix
/bin/mkdir /tmp/.X11-unix && /bin/chmod 1777 /tmp/.X11-unix
stat_done
#status "Updating Shared Library Links" /sbin/ldconfig
if [ "$HOSTNAME" != "" ]; then
status "Setting Hostname: $HOSTNAME" /bin/hostname $HOSTNAME
fi
# Set the NIS domain name, if necessary
[ -f /etc/conf.d/nisdomainname ] && . /etc/conf.d/nisdomainname
if [ "$NISDOMAINNAME" != "" ]; then
status "Setting NIS Domain Name: $NISDOMAINNAME" /bin/nisdomainname $NISDOMAINNAME
fi
status "Updating Module Dependencies" /sbin/depmod -A
# Flush old locale settings
: >/etc/profile.d/locale.sh
/bin/chmod 755 /etc/profile.d/locale.sh
# Set user defined locale
[ -z "$LOCALE" ] && LOCALE="en_US"
stat_busy "Setting Locale: $LOCALE"
echo "export LANG=$LOCALE" >>/etc/profile.d/locale.sh
stat_done
# Adding persistent network/cdrom generated rules
if [ -f "/dev/.udev/tmp-rules--70-persistent-cd.rules" ]; then
stat_busy "Adding persistent cdrom udev rules"
/bin/cat /dev/.udev/tmp-rules--70-persistent-cd.rules >> /etc/udev/rules.d/70-persistent-cd.rules
stat_done
fi
if [ -f "/dev/.udev/tmp-rules--70-persistent-net.rules" ]; then
stat_busy "Adding persistent network udev rules"
/bin/cat /dev/.udev/tmp-rules--70-persistent-net.rules >> /etc/udev/rules.d/70-persistent-net.rules
stat_done
fi
/bin/dmesg >| /var/log/dmesg.log
# End of file
# vim: set ts=2 noet:
# The part before here is migrated, the rest came from the template
exit 0
# /etc/event.d/rc-default guesses 2, so we also assume it's 2.
default_runlevel=2
################################################################################
# Sys-v-init on Linux and variants (=upstart) execute rcS before rc2.
#
# Upstart on jaunty is starts /etc/event.d/rc-default, which
# starts /etc/event.d/rcS which starts /etc/init.d/rcS which
# starts /etc/init.d/rc S which starts the shell scripts in
# /etc/rcS.d/ (does not sound very efficient to me).
# cinit@cinit-desktop:/etc/event.d$ ls -1 /etc/rcS.d/ | sed 's/^/# /'
# README: not migrated:
# S01mountkernfs.sh: sysfs, proc; ignored spufs, /var/run, /lib/init: migrated
cinit-conf.svc.mount.proc
cinit-conf.svc.mount.sys
# S01readahead: ignored
# S02hostname.sh: migrated
cinit-conf.svc.hostname.linux $(hostname)
# S06keyboard-setup: migrated
cinit-conf.svc.keymap.linux
# S07linux-restricted-modules-common: ignored
# S10udev: migrated
cinit-conf.svc.mount.udev
cinit-conf.svc.local-tuning.udev.ubuntu
# S11mountdevsubfs.sh: migrated!
cinit-conf.svc.mount.dev-shm
cinit-conf.svc.mount.dev-pts
# S13pcmciautils: ignored
# S15module-init-tools: not migrated: I think modules should be put into services
# S17procps: migrated
cinit-conf.svc.sysctl.linux
# S20checkroot.sh: migrated for /
cinit-conf.svc.mount.root
# S22mtab.sh: manually create mtab; migrated (though a little bit hacky)
cinit-conf.svc.mtab-clean.linux
# S25brltty: ignored: don't have a braille terminal here to test it
# S30checkfs.sh: ignored, not yet supported, have to find other mountpoints first
# S35mountall.sh: ignored: same as S30checkfs.sh
# S36mountall-bootclean.sh: migrated
# /var/run is not a tempdir, do not clean it
cinit-conf.svc.tmp.clean "/tmp" "/var/tmp" "/var/lock"
cinit-conf.svc.tmp.create "/tmp" "/var/tmp" "/var/lock"
# S37apparmor: ignored
# S37mountoverflowtmp: ignored, that's a boottime bugfix
# S37udev-finish: no need to migrate, if having correct dependencies.
# S39readahead-desktop: ignored, as it seems not to work here
# S39ufw: disabled here by default -> skip
# S40networking
cinit-conf.svc.network.debian
# S45mountnfs.sh: migrated, only much smaller
cinit-conf.svc.mount.nfs
# S46mountnfs-bootclean.sh: already done (cinit-conf.svc.tmp.*)
# S49console-setup: migrated
cinit-conf.svc.setup.console.linux
# S55bootmisc.sh
# S55urandom
# S70screen-cleanup
# S70x11-common
cat << eof
Ubuntu upstart migration completed.
WARNING:
This is a "lazy" migration: Ubuntu init scripts are migrated
similar, but not identical. Some services have been skipped, because
they are not necessary with cinit or in general.
Check /etc/cinit before rebooting with cinit!
KNOWN BUGS:
S20checkroot.sh: Only / is being fscked, other partitions are ignored.
HINT:
Make sure init=/sbin/cinit is set in your bootloader.
eof

View file

@ -0,0 +1,174 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Try to migrate upstarts config from ubuntu jaunty to cinit config
#
set -e
# /etc/event.d/rc-default guesses 2, so we also assume it's 2.
default_runlevel=2
################################################################################
#
# Base layout, same for every OS
#
cinit-conf.svc.init
cinit-conf.svc.categories
cinit-conf.svc.init.dependencies
################################################################################
# Sys-v-init on Linux and variants (=upstart) execute rcS before rc2.
#
# Upstart on jaunty is starts /etc/event.d/rc-default, which
# starts /etc/event.d/rcS which starts /etc/init.d/rcS which
# starts /etc/init.d/rc S which starts the shell scripts in
# /etc/rcS.d/ (does not sound very efficient to me).
# cinit@cinit-desktop:/etc/event.d$ ls -1 /etc/rcS.d/ | sed 's/^/# /'
# README: not migrated:
# S01mountkernfs.sh: sysfs, proc; ignored spufs, /var/run, /lib/init: migrated
cinit-conf.svc.mount.proc
cinit-conf.svc.mount.sys
# S01readahead: ignored
# S02hostname.sh: migrated
cinit-conf.svc.hostname.linux $(hostname)
# S06keyboard-setup: migrated
cinit-conf.svc.keymap.linux
# S07linux-restricted-modules-common: ignored
# S10udev: migrated
cinit-conf.svc.mount.udev
cinit-conf.svc.local-tuning.udev.ubuntu
# S11mountdevsubfs.sh: migrated!
cinit-conf.svc.mount.dev-shm
cinit-conf.svc.mount.dev-pts
# S13pcmciautils: ignored
# S15module-init-tools: not migrated: I think modules should be put into services
# S17procps: migrated
cinit-conf.svc.sysctl.linux
# S20checkroot.sh: migrated for /
cinit-conf.svc.mount.root
# S22mtab.sh: manually create mtab; migrated (though a little bit hacky)
cinit-conf.svc.mtab-clean.linux
# S25brltty: ignored: don't have a braille terminal here to test it
# S30checkfs.sh: ignored, not yet supported, have to find other mountpoints first
# S35mountall.sh: ignored: same as S30checkfs.sh
# S36mountall-bootclean.sh: migrated
# /var/run is not a tempdir, do not clean it
cinit-conf.svc.tmp.clean "/tmp" "/var/tmp" "/var/lock"
cinit-conf.svc.tmp.create "/tmp" "/var/tmp" "/var/lock"
# S37apparmor: ignored
# S37mountoverflowtmp: ignored, that's a boottime bugfix
# S37udev-finish: no need to migrate, if having correct dependencies.
# S39readahead-desktop: ignored, as it seems not to work here
# S39ufw: disabled here by default -> skip
# S40networking
cinit-conf.svc.network.debian
# S45mountnfs.sh: migrated, only much smaller
cinit-conf.svc.mount.nfs
# S46mountnfs-bootclean.sh: already done (cinit-conf.svc.tmp.*)
# S49console-setup: migrated
cinit-conf.svc.setup.console.linux
# S55bootmisc.sh: skipped
# S55urandom: skipped, should be done later!
# S70screen-cleanup: skipped, unclean, should be done later!
# S70x11-common: also skipped, want to finish this script.
################################################################################
#
# /etc/rc2.d/ migration
#
# cinit@cinit-desktop:/etc/rc2.d$ ls -1
# README
# S01policykit: ignored
# S10acpid: migrated (without module loading)
cinit-conf.svc.acpid
# Skipping the following ones currently
# S10sysklogd
# S11klogd
# S12dbus
# S16ssh
cinit-conf.svc.sshd
# S20apport
# S20hotkey-setup
# S24hal
# S25bluetooth
# S30gdm
# S50NetworkManager
# S50avahi-daemon
# S50cups
# S50pulseaudio
# S50rsync
# S50saned
# S50system-tools-backends
# S70bootlogs.sh
# S70dns-clean
# S70pppd-dns
# S89anacron
# S89atd
# S89cron
# S90binfmt-support
# S98usplash
# S99acpi-support
# S99laptop-mode
# S99ondemand
# S99rc.local
# S99rmnologin
# S99stop-readahead
################################################################################
#
# Enable local login with six getties
#
cinit-conf.svc.agetty 6
cat << eof
Ubuntu upstart migration completed.
WARNING:
This is a "lazy" migration: Ubuntu init scripts are migrated
similar, but not identical. Some services have been skipped, because
they are not necessary with cinit or in general.
Check /etc/cinit before rebooting with cinit!
KNOWN BUGS:
S20checkroot.sh: Only / is being fscked, other partitions are ignored.
HINT:
Make sure init=/sbin/cinit is set in your bootloader.
eof

View file

@ -0,0 +1,58 @@
#!/bin/sh
#
# 2008 Nico Schottelius (nico-cinit-conf at schottelius.org)
#
# This file is part of cinit-conf.
#
# cinit-conf is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit-conf is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit-conf. If not, see <http://www.gnu.org/licenses/>.
#
hier="${0%/*}"
: ${CONFDIR:="$("${hier}/cinit-conf.get-confdir")"}
# read general values and overwrite specific ones later
for conf in ${CONFDIR}/*; do
NAME="$(basename $conf | tr a-z A-Z)"
# short version
eval : \${$NAME:=$(head -n1 "${conf}")}
# long version
#if eval test -z \$$NAME; then
# eval $NAME=\"$(head -n 1 $conf)\"
# eval export $NAME
#fi
# eval echo $NAME = \$$NAME
done
# comment out: generated automatically now
#: ${DESTDIR="$(head -n1 "${CONFDIR}/destdir")"}
#: ${SERVICE_CATEGORIES="$(head -n1 "${CONFDIR}/service_categories")"}
#: ${GETTYDIR="${SVCDIR}/$(head -n1 "${CONFDIR}/gettydir")"}
#: ${INSTALL_PROG="$(head -n1 "${CONFDIR}/install_prog")"}
#: ${INSTALL_DIRECTORY="$(head -n1 "${CONFDIR}/install_directory")"}
#: ${C_ON="$(head -n1 "${CONFDIR}/c_on")"}
#: ${C_PARAMS="$(head -n1 "${CONFDIR}/c_params")"}
#: ${C_RESPAWN="$(head -n1 "${CONFDIR}/c_respawn")"}
# overwrite or set: add destdir and put things together
# R_* = real = should be used in scripts
: ${R_CINIT_DIR:="${DESTDIR}/${CINIT_DIR}"}
: ${R_CINITCONF_DIR:="${R_CINIT_DIR}/${CINITCONFDIR}"}
: ${R_SVC_DIR:="${R_CINIT_DIR}/${SVCDIR}"}
# T_*: theorethic (not real, usable for linking)
: ${T_CINIT_DIR:="${CINIT_DIR}"}
: ${T_CINITCONF_DIR:="${T_CINIT_DIR}/${CINITCONFDIR}"}
: ${T_SVC_DIR:="${T_CINIT_DIR}/${SVCDIR}"}

View file

@ -0,0 +1,46 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit-conf. If not, see <http://www.gnu.org/licenses/>.
#
# Enable a service at boottime: add it to init wants list
#
set -e
################################################################################
# standard vars stolen from cconf
__pwd="$(pwd -P)"
__mydir="${0%/*}"; __abs_mydir="$(cd "$__mydir" && pwd -P)"
__myname=${0##*/}; __abs_myname="$__abs_mydir/$__myname"
. "${__abs_mydir}/cinit-conf.read-conf"
if [ $# -lt 1 ]; then
echo "${__myname}: services... "
echo ""
echo " I add the services to init, so they will be started at boot."
echo ""
exit 1
fi
SVC="init"
cinit-conf.svc.dependency.add "${SVC}" "wants" "$@"
exit 0

View file

@ -0,0 +1,66 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Create an almost empty service
#
set -e
# init variables
. "$(dirname $0)/cinit-conf.read-conf"
if [ $# -lt 1 ]; then
echo "`basename $0`: service-name(s)"
echo " I create templates for your services"
exit 1
fi
for svc in $@; do
INSTDIR="${R_SVC_DIR}/${svc}"
if [ -e "$INSTDIR" ]; then
echo "$svc already exists, skipping."
continue
fi
echo -n "Creating template $svc ..."
"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}"
# needs
"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_NEEDS}"
# wants
"$INSTALL_PROG" "$INSTALL_DIRECTORY" "${INSTDIR}/${C_WANTS}"
# README
cat << eof > "${INSTDIR}/README"
This service was created by $0.
Please update this README to match the real content.
Add entries to ${C_NEEDS} for the services this services really needs
(it will not start if one failed to start).
Add services to ${C_WANTS} for the services this services wants
(it will start if one or more fail)."
eof
echo "done."
done

View file

@ -0,0 +1,46 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Delete services
#
set -e
# init variables
. "$(dirname $0)/cinit-conf.read-conf"
if [ $# -lt 1 ]; then
echo "`basename $0`: service-name(s)"
echo " I delete your services"
exit 1
fi
for svc in "$@"; do
SERVICE="${R_SVC_DIR}/${svc}"
if [ ! -e "$SERVICE" ]; then
echo "${svc}: does not exists, cannot remove.."
continue
fi
echo -n "Removing $svc ..."
rm -rf "${SERVICE}"
echo "done."
done

View file

@ -0,0 +1,43 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Select program to start on service stop
#
################################################################################
# standard vars stolen from cconf
__pwd="$(pwd -P)"
__mydir="${0%/*}"; __abs_mydir="$(cd "$__mydir" && pwd -P)"
__myname=${0##*/}; __abs_myname="$__abs_mydir/$__myname"
set -e
. "${__abs_mydir}/cinit-conf.read-conf"
if [ $# -ne 2 ]; then
echo "${__myname}: service path-to-executable"
exit 1
fi
svc="$1"; shift
executable="$1"; shift
echo "${svc}:${C_OFF}->${executable}"
ln -sf "${executable}" "${R_SVC_DIR}/${svc}/${C_OFF}"

View file

@ -0,0 +1,39 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Select program to start on service start
#
set -e
# init variables
. "$(dirname $0)/cinit-conf.read-conf"
if [ $# -ne 2 ]; then
echo "$(basename $0): service path-to-executable"
exit 1
fi
svc="$1"; shift
executable="$1"; shift
echo "${svc}:${C_ON}->${executable}"
ln -sf "${executable}" "${R_SVC_DIR}/${svc}/${C_ON}"

View file

@ -0,0 +1,42 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Select program to start on service start
#
set -e
# init variables
. "$(dirname $0)/cinit-conf.read-conf"
if [ $# -lt 3 ]; then
echo "$(basename $0): service (${C_ON}|${C_OFF}) params..."
exit 1
fi
svc="$1"; shift
type="$1"; shift
while [ $# -gt 0 ]; do
param="$1"; shift
file="${svc}/${type}${C_PARAMS}"
echo "${file}+=${param}"
echo "${param}" >> "${R_SVC_DIR}/${file}"
done

View file

@ -0,0 +1,46 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Disable respawing for a service
#
set -e
################################################################################
# standard vars stolen from cconf
__pwd="$(pwd -P)"
__mydir="${0%/*}"; __abs_mydir="$(cd "$__mydir" && pwd -P)"
__myname=${0##*/}; __abs_myname="$__abs_mydir/$__myname"
# init variables
. "${__mydir}/cinit-conf.read-conf"
if [ $# -lt 1 ]; then
echo "${__myname}: service-name(s)"
echo " Services will lose their respawn mark"
exit 1
fi
for svc in "$@"; do
echo -n "${svc}:respaw->off"
rm -f "${R_SVC_DIR}/${svc}/${C_RESPAWN}"
echo "finished."
done

View file

@ -0,0 +1,46 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cinit is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with cinit. If not, see <http://www.gnu.org/licenses/>.
#
#
# Enable respawing for a service
#
set -e
################################################################################
# standard vars stolen from cconf
__pwd="$(pwd -P)"
__mydir="${0%/*}"; __abs_mydir="$(cd "$__mydir" && pwd -P)"
__myname=${0##*/}; __abs_myname="$__abs_mydir/$__myname"
# init variables
. "${__mydir}/cinit-conf.read-conf"
if [ $# -lt 1 ]; then
echo "${__myname}: service-name(s)"
echo " Services will be marked respawning"
exit 1
fi
for svc in "$@"; do
echo -n "${svc}:respaw->on"
touch "${R_SVC_DIR}/${svc}/${C_RESPAWN}"
echo "finished."
done

View file

@ -0,0 +1,53 @@
#!/bin/sh
#
# 2009 Nico Schottelius (nico-cinit at schottelius.org)
#
# This file is part of cinit.
#
# cinit is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your opt