http://www.hoeg.org/blog/2005/07/27/fast-booting-debian/
Nooo, you stole my idea! I had to patent it :)

I'm thinking on a way to implement parallelized boot since the last release of my live distro (http://www.llgp.org). I, too, think it could be implemented modifying "/etc/init.d/rc".

I think your hack could be improved modifying the "startup" function. Actually it looks like:

startup() {
  case "$1" in
        *.sh)
                $debug sh "$@"
                ;;
        *)
                $debug "$@"
                ;;
  esac
}

but it may become:

startup() {
  DEPENDS=$(getDependencies $1);
  for i in $DEPENDS; do
    isStarted $i
  done
  case "$1" in
        *.sh)
                $debug sh "$@"
                ;;
        *)
                $debug "$@"
                ;;
  esac
  if [ $? -eq 0 ]
    then
      setStarted $1
    else
      # The script failed, do something!
  fi
}

Where getDependencies is something that writes on the standard output all the scripts needed by another script.

isStarted is something that asks to a daemon if a startup script was started. It doesn't return until the script is started. The daemon must be started before.

setStarted is something that tell to the daemon that this script is started and all scripts waiting on isStarted can go on.


Another way to implement a parallelized boot could be replacing /etc/init.d/rc with a c program that builds the Directed Acyclic Graph of the startup scripts, then it can try to start them with the right order. Could it be a better solution? Can we find other better solutions?



I'm going to begin a little project for my live distro (and perhaps other distros), and I would call it "bootster". I hope to add this kind of initscript, but I will try also to build a good initial ram disk that can find hardware and boot the system as fast as possible.


Regards
Fabio

_______________________________________________
initscripts-ng-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/initscripts-ng-devel

Reply via email to