www.nico.schottelius.org/software/cinit/browse_source/cinit-0.3pre7/TODO
Nico Schottelius 423ba10303 import cinit from unix.schottelius.org
Signed-off-by: Nico Schottelius <nico@ikn.schottelius.org>
2009-09-16 12:53:45 +02:00

339 lines
10 KiB
Text

--------------------------------------------------------------------------------
define coding guidelines
-> general, with url?
--------------------------------------------------------------------------------
- define how it should work (doc/braindums/big-picture.text)
- define service status in one document, so repeatition stops!
--------------------------------------------------------------------------------
- rename headers/ -> includes/
- remove client/ from top level
--------------------------------------------------------------------------------
Generate automatic asciidoc from conf/*
--------------------------------------------------------------------------------
Add handler for ctrl+alt+delete
* document in paths
--------------------------------------------------------------------------------
pre-compile config: conf/*
--------------------------------------------------------------------------------
comm:
tmpnow: search for pid in list,
save the pid in the list, so we know whether our executer died!
--------------------------------------------------------------------------------
Logging / cinit:
fuer unsere eigenen ausgaben auch multilog?
Logger: shared memory?
--------------------------------------------------------------------------------
Ausgaben nach Beendigung vom Starten des Services.
[ on ] %s + Ergebnis
[ off ] %s
Rekursives herunter/rauffahren
--------------------------------------------------------------------------------
- add error handling to cinit.install.binary
- cleanup serv/sig_reboot.c:7:
o implement os-specific reboot function
--------------------------------------------------------------------------------
1. Entfernung mount
-> Example configuration
-> was man alles machen muss
--------------------------------------------------------------------------------
- add code do implement stopping / restarting with dependency tree
--------------------------------------------------------------------------------
Documentation:
- Installing cinit
o compiling cinit from source
o debian / gentoo
- Configuring
--------------------------------------------------------------------------------
Check whether we also get notified about stopped children, if so, ignore.
--------------------------------------------------------------------------------
- perhaps use dnotify?
- recheck warm reboot
- fix cservice
- print service name or cinit: before _everything_ WE print
TESTING:
- is the reporting ok?
- does cservice and ccontrol what's expected?
# cinit.create.empty.service: can only be started from the bin directory
- compile cinit static and other tools dynamically per default
- Fix Switching services off !!
- Remove RUN_RUN_SVCs, move code to run_svc so one can determine which
services failed?
--> sequentieller ablauf!
--> parallel ablauf, struct-array mit namen und ergebnis?
--> for dep in deps/*; do fork(run_svc() ); done
-----> while(any_is_running) { sleep }
-------> array durchsuchen, ergebnis nutzen.
- ueberpruefen von wo aus run_svc() aufgerufen wird
- do not kill respawing service, if off exists
- ccontrol
- manpages
- Error codes when shutting down a service?
- Delay dokumentieren
- no_kill dokumentieren
- on.out, on.err, on.in?
-> reading/writing from/to files
- implement "no_kill" until cinit-0.2 or 0.3?
--------------------------------------------------------------------------------
- Source Logic issues
- remove FIXME entries (and what should be fixed, too)
- memset for timespecs?
- move umount, swapoff and remount to off of init?
-> cleanup sig_reboot.c
--------------------------------------------------------------------------------
- Documentation
- Write manpages (use doc/* as base for that)
- Check Spell and Grammar in documentation
- write howto:
o Howto-cinit
o Howto-cinit-uml
--------------------------------------------------------------------------------
[OLD BUGS]
- execve() fails -> no sleep!!
- cservice!
- prozess nur einmal -> WARTET! cinit auch!
doku:
cservice einmal starten -> wartet auf ende
cint ersetzt init bei gentoo
an error occuerd-> verbose
possible BUGS:
[14:44] freelsd:cinit-0.2.2% ./sbin/cservice -e ein
ein: No such file or directory
Bad address
: Service does not exist
/etc/cinit/specials/... rein
--> cinit-0.3-rc1
--------------------------------------------------------------------------------
Helper scripts, rausgenommen aus Der Doku, muessen fuer
cinit-0.3 ueberprueft werden:
Configure help scripts
~~~~~~~~~~~~~~~~~~~~~~
cinit-conf later
Using prepared scripts
In the bin/ directory of this tarball you'll find at least:
cinit.add.dependency - add a dependency to a service
cinit.add.getty - add a new getty
cinit.create.empty.service - create an empty service
cinit.reboot - reboot in /bin/sh
cinit.remove.getty - remove a getty service
cinit.respawn.off - switch respawing off
cinit.respawn.on - switch respawing on
cinit.shutdown - shutdown in /bin/sh
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Optimisations
-------------
tree_exec
~~~~~~~~~
- only check dependencies (=needs) after the basic run?
Documentation
-------------
developer
~~~~~~~~~
- ST_IN_LIST == startup marker, used to (NOT) insert services into startup
- dep_needs_wants_add is used to add dependencies of a service to the general
starter list
user
----
- do we really need swapoff? remove umount, swapoff!
* to services!
- dependencies with leading '.' (dot) are ignored.
- about cinit-configuration structure
* cconfig
* svc/
* special/ (or however we called it)
- panic
- halt
- poweroff
- reboot
--------------------------------------------------------------------------------
Doc
---
Doku!!!
- MANPAGE!
FAQ
~~~
- DOKU: what happens when a service does not terminate....
und er als once drin ist
--> Wenn kein ReSPAWN und der Prozess beendet sich nicht,
dann haengt init!
- multuicall probleme -> busysbox --> GIBT ES NICHT!!
---> DOKU DAZU! mit links, doppelt links, aus test
---> erklaeren, dass es unproblematisch ist!
--------------------------------------------------------------------------------
csvc:
11:09 < folken23> telmich: oder service allready started.
--------------------------------------------------------------------------------
cinit:
11:09 < folken23> telmich: zsb. eine grund angabe warum ein dienst nicht gestartet
werden konnte.
11:09 < folken23> telmich: e.g. file nicht gefunden, service hat nicht 0
zurueckgeworfen.
---> errno in execute_sth!
Child handlin
~~~~~~~~~~~~~g
- free() everything before starting child
Later
~~~~~
- close(*>2) before forking / executing
-> close fds, clean environment, etc., ...
-> do we really need that?
-> yep, clean environment!
- logging service!
-> write output $somewhere, wait for syslog?
-> flush at the end of start-process?
-> perhaps pipe logging output to a program?
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
- Doc
* main.text -> cleanup / remove / split
* config-dirs
* FAQ
* ideas
* meta.dependencies
- config/hints/meta depps
* optimising
- integrate into other
* README.text
- update
* replacing.init
- update / integrate
* special-services.text
- into configuring/hints?
* TODO
- into paths, if necessary
* updating.cinit
- update as soon as update is possible?
* using.rescue
- update as soon as update is possible?
* 'os-integration.text'
* 'daemons.backgrounding'
* There are some hints on how to migrate to cinit in general and also
some os specific help in the file 'migrating-init-systems.text',
- CODECHECK:
* what happens with the wants of the last services?
- are they added?
- are they added at the correct position?
- scripts
* `cinit.check.config` (doc/user/configuring.cinit.text)
-> circular depedencies!
- Doc.next:
- installing: report!
-> write report script.
- Doc later
* current-init-problems.text
- current-init-problems.text explains why cinit does not use nor recommends the use of shell scripts.
* special-services.text
- Begin documentation
* Check Makefile
* Integrate Makefile into main Makefile
* create manpage
* Write a small manual
- install
- configure
- boot (different OS)
* generate asciidoc!
- report broken links in needs/wants
- Doc way:
* installing
* configuring
- testconfig!
* booting
- different OS / bootloader
* debugging
- Shutdomn code:
* begin at init, then shutdown wants/needs, ...
- check free on dep_del!
- check that the new wants and need elements are nserted the other way round
* we go to next, elements must be put before us!
- implement do_reboot()
* so not only booting with cinit works, but also the shutdown
- define messages
a) human readable
b) binary data?
- replace cinit_ipc_logon with cinit_ipc_init...
* delay ipc code -> after start!
- Remove old code
* remove run_svc
* remove run_init_svc
Finally:
- test and release cinit-0.3rc1
- Cleanup object lists
object-lists/
cinit
cservice
ccontrol
cinit.halt
cinit.reboot
cinit.shutdown (shell script?!?)
TODO.pre7:
Done:
check cinit_ipc_destroy
- Segfault, when there is only init -> problem in glibc2.3.6
- Added general shutdown support (via kill -TERM, -HUP, -USR1)
- write sleep_before_kill
reads config, sleeps
Tests:
- test reboot functionality
-> kill -X 1
-> what happens?
TODO.pre8:
remove old object listings
take care of ipc/ and os/
merge codingstyle and codingguide
double check all initialisations!
Use sa.mask in sigaction!
Document the define of the following:
conf/umount = called before all shutdown procedures
- test sleep code (sleep_before_kill())
do_reboot.c:
write cinit_svc_shutdown
TODO.pre9:
include locking via shm, remove test on pid1