How to test dependency based sysv boot system in Debian

Petter Reinholdtsen pere at hungry.com
Sat Sep 9 14:33:34 UTC 2006


[Marc Haber]
> Is insserv compatible with file-rc, or does it mandate using the
> rather clumsy link-based scheme?

As far as I know, it only support the link-based scheme.  But it has
debug output that seem to contain the information needed by file-rc,
so I guess it should be possible to implement support for file-rc as
well.  Not something I'm going to start on anytime soon, thought.

I just tested this system in a freshly installed sid chroot, and had
to update it to get rid of some loops.  These problems will be fixed
after the archive is updated tomorrow.

Apply this patch:

--- /var/tmp/old-init.d/umountfs        2006-09-09 14:12:59.000000000 +0000
+++ /etc/init.d/umountfs        2006-09-09 14:14:38.000000000 +0000
@@ -2,8 +2,8 @@
 ### BEGIN INIT INFO
 # Provides:          umountfs
 # Required-Start:
-# Required-Stop:
-# Should-Stop:       halt reboot
+# Required-Stop:     umountroot
+# Should-Stop:
 # Default-Start:
 # Default-Stop:      0 6
 # Short-Description: Turn off swap and unmount all local file systems.
diff -u /var/tmp/old-init.d/umountroot /etc/init.d/umountroot
--- /var/tmp/old-init.d/umountroot      2006-09-09 14:12:59.000000000 +0000
+++ /etc/init.d/umountroot      2006-09-09 14:13:50.000000000 +0000
@@ -1,10 +1,11 @@
 #! /bin/sh
 ### BEGIN INIT INFO
 # Provides:          umountroot
-# Required-Start:    umountfs
-# Required-Stop:     umountfs
-# Default-Start:     6
-# Default-Stop:
+# Required-Start:
+# Required-Stop:
+# Should-Stop:       halt reboot
+# Default-Start:
+# Default-Stop:      0 6
 # Short-Description: Mount the root filesystem read-only.
 ### END INIT INFO

And remove /usr/share/insserv/overrides/umountfs,
/usr/share/insserv/overrides/halt and
/usr/share/insserv/overrides/reboot to avoid mixing the override
values with the correct headers.

I started with this boot sequence:

  /etc/rcS.d:
  README               S18ifupdown-clean         S39ifupdown
  S01glibc.sh          S20module-init-tools      S40networking
  S02hostname.sh       S20modutils               S45mountnfs.sh
  S02mountkernfs.sh    S22hwclock.sh             S46mountnfs-bootclean.sh
  S04mountdevsubfs.sh  S25libdevmapper1.02       S55bootmisc.sh
  S05bootlogd          S30checkfs.sh             S55urandom
  S10checkroot.sh      S30procps.sh              S99stop-bootlogd-single
  S12mtab.sh           S35mountall.sh
  S18hwclockfirst.sh   S36mountall-bootclean.sh

  /etc/rc2.d/:
  README       S11klogd    S20openbsd-inetd  S99rc.local   S99stop-bootlogd
  S10sysklogd  S20makedev  S89cron           S99rmnologin

And this is the new boot order after converting:

  /etc/rcS.d:
  README               S04ifupdown-clean         S07networking
  S01glibc.sh          S04module-init-tools      S07urandom
  S01hostname.sh       S04modutils               S08mountnfs.sh
  S01hwclockfirst.sh   S04mtab.sh                S09mountnfs-bootclean.sh
  S01mountkernfs.sh    S05checkfs.sh             S10bootmisc.sh
  S02mountdevsubfs.sh  S05ifupdown               S10hwclock.sh
  S03bootlogd          S05libdevmapper1.02       S10stop-bootlogd-single
  S03checkroot.sh      S06mountall.sh
  S03procps.sh         S07mountall-bootclean.sh

  /etc/rc2.d/:
  README      S10openbsd-inetd  S11sysklogd  S12klogd          S14rmnologin
  S07makedev  S10rc.local       S12cron      S13stop-bootlogd

As you might see, the new boot order make sense, and there are more
scripts that will run in parallel if CONCURRENCY=shell is used.

There are still a few bugs, example example hwclockfirst.sh should
probably run just after mountdevsubfs.sh, and procps.sh should run
just after mountkernfs.sh, but it also work with the current sequence.

I hang out on the IRC channel #pkg-sysvinit for those interested in
discussing these things. :)

Friendly,
-- 
Petter Reinholdtsen




More information about the initscripts-ng-devel mailing list