-------------------------------------------------------------------------------- - Recheck sources: - check errno! - eventually split cinit code to csvc to minimize binary of cinit? - close(*>2) before forking / executing -> close fds, clean environment, etc., ... -> do we really need that? - remove FIXME entries (and what should be fixed, too) - cservice -p does not work, kill -TERM does! - cleanup sig_reboot.c - memset for timespecs? -------------------------------------------------------------------------------- - Source Logic issues - cservice: remove trailing slash of service names, absolute the service names? - add reading of delay to run_svc, storing in list - handle multiple killing within sigio (fork) ? - add shutdown/reboot/.../ -> cinit.commands! - socket / general access from outside/non-root? - move umount, swapoff and remount to off of init? -> cleanup sig_reboot.c - handle CTR-ALT-DEL / keyboard request? (see caveats) - check for possibilies to save ram, free things - create coala-socket with correct permissions! (550, root:cinit) -> is that really our problem or should a service do that? - check if we caught every signal, which could kill us - logging service! -> write output $somewhere, wait for syslog? -> flush at the end of start-process? -> perhaps pipe logging output to a program? - check for other possibilities to create a smaller binary - strip options - gcc options - ld options - alternative libc (uclibc and dietlibc work fine!) - run_svc: o we have many strcat()s, perhaps save length of pathbuf and strncat at pathtmp[strlen(pathbuf)] ? - the service watcher has somehow to handle SIGTERM and killing the process -> global pid_t variable would do it -> split code to cclient? -> we have to add killing services from outside -> perhaps completly split client code from cinit? -> ccinit? ;-) -> shutting down services is NOT YET possible while cinit is running - cservice: o shutdown/reboot/halt system (through socket?) -> no. o show service list? -> no. o respawn services o exec services o shutting down service _AND_ dependencies on it???? -> recursive searching in /etc/cinit/{*/}*/needs (not wants) -> also without. - really need swapoff? -------------------------------------------------------------------------------- - Documentation - Write manpages (use doc/* as base for that) - Check Spell and Grammar in documentation - write howto: o Howto-cinit o Howto-cinit-uml -------------------------------------------------------------------------------- - Porting - add porting code to other unices? - like openssh guys do? - polling/signalling is different everywhere a) use standars poll/select b) use accelerated os-specfic -> add the name of the function/the file to use into conf/poll_func? o kqueue for freebsd/openbsd? o epoll or sigio (current) for Linux? o poll for netbsd - using Linux 2.6 epoll mechanism? -------------------------------------------------------------------------------- create_mini_cinit -> use a tarball? (samples/*) -> create something which should be runnable -> mount, fsck, getty --> for dev in `read /etc/fstab` ... fsck $dev --> getty from /etc/inittab or /sbin/*getty -> find out, which gettys with which params -> use it on 'make install' --------------------------------------------------------------------------------