diff -pur file-rc-0.8.7/debian/changelog file-rc-0.8.7.1/debian/changelog
--- file-rc-0.8.7/debian/changelog	2004-08-14 17:47:23.000000000 +0100
+++ file-rc-0.8.7.1/debian/changelog	2004-12-04 17:46:16.000000000 +0000
@@ -1,3 +1,9 @@
+file-rc (0.8.7.1) unstable; urgency=low
+
+  * Parallellised startup.
+
+ -- Colin Phipps <cph@moria.org.uk>  Sat,  4 Dec 2004 17:45:09 +0000
+
 file-rc (0.8.7) unstable; urgency=low
 
   * Export runlevel and prevlevel in /etc/init.d/rc (Closes: #251025).
diff -pur file-rc-0.8.7/rc file-rc-0.8.7.1/rc
--- file-rc-0.8.7/rc	2004-08-14 17:47:19.000000000 +0100
+++ file-rc-0.8.7.1/rc	2004-12-04 17:45:08.000000000 +0000
@@ -218,6 +218,7 @@ then
     (echo "$$" > "$LOCKFILE") || true
 fi
 
+LAST_SORT_NO="-1"
 while read  SORT_NO  OFF_LEVELS  ON_LEVELS  CMD  OPTIONS
 do
     case "$SORT_NO" in
@@ -229,8 +230,15 @@ do
     # currently OPTIONS is completely ignored ... we _could_ pass them to the
     # init-script after "start" or "stop".
 
-    [ "$ON_LEVELS" != "-" ] && element "$runlevel" in "$ON_LEVELS" \
-	&& STARTLIST=`pushlevel $CMD $ON_LEVELS $STARTLIST`
+    if [ "$ON_LEVELS" != "-" ] && element "$runlevel" in "$ON_LEVELS"
+    then
+    	if [ "$LAST_SORT_NO" != "$SORT_NO" ]
+	then
+		STARTLIST="$STARTLIST WAIT"
+		LAST_SORT_NO="$SORT_NO"
+	fi
+	STARTLIST=`pushlevel $CMD $ON_LEVELS $STARTLIST`
+    fi
 
     element "$runlevel" in "$OFF_LEVELS" && STOPLIST="$STOPLIST$CMD "
 
@@ -258,6 +266,8 @@ done
 # Then look at the start scripts
 for comb in $STARTLIST
 do
+  if [ "$comb" != "WAIT" ]
+  then
     CMD=${comb%:*}
     if [ "$prevlevel" != "N" ]
     then
@@ -270,9 +280,14 @@ do
 
     case "$CMD" in
     *.sh)	CMDLIST="$CMDLIST; (set -- $start; . $CMD)" ;;
-    *)	[ -x "$CMD" ] && CMDLIST="$CMDLIST; $CMD $start" ;;
+    *)	[ -x "$CMD" ] && CMDLIST="$CMDLIST; $CMD $start & true" ;;
     esac
+  else
+    CMDLIST="$CMDLIST; wait"
+  fi
 done
+CMDLIST="$CMDLIST; wait"
+CMDLIST=`echo "$CMDLIST" | sed -e 's/& true;/\\&/g' | sed -e 's/\(wait;[^&;]\+\)& wait/\\1/g'`
 
 # Execute the commands collected above
 if [ $debug -eq 1 ]
