-------------------------------------------------------------------------------- - define how it should work (doc/braindums/big-picture.text) - define service status in one document, so repeatition stops! -------------------------------------------------------------------------------- - remove client/ from top level -------------------------------------------------------------------------------- Generate automatic asciidoc from conf/* -------------------------------------------------------------------------------- Ausgaben nach Beendigung vom Starten des Services. [ on ] %s + Ergebnis [ off ] %s Rekursives herunter/rauffahren -------------------------------------------------------------------------------- - add error handling to cinit.install.binary -------------------------------------------------------------------------------- 1. Entfernung mount -> Example configuration -> was man alles machen muss -------------------------------------------------------------------------------- - add code do implement stopping / restarting with dependency tree -------------------------------------------------------------------------------- - print service name or cinit: before _everything_ WE print - is the reporting ok? # cinit.create.empty.service: can only be started from the bin directory - Fix Switching services off !! - 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) -------------------------------------------------------------------------------- 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 ------------- - Installing cinit o compiling cinit from source o debian / gentoo - Configuring * add scripts! see below - define coding guidelines -> general, with url? - Write manpages (use doc/* as base for that) - Check Spell and Grammar in documentation - write howto: o Howto-cinit o Howto-cinit-uml 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! -> they have to do it! - dependencies with leading '.' (dot) are ignored. - about cinit-configuration structure * cconfig * svc/ * special/ (or however we called it) - panic - halt - poweroff - reboot -------------------------------------------------------------------------------- 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! - Doc way: * installing * configuring - testconfig! * booting - different OS / bootloader * debugging - Shutdomn code: * begin at init, then shutdown wants/needs, ... - check that the new wants and need elements are nserted the other way round * we go to next, elements must be put before us! - replace cinit_ipc_logon with cinit_ipc_init... * delay ipc code -> after start! - Cleanup / create object lists object-lists/ cinit cservice ccontrol cinit.halt cinit.reboot cinit.shutdown (shell script?!?) TODO.pre9: Done: - pfad korrigieren (home/..../ -> cinit.release) - cg-add nicht aufrufen beim make all! ser/nico/oeffentlich/computer/projekte/cinit/cinit-0.3pre8/doc' FILE="size/`date +%Y-%m-%d-%H%M%S`"; ls -l src/cinit > $FILE; cat $FILE; \ cg-add $FILE -rwx------ 1 nico nico 72601 2007-04-06 17:52 src/cinit There is no GIT repository here (.git not found) make: *** [sizecheck] Fehler 1 - setup VM for testing: qemu/kvm/virtualbox (no commercial bloaty) -> uml! - sleep when respawnig! -> static delay of five seconds do_reboot.c: is ipc closed? -> check! => done! - ignore msgrcv: Interrupted system call Session terminated, killing shell...msgq-destroy: Invalid argument msgq-destroy: Invalid argument - do not print an error if /etc/cinit/conf/last is non-existent! => print it. Do not not print it, as this can aid debugging. include locking via shm, remove test on pid1 => not necessary imho currently TODO.pre10: Done: cleanup client/ comm/ contrib+tools/ util/ tmp/ Debugging cinit-configuration: ls -lR /etc/cinit or: cinit.read.... TODO.pre11: Remove some debugging, re-introduce DEBUG() macro.. Fix doc: make dist should cleanup cc / ld to sane values? or do I experiement in tmp/*? http://linux.schottelius.org/cinit/browse_source/current/doc/user/config-dirs conf/c_halt IPC: * check msqg-code * documentate the ipc functions: update devel/ipc.text * check cinit_read_command() (devel/ipc.h) do_reboot.c: write cinit_svc_shutdown - implement do_reboot() * so not only booting with cinit works, but also the shutdown - write libcinit for use in cmd() - find out why gettimeofday() and time() do strange things when called in SIG_CHLD => bug opened in glibc, got to code testprogram - write cinit.conf.check * report broken links in needs/wants * report circular dependencies - pretty print, reporting is ugly! Add handler for ctrl+alt+delete * document in paths * check whether there's an os-unspecific way to do that cleanup bin/ - write sys-v-init-shutdown-wrapper * shutdown * halt * reboot * poweroff - write manpages for - *.kill - cmd install: make install => does not overwrite critical targets * cinit * *.kill (see client/*) * cmd make force-install => overwrites /sbin/{halt,poweroff,reboot}? => with script that wraps cmd make install-template: * creates categories make install-miniconf: * creates categories * creates one service starting a shell (depending on the OS!) cleanup src/ finish ipc code so clients can access cinit implement CMD_INFO (see comm.h) TODO.pre12: Check and clean doc/ Remove *TODO*+ROADMAP and leave behin doc/TODO TODO.pre13: code cmd=(cservice ccontrol halt reboot shutdown poweroff) => halt/r/... also with kill ... Test, release and prepare for final cinit-0.3 TODO.0.3.1 add log support cinit logs to -> shm saver services log to TODO unclear - create migration scripts