diff --git a/policy.sgml b/policy.sgml
index 6eac491..574a8ca 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -7362,389 +7362,537 @@ rmdir /usr/local/share/emacs 2>/dev/null || true
 	</sect1>
       </sect>
 
-      <sect id="sysvinit">
-	<heading>System run levels and <file>init.d</file> scripts</heading>
+      <sect id="init">
+	<heading>Init systems</heading>
+	
+	<p>
+	  The default init system in Debian with Linux kernels is systemd, run when
+	  <package>systemd-sysv</package> is installed.
+	  A number of other init systems are available in Debian, including
+	  in particular System V init, run when <package>sysvinit-core</package>
+	  is installed (and also the default for non-Linux kernels).
+	  Both of these packages provide the <package>init</package>
+	  metapackage.
+	</p>
 
-	<sect1 id="/etc/init.d">
-	  <heading>Introduction</heading>
+	<p>
+	  Packages must integrate with the default init system and may integrate
+	  with others as well.
+	  <list>
+	    <item>
+	      <p>
+		To integrate with systemd, packages provide so-called unit files
+		(described at <ref id="systemdunit">) or <file>init.d</file> scripts.
+	      </p>
+	    </item>
+	    <item>
+	      <p>
+		To integrate with upstart, packages provide so-called job files
+		(described at <ref id="upstartjob">) or <file>init.d</file> scripts.
+	      </p>
+	    </item>
+	    <item>
+	      <p>
+		To integrate with System V init, packages provide <file>init.d</file>
+		scripts (described at <ref id="/etc/init.d">).
+	      </p>
+	    </item>
+	    <item>
+	      <p>
+		Integration with other init systems in Debian, most of which do not
+		use <file>init.d</file> scripts, is not covered here; and Debian
+		Policy has no interface or usage contracts for those init systems.
+	      </p>
+	    </item>
+	  </list>
+	  These files provide init-system-specific information about how and when to
+	  run services, about boot-time and shutdown-time "milestones" or "targets",
+	  and about tasks that run as part of the boot-up or shutdown procedures.
+	  <footnote>For packages that do not require any of these things, integration is
+	  a no-op, of course.</footnote>
+	</p>
+
+	<p>
+	  The least common denominator of these are the <file>init.d</file>
+	  scripts.
+	  systemd places restrictions upon them, forbidding some of the more esoteric
+	  possible mechanisms that System V init historically allowed.
+	  However, a script that is compliant with this Policy should be
+	  usable with systemd.  <footnote>Many of the things that systemd prohibits are
+	  inherently problematic, irrespective of systemd.</footnote>
+	</p>
+
+	<p>
+	  Packages should use the same names for files across different init systems.
+	  However, this is not always possible.  For example, an <file>init.d</file>
+	  script can start and manage several services, whereas one would have
+	  individual systemd unit files for each of the individual services (and
+	  possibly more unit files for sockets if the services are socket-activated).
+	  Similarly, packages may be constrained by what upstream does.
+	  It is recommended that packages adopt the same names, though; not the least 
+	  because this enables a package to take advantage of the fact that a systemd 
+	  unit file that shares a name with a <file>init.d</file> script will be used
+	  in preference to that script. <footnote>Note that the <tt>Alias=</tt> setting
+	  in systemd unit files can be used to alleviate some problematic cases.</footnote>
+	</p>
+
+	<sect1 id="systemdunit">
+	  <heading>systemd unit files</heading>
 
 	  <p>
-	    The <file>/etc/init.d</file> directory contains the scripts
-	    executed by <prgn>init</prgn> at boot time and when the
-	    init state (or "runlevel") is changed (see <manref
-	    name="init" section="8">).
+	    The <file>/usr/lib/systemd/system</file> directory contains (package-supplied)
+	    systemd unit files that define systemd-managed services, sockets,
+	    mount points, automount entries, and other items.
+	    Administrators do not make local modifications to these files.
 	  </p>
 
-          <p>
-            There are at least two different, yet functionally
-            equivalent, ways of handling these scripts.  For the sake
-            of simplicity, this document describes only the symbolic
-            link method. However, it must not be assumed by maintainer
-            scripts that this method is being used, and any automated
-            manipulation of the various runlevel behaviors by
-            maintainer scripts must be performed using
-            <prgn>update-rc.d</prgn> as described below and not by
-            manually installing or removing symlinks.  For information
-            on the implementation details of the other method,
-            implemented in the <tt>file-rc</tt> package, please refer
-            to the documentation of that package.
+	  <p>
+	    Instead, local modifications made by administrators take the form of files
+	    in the <file>/etc/systemd/system</file> directory, which override 
+	    package-supplied units entirely, and files in <file>*.conf</file>
+	    subdirectories of that directory, which override parts of the package-supplied
+	    units.  (See <manref name="systemd.unit" section="8">.)
+	    Conversely, packages must not make modifications to these files.
 	  </p>
 
-          <p>
-            These scripts are referenced by symbolic links in the
-	    <file>/etc/rc<var>n</var>.d</file> directories.  When changing
-	    runlevels, <prgn>init</prgn> looks in the directory
-	    <file>/etc/rc<var>n</var>.d</file> for the scripts it should
-	    execute, where <tt><var>n</var></tt> is the runlevel that
-	    is being changed to, or <tt>S</tt> for the boot-up
+	  <p>
+	    A limited exception to this rule is that packages are permitted to make
+	    once-off conversions, during an upgrade, from information in a
+	    <file>/etc/defaults/<var>package</var></file> file to systemd unit
+	    override snippets in <file>/etc/systemd/system/*/*.conf</file>
+	    files. <footnote>
+	    This has the disadvantage of creating two separate and not 
+	    synchronized sets of administrator-defined service parameterization 
+	    information, one for systemd units and one for <file>init.d</file> 
 	    scripts.
+	    </footnote>
 	  </p>
 
-          <p>
-	    The names of the links all have the form
-	    <file>S<var>mm</var><var>script</var></file> or
-	    <file>K<var>mm</var><var>script</var></file> where
-	    <var>mm</var> is a two-digit number and <var>script</var>
-	    is the name of the script (this should be the same as the
-	    name of the actual script in <file>/etc/init.d</file>).
+	  <p>
+	    The requirements of <ref id="fhs-run"> apply to unit files under 
+	    <file>/run/systemd</file> of course.
 	  </p>
 
-          <p>
-	    When <prgn>init</prgn> changes runlevel first the targets
-	    of the links whose names start with a <tt>K</tt> are
-	    executed, each with the single argument <tt>stop</tt>,
-	    followed by the scripts prefixed with an <tt>S</tt>, each
-	    with the single argument <tt>start</tt>.  (The links are
-	    those in the <file>/etc/rc<var>n</var>.d</file> directory
-	    corresponding to the new runlevel.)  The <tt>K</tt> links
-	    are responsible for killing services and the <tt>S</tt>
-	    link for starting services upon entering the runlevel.
-	  </p>
-
-	  <p>
-	    For example, if we are changing from runlevel 2 to
-	    runlevel 3, init will first execute all of the <tt>K</tt>
-	    prefixed scripts it finds in <file>/etc/rc3.d</file>, and then
-	    all of the <tt>S</tt> prefixed scripts in that directory.
-	    The links starting with <tt>K</tt> will cause the
-	    referred-to file to be executed with an argument of
-	    <tt>stop</tt>, and the <tt>S</tt> links with an argument
-	    of <tt>start</tt>.
-	  </p>
-
-	  <p>
-	    The two-digit number <var>mm</var> is used to determine
-	    the order in which to run the scripts: low-numbered links
-	    have their scripts run first.  For example, the
-	    <tt>K20</tt> scripts will be executed before the
-	    <tt>K30</tt> scripts.  This is used when a certain service
-	    must be started before another.  For example, the name
-	    server <prgn>bind</prgn> might need to be started before
-	    the news server <prgn>inn</prgn> so that <prgn>inn</prgn>
-	    can set up its access lists.  In this case, the script
-	    that starts <prgn>bind</prgn> would have a lower number
-	    than the script that starts <prgn>inn</prgn> so that it
-	    runs first:
-	    <example compact="compact">
-/etc/rc2.d/S17bind
-/etc/rc2.d/S70inn
-	    </example>
+	  <p>
+	    For details of unit files please consult the man pages 
+	    <manref name="systemd.unit" section="8">,
+	    <manref name="systemd.exec" section="8">,
+	    <manref name="systemd.service" section="8">,
+	    <manref name="systemd.socket" section="8">,
+	    and
+	    <manref name="systemd.target" section="8">.
+	  </p>
+
+	  <sect2>
+	    <heading>constraints upon unit files</heading>
+
+	    <p>
+	      <list>
+		<item>
+		  <p>
+		    The <tt>Type=</tt> setting in a service unit file describes the readiness 
+		    notification mechanism employed by the daemon.
+		    <footnote>Readiness protocols are a communication mechanism between daemons and
+		    systemd that allow systemd to delay starting client processes until a server
+		    process is ready to service their requests.  systemd supports several such
+		    protocols.</footnote>
+		    <tt>fork()</tt>ing at startup and then <tt>exit()</tt>ing the main process
+		    is one such readiness protocol, denoted by <tt>Type=forking</tt>.
+		    Unit files should not use this unless the daemon is genuinely using this as
+		    a readiness signal and main process <tt>exit()</tt> is genuinely a readiness 
+		    notification.
+		    Most daemons are not in fact signalling readiness with this.
+		    Rather, they are operating in a convenience mode used when daemons are run from an
+		    <file>/etc/rc</file> script.  No Debian init system uses the
+		    <file>/etc/rc</file> mechanism.  Such daemons should be run with whatever
+		    configuration options or command-line options instruct them not to 
+		    gratuitously <tt>fork()</tt>; and the service unit files should use a more
+		    appropriate <tt>Type=</tt> setting that denotes the readiness protocol that
+		    they actually employ, if any.
+		  </p>
+		</item>
+		<item>
+		  <p>
+		    Service unit files must not (directly or indirectly) run commands to mask, unmask, 
+		    enable, disable, start, or stop either themselves or other services in their 
+		    <tt>Exec...=</tt> settings.
+		    Such actions must rather be properly expressed with dependency descriptions.
+		  </p>
+		  <p>
+		    Services also must not (directly or indirectly) invoke other <file>init.d</file>
+		    scripts in their <tt>Exec...=</tt> settings, as this can cause incorrect 
+		    init system operation.
+		    (See <ref id="systemdandupstartandrc"> for one way that this can cause service 
+		    control commands to be indirectly executed.)
+		    If an <file>init.d</file> script provides additional verbs, that functionality
+		    must be factored out of the script and placed elsewhere before it can be used
+		    by a service unit file.
+		  </p>
+		</item>
+		<item>
+		  <p>
+		    Unit files must not install to specific run level (<ref id="runlevels">) targets,
+		    because their meanings are the province of local administrators;
+		    but must instead use the standard targets such as <tt>multi-user.target</tt> and
+		    <tt>graphical.target</tt>.
+		  </p>
+		</item>
+	      </list>
+	    </p>
+	  </sect2>
+
+	  <sect2>
+	    <heading>recommendations for unit files</heading>
+
+	    <p>
+	      <list>
+		<item>
+		  <p>
+		    <tt>Restart=always</tt> should be avoided for socket-activated services,
+		    as it prevents them from being able to deactivate when idle.
+		    For such services, prefer <tt>Restart=on-failure</tt> or <tt>Restart=on-abort</tt>.
+		  </p>
+		</item>
+		<item>
+		  <p>
+		    Sockets and their associated services can be started and stopped independently.
+		    When upgrading a package, it is important to account for this in maintainer
+		    scripts, and if appropriate stop both.
+		    Otherwise, a client connecting to the socket could cause systemd to on-demand
+		    activate the service right at the point of the maintainer script where the service 
+		    is deactivated for upgrading and in an intermediate state where it is not correctly
+		    configured for running.
+		  </p>
+		  <p>
+		    The same consideration applies to D-Bus activated services.
+		  </p>
+		  <p>
+		    Please note that the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn> 
+		    in the <package>sysv-rc</package> package (See <ref id="systemdandupstartandrc">.)
+		    only operate upon service units and not on the associated socket units.
+		  </p>
+		</item>
+		<item>
+		  <p>
+		    Service units should, whereever the daemons do not require privileged access,
+		    run services as an unprivileged user and group.
+		    Optimally, that user should not own any files and directories to which
+		    the daemon does not strictly need ownership access.<footnote>In other words, 
+		    the user should not be able to change any access permissions except where 
+		    that is a part of the daemon's function.  This means not running services
+		    with the accounts of real, human, users, of course.</footnote>
+		    Maintainer scripts should of course add and delete any such users and groups
+		    that are specific to the package, at package installation and removal.
+		  </p>
+		</item>
+	      </list>
+	    </p>
+	  </sect2>
+
+	</sect1>
+
+	<sect1 id="systemdconfig">
+	  <heading>non-unit systemd-related package files</heading>
+
+	  <p>
+	    Packages can ship additional items for systemd, including <file>tmpfiles.d</file> 
+	    files, <file>sysctl.d</file> files, and <file>binfmt.d</file> files amonst others.
+	    Packages must not ship any such files under <file>/etc</file>, nor may they make any
+	    modifications to such files under <file>/etc</file>.
+	    The files in that subtree are the province of the local system administrator.
+	    All such files must be shipped in the appropriate subdirectories of <file>/usr/lib</file>.
 	  </p>
 
 	  <p>
-	    The two runlevels 0 (halt) and 6 (reboot) are slightly
-	    different.  In these runlevels, the links with an
-	    <tt>S</tt> prefix are still called after those with a
-	    <tt>K</tt> prefix, but they too are called with the single
-	    argument <tt>stop</tt>.
+	    These or work-alike mechanisms may not be available with other init systems.
+	    However, Policy does not exclude packages from using, and depending upon, a
+	    (hypothetical example) <package>upstart-tmpfilesd</package> for achieving the
+	    same ends when integrated with the <package>upstart</package> init system.
 	  </p>
+
 	</sect1>
 
-	<sect1 id="writing-init">
-	  <heading>Writing the scripts</heading>
+        <sect1 id="upstartjob">
+          <heading>upstart job files</heading>
 
 	  <p>
-	    Packages that include daemons for system services should
-	    place scripts in <file>/etc/init.d</file> to start or stop
-	    services at boot time or during a change of runlevel.
-	    These scripts should be named
-	    <file>/etc/init.d/<var>package</var></file>, and they should
-	    accept one argument, saying what to do:
+	    The <file>/etc/init</file> directory contains job files used by the
+            the <prgn>upstart</prgn> init system.
+	  </p>
 
-	    <taglist>
-	      <tag><tt>start</tt></tag>
-	      <item>start the service,</item>
+          <p>
+            Dependency-based boot managers for <file>init.d</file> scripts, such as
+            <prgn>startpar</prgn>, may avoid running a given script
+            entirely when an equivalent upstart job is present, to avoid
+            unnecessary forking of no-op init scripts.  In this case, the
+            boot manager should integrate with upstart to detect when the
+            upstart job in question is started or stopped to know when the
+            dependency has been satisfied.
+          </p>
+
+	  <p>
+	    Other interactions between <file>init.d</file> scripts and upstart are described at 
+	    <ref id="/etc/init.d">.
+	  </p>
+	</sect1>
 
-	      <tag><tt>stop</tt></tag>
-	      <item>stop the service,</item>
+	<sect1 id="runlevels">
+	  <heading>runlevels and <file>/etc/inittab</file></heading>
 
-	      <tag><tt>restart</tt></tag>
-	      <item>stop and restart the service if it's already running,
-		  otherwise start the service</item>
+	  <p>
+	    System V init's configuration file is <file>/etc/inittab</file>, which
+	    describes a set of "runlevels" and the default runlevel that the system 
+	    boots into.
+	    systemd has a mechanism that emulates System V init runlevels, but no init
+	    system other than Systemm V init uses or supplies the <file>/etc/inittab</file>
+	    file itself.  In order to operate correctly with the (Linux) default and indeed
+	    all but one of the init systems, packages must not use 
+	    <file>/etc/inittab</file>.
+	  </p>
 
-	      <tag><tt>reload</tt></tag>
-	      <item><p>cause the configuration of the service to be
-		  reloaded without actually stopping and restarting
-		  the service,</item>
+	  <p>
+	    Maintainer scripts may not assume that a distinct current run level can be 
+	    determined; because this is not necessarily the case with the default 
+	    init system.
+	    In general, maintainer scripts should avoid any mention of run levels at all.
+	    <footnote> 
+	    <prgn>update-rc.d</prgn> no longer has the ability to explicitly configure
+	    run levels on the command line.  They must instead be part of the LSB Header 
+	    in an <file>init.d</file> script (<ref id="/etc/init.d">).
+	    </footnote> 
+	  </p>
+	</sect1>
 
-	      <tag><tt>force-reload</tt></tag>
-	      <item>cause the configuration to be reloaded if the
-		  service supports this, otherwise restart the
-		  service.</item>
-	    </taglist>
+	<sect1 id="rc.local">
+	  <heading>BSD-style rc: <file>rc.boot</file> and <file>rc.local</file></heading>
 
-	    The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
-	    <tt>force-reload</tt> options should be supported by all
-	    scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
-	    option is optional.
-	  </p>
-
-	  <p>
-	    The <file>init.d</file> scripts must ensure that they will
-	    behave sensibly (i.e., returning success and not starting
-	    multiple copies of a service) if invoked with <tt>start</tt>
-	    when the service is already running, or with <tt>stop</tt>
-	    when it isn't, and that they don't kill unfortunately-named
-	    user processes.  The best way to achieve this is usually to
-	    use <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
-	    option.
-	  </p>
-
-	  <p>
-	    Be careful of using <tt>set -e</tt> in <file>init.d</file>
-	    scripts.  Writing correct <file>init.d</file> scripts requires
-	    accepting various error exit statuses when daemons are already
-	    running or already stopped without aborting
-	    the <file>init.d</file> script, and common <file>init.d</file>
-	    function libraries are not safe to call with <tt>set -e</tt>
-	    in effect<footnote>
-	      <tt>/lib/lsb/init-functions</tt>, which assists in writing
-	      LSB-compliant init scripts, may fail if <tt>set -e</tt> is
-	      in effect and echoing status messages to the console fails,
-	      for example.
-	    </footnote>.  For <tt>init.d</tt> scripts, it's often easier
-	    to not use <tt>set -e</tt> and instead check the result of
-	    each command separately.
-	  </p>
-
-	  <p>
-	    If a service reloads its configuration automatically (as
-	    in the case of <prgn>cron</prgn>, for example), the
-	    <tt>reload</tt> option of the <file>init.d</file> script
-	    should behave as if the configuration has been reloaded
-	    successfully.
-	  </p>
-
-	  <p>
-	    The <file>/etc/init.d</file> scripts must be treated as
-	    configuration files, either (if they are present in the
-	    package, that is, in the .deb file) by marking them as
-	    <tt>conffile</tt>s, or, (if they do not exist in the .deb)
-	    by managing them correctly in the maintainer scripts (see
-	    <ref id="config-files">).  This is important since we want
-	    to give the local system administrator the chance to adapt
-	    the scripts to the local system, e.g., to disable a
-	    service without de-installing the package, or to specify
-	    some special command line options when starting a service,
-	    while making sure their changes aren't lost during the next
-	    package upgrade.
-	  </p>
-
-	  <p>
-	    These scripts should not fail obscurely when the
-	    configuration files remain but the package has been
-	    removed, as configuration files remain on the system after
-	    the package has been removed.  Only when <prgn>dpkg</prgn>
-	    is executed with the <tt>--purge</tt> option will
-	    configuration files be removed.  In particular, as the
-	    <file>/etc/init.d/<var>package</var></file> script itself is
-	    usually a <tt>conffile</tt>, it will remain on the system
-	    if the package is removed but not purged.  Therefore, you
-	    should include a <tt>test</tt> statement at the top of the
-	    script, like this:
-	    <example compact="compact">
-test -f <var>program-executed-later-in-script</var> || exit 0
-	    </example>
+	  <p>
+	    Two Debian bootstrap mechanisms have their roots in non-System-V bootstrap 
+	    mechanisms, the <file>/etc/rc.local</file> file and the <file>/etc/rc.boot</file> 
+	    directory.
+	    The latter was a place where scripts to be run at boot-up could be placed.
+	    <footnote>On BSD operating systems, <file>/etc/rc.boot</file> is a file.</footnote>
+	    It is entirely deprecated and packages must not use it.
+	    No Debian init system now supports this mechanism.
 	  </p>
 
 	  <p>
-	    Often there are some variables in the <file>init.d</file>
-	    scripts whose values control the behavior of the scripts,
-	    and which a system administrator is likely to want to
-	    change.  As the scripts themselves are frequently
-	    <tt>conffile</tt>s, modifying them requires that the
-	    administrator merge in their changes each time the package
-	    is upgraded and the <tt>conffile</tt> changes.  To ease
-	    the burden on the system administrator, such configurable
-	    values should not be placed directly in the script.
-	    Instead, they should be placed in a file in
-	    <file>/etc/default</file>, which typically will have the same
-	    base name as the <file>init.d</file> script.  This extra file
-	    should be sourced by the script when the script runs.  It
-	    must contain only variable settings and comments in SUSv3
-	    <prgn>sh</prgn> format.  It may either be a
-	    <tt>conffile</tt> or a configuration file maintained by
-	    the package maintainer scripts.  See <ref id="config-files">
-	    for more details.
-	  </p>
-
-	  <p>
-	    To ensure that vital configurable values are always
-	    available, the <file>init.d</file> script should set default
-	    values for each of the shell variables it uses, either
-	    before sourcing the <file>/etc/default/</file> file or
-	    afterwards using something like the <tt>:
-	    ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
-	    script must behave sensibly and not fail if the
-	    <file>/etc/default</file> file is deleted.
-	  </p>
-
-	  <p>
-            Files and directories under <file>/run</file>, including ones
-            referred to via the compatibility paths <file>/var/run</file>
-            and <file>/var/lock</file>, are normally stored on a temporary
-            filesystem and are normally not persistent across a reboot.
-            The <file>init.d</file> scripts must handle this correctly.
-            This will typically mean creating any required subdirectories
-            dynamically when the <file>init.d</file> script is run.
-            See <ref id="fhs-run"> for more information.
+	    Packages must not use the former; as the name suggests it is for local
+	    administrator bootstrap tasks.
+	    Both systemd and System V <prgn>init</prgn> will run an <file>rc.local</file>
+	    file if it exists and is executable as a program. <footnote>This is a
+	    subtle difference from some historical systems, where <file>rc.local</file>
+	    need only be sourceable by the default shell.</footnote>
 	  </p>
+
 	</sect1>
 
-	<sect1>
-	  <heading>Interfacing with the initscript system</heading>
+	<sect1 id="sysvrc">
+	  <heading>System V rc</heading>
 
 	  <p>
-	    Maintainers should use the abstraction layer provided by
-	    the <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn>
-	    programs to deal with initscripts in their packages'
-	    scripts such as <prgn>postinst</prgn>, <prgn>prerm</prgn>
-	    and <prgn>postrm</prgn>.
+	    System V <prgn>init</prgn> implements changing between run levels
+	    through one of several <prgn>rc</prgn> programs 
+	    which in turn invoke <file>init.d</file>
+	    scripts (described in <ref id="/etc/init.d">).
+	    Packages that wish to provide the System V <prgn>rc</prgn>
+	    interface to the System V <prgn>init</prgn> system must provide
+	    the following programs:
+	    <list>
+	      <item>
+		<p>
+		  <file>/etc/init.d/rcS</file>, 
+		  a program that runs startup elements of the rc system.
+		</p>
+	      </item>
+	      <item>
+		<p>
+		  <file>/etc/init.d/rc</file>,
+		  a program that <prgn>init</prgn> invokes to enter/leave
+		  each run level.
+		</p>
+	      </item>
+	      <item>
+		<p>
+		  <file>/usr/sbin/invoke-rc.d</file>,
+		  a program used by maintainer scripts to start, stop, enable,
+		  and disable scripts, subject to local policy overrides.
+		  (See <ref id="invoke-rc.d">.)
+		</p>
+	      </item>
+	      <item>
+		<p>
+		  <file>/usr/sbin/update-rc.d</file>
+		  a program that is used to set/change what scripts run as
+		  each run level is entered and left, and in what order.
+		  (See <ref id="update-rc.d">.)
+		</p>
+	      </item>
+	    </list>
 	  </p>
 
 	  <p>
-	    Directly managing the /etc/rc?.d links and directly
-	    invoking the <file>/etc/init.d/</file> initscripts should
-	    be done only by packages providing the initscript
-	    subsystem (such as <prgn>sysv-rc</prgn> and
-	    <prgn>file-rc</prgn>).
+	    All init systems must provide the latter two, either themselves
+	    or through cooperation with an rc package.
+	    Only System V init itself also requires the former two from rc 
+	    packages.
 	  </p>
 
-	  <sect2>
-	    <heading>Managing the links</heading>
+	  <p>
+	    There are three different <prgn>rc</prgn> packages in Debian,
+	    <package>sysv-rc</package>, <package>file-rc</package>, and
+	    <package>openrc</package>.
+	    These record what scripts are enabled in each runlevel in
+	    differing ways.  Please refer to their documentation for the
+	    details.
+	    systemd has a fourth mechanism that is largely compatible with
+	    <package>sysv-rc</package>, but which has several differences,
+	    such as masking and the overriding priority that is given to service units.
+	  </p>
+
+	  <p>
+	    In general, therefore, maintainer scripts must not assume that
+	    the symbolic link mechanisms (described in previous editions of
+	    the Debian Policy Manual) take effect or even exist at all.
+	    Maintainer scripts scripts such as <prgn>postinst</prgn>, 
+	    <prgn>prerm</prgn> and <prgn>postrm</prgn>.  must use only the 
+	    supplied <prgn>update-rc.d</prgn> and <prgn>invoke-rc.d</prgn> 
+	    programs for interacting with the <file>init.d</file> script system.
+	  </p>
+
+	  <p>
+	    Only the rc packages themselves, and their various adjunct
+	    packages, have any business (in maintainer scripts) with the 
+	    <file>/etc/rc<var>n</var>.d</file> directories (of 
+	    <package>openrc</package> and <package>sysv-rc</package>) or the
+	    <file>/etc/runlevel.conf</file> file (of <package>file-rc</package>).
+	  </p>
+
+	  <sect2 id="systemdandupstartandrc">
+	    <heading>systemd and upstart and rc</heading>
 
 	    <p>
-	      The program <prgn>update-rc.d</prgn> is provided for
-	      package maintainers to arrange for the proper creation and
-	      removal of <file>/etc/rc<var>n</var>.d</file> symbolic links,
-	      or their functional equivalent if another method is being
-	      used.  This may be used by maintainers in their packages'
-	      <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
+	      In Debian 8, systemd and upstart do not provide their own
+	      <prgn>invoke-rc.d</prgn> and <prgn>update-rc.d</prgn>.
+	      The commands in the <package>sysv-rc</package> package have been 
+	      augmented to detect the running init system and take the appropriate 
+	      actions for enabling, disabling, starting, and stopping services.
+	      These augmentations do not exist in the
+	      <prgn>invoke-rc.d</prgn> and <prgn>update-rc.d</prgn>
+	      in the <package>file-rc</package> and <package>openrc</package> packages.
+	    </p>
+
+	    <p>
+	      Administrators are encouraged to prefer the <prgn>service</prgn> command
+	      to invoking <file>init.d</file> scripts directly,
+	      because it attempts to minimize (even though it cannot totally
+	      eradicate) the amount of login session state, including settings that can 
+	      potentially break service operations, that leaks from the administrator's
+	      shell running the <prgn>service</prgn> command to the daemon process(es)
+	      started by the <file>init.d</file> script.
+	      Better still is to use the <prgn>systemctl</prgn> or <prgn>initctl</prgn>
+	      commands, of course.
 	    </p>
 
 	    <p>
-	      You must not include any <file>/etc/rc<var>n</var>.d</file>
-	      symbolic links in the actual archive or manually create or
-	      remove the symbolic links in maintainer scripts; you must
-	      use the <prgn>update-rc.d</prgn> program instead.  (The
-	      former will fail if an alternative method of maintaining
-	      runlevel information is being used.)  You must not include
-	      the <file>/etc/rc<var>n</var>.d</file> directories themselves
-	      in the archive either.  (Only the <tt>sysvinit</tt>
-	      package may do so.)
+	      <file>init.d</file> scripts for which
+	      an equivalent upstart job is available must query the output of
+	      the command <prgn>initctl version</prgn> for the string
+	      <tt>upstart</tt> and avoid running in favor of the native
+	      upstart job, using a test such as this:
+	      <example compact="compact">
+if [ "$1" = start ] && which initctl >/dev/null && initctl version | grep -q upstart
+then
+	exit 1
+fi
+	      </example>
 	    </p>
 
 	    <p>
-	      By default <prgn>update-rc.d</prgn> will start services in
-	      each of the multi-user state runlevels (2, 3, 4, and 5)
-	      and stop them in the halt runlevel (0), the single-user
-	      runlevel (1) and the reboot runlevel (6).  The system
-	      administrator will have the opportunity to customize
-	      runlevels by simply adding, moving, or removing the
-	      symbolic links in <file>/etc/rc<var>n</var>.d</file> if
-	      symbolic links are being used, or by modifying
-	      <file>/etc/runlevel.conf</file> if the <tt>file-rc</tt> method
-	      is being used.
+	      Avoiding running in favour of a native systemd unit is slightly simpler.
+	      If an <file>init.d</file> script sources <file>/lib/lsb/init-functions</file>,
+	      the script will automatically redirect invocations to <prgn>systemctl</prgn>.
 	    </p>
 
+	  </sect2>
+
+	  <sect2 id="update-rc.d">
+	    <heading>Enabling and disabling scripts with <prgn>update-rc.d</prgn></heading>
+
 	    <p>
-	      To get the default behavior for your package, put in your
-	      <prgn>postinst</prgn> script
+	      The program <prgn>update-rc.d</prgn> is provided (by each 
+	      init/rc system) for package maintainers to arrange for 
+	      enabling and disabling the running of <file>init.d</file> scripts.
+	      This may be used by maintainers in their packages'
+	      <prgn>postinst</prgn> and <prgn>postrm</prgn> scripts.
+	      Maintainer scripts must not attempt to enable and disable
+	      scripts directly.
+	    </p>
+
+	    <p>
+	      By default <prgn>update-rc.d</prgn> will enable services in the 
+	      multi-user state, meaning that they will be started in that state
+	      and stopped in the halt, rescue, poweroff, and reboot states.
+	    </p>
+
+	    <p>
+	      To get the default behavior for your package, put 
 	      <example compact="compact">
 		update-rc.d <var>package</var> defaults
 	      </example>
-	      and in your <prgn>postrm</prgn>
+	      in your <prgn>postinst</prgn> script and put
 	      <example compact="compact">
 		if [ "$1" = purge ]; then
 		update-rc.d <var>package</var> remove
 		fi
-	      </example>. Note that if your package changes runlevels
-	      or priority, you may have to remove and recreate the links,
-	      since otherwise the old links may persist. Refer to the
-	      documentation of <prgn>update-rc.d</prgn>.
-	    </p>
-
-	    <p>
-	      This will use a default sequence number of 20.  If it does
-	      not matter when or in which order the <file>init.d</file>
-	      script is run, use this default.  If it does, then you
-	      should talk to the maintainer of the <prgn>sysvinit</prgn>
-	      package or post to <tt>debian-devel</tt>, and they will
-	      help you choose a number.
+	      </example>
+	      in your <prgn>postrm</prgn>.
 	    </p>
 
 	    <p>
 	      For more information about using <tt>update-rc.d</tt>,
-	      please consult its man page <manref name="update-rc.d"
-		section="8">.
+	      please consult its man page 
+	      <manref name="update-rc.d" section="8">.
 	    </p>
 	  </sect2>
 
-	  <sect2>
-	    <heading>Running initscripts</heading>
-	    <p>
-	      The program <prgn>invoke-rc.d</prgn> is provided to make
-	      it easier for package maintainers to properly invoke an
-	      initscript, obeying runlevel and other locally-defined
-	      constraints that might limit a package's right to start,
-	      stop and otherwise manage services. This program may be
-	      used by maintainers in their packages' scripts.
-	    </p>
+	  <sect2 id="invoke-rc.d">
+	    <heading>Starting and stopping scripts with <prgn>invoke-rc.d</prgn></heading>
 
 	    <p>
-	      The package maintainer scripts must use
-	      <prgn>invoke-rc.d</prgn> to invoke the
-	      <file>/etc/init.d/*</file> initscripts, instead of
-	      calling them directly.
+	      The program <prgn>invoke-rc.d</prgn> is provided for properly
+	      invoking an <file>init.d</file> script, obeying runlevels, masks, and 
+	      other init-system-defined and locally-defined constraints that might 
+	      limit a package's right to start, stop and otherwise manage services. 
+	      Maintainer scripts must use this program and must not attempt to enable 
+	      and disable scripts directly.
 	    </p>
 
 	    <p>
-	      By default, <prgn>invoke-rc.d</prgn> will pass any
-	      action requests (start, stop, reload, restart...) to the
-	      <file>/etc/init.d</file> script, filtering out requests
-	      to start or restart a service out of its intended
-	      runlevels.
+	      For compatibility with the default init system, maintainer scripts
+	      must not run <prgn>invoke-rc.d</prgn> with any action requests other
+	      than the conventional start, stop, reload, force-reload, and restart.
 	    </p>
 
 	    <p>
-	      Most packages will simply need to change:
-	      <example compact="compact">/etc/init.d/&lt;package&gt;
-	      &lt;action&gt;</example> in their <prgn>postinst</prgn>
-	      and <prgn>prerm</prgn> scripts to:
+	      Instead of using:
+	      <example compact="compact">/etc/init.d/&lt;package&gt; &lt;action&gt;</example> 
+	      in a package's <prgn>postinst</prgn> and <prgn>prerm</prgn> scripts 
+	      packages must have something like:
 	      <example compact="compact">
-	if which invoke-rc.d >/dev/null 2>&1; then
-		invoke-rc.d <var>package</var> &lt;action&gt;
-	else
-		/etc/init.d/<var>package</var> &lt;action&gt;
-	fi
+if which invoke-rc.d >/dev/null 2>&1; then
+	invoke-rc.d <var>package</var> &lt;action&gt;
+else
+	/etc/init.d/<var>package</var> &lt;action&gt;
+fi
 	      </example>
 	    </p>
 
 	    <p>
-	      A package should register its initscript services using
+	      A package should register its <file>init.d</file> services using
 	      <prgn>update-rc.d</prgn> before it tries to invoke them
-	      using <prgn>invoke-rc.d</prgn>. Invocation of
-	      unregistered services may fail.
+	      using <prgn>invoke-rc.d</prgn>. 
+	      Invocation of unregistered services may fail on some init systems.
 	    </p>
 
 	    <p>
@@ -7755,225 +7903,374 @@ test -f <var>program-executed-later-in-script</var> || exit 0
 	  </sect2>
 	</sect1>
 
-	<sect1>
-	  <heading>Boot-time initialization</heading>
+	<sect1 id="/etc/init.d">
+	  <heading><file>init.d</file> scripts</heading>
 
-          <p>
-            There used to be another directory, <file>/etc/rc.boot</file>,
-            which contained scripts which were run once per machine
-            boot. This has been deprecated in favour of links from
-            <file>/etc/rcS.d</file> to files in <file>/etc/init.d</file> as
-            described in <ref id="/etc/init.d">.  Packages must not
-            place files in <file>/etc/rc.boot</file>.
+	  <p>
+	  The <file>/etc/init.d</file> directory contains scripts that are executed
+	  directly by systemd and upstart, and indirectly by System V init by way
+	  of one of several <prgn>rc</prgn> systems (described in
+	  <ref id="sysvrc">).
 	  </p>
-	</sect1>
 
-	<sect1>
-	  <heading>Example</heading>
+	  <sect2 id="writing-init">
+	    <heading>Writing the scripts</heading>
 
-	  <p>
-	    An example on which you can base your
-	    <file>/etc/init.d</file> scripts is found in
-	    <file>/etc/init.d/skeleton</file>.
-	  </p>
+	    <p>
+	      Packages that include daemons for system services may
+	      place scripts in <file>/etc/init.d</file> to start or stop
+	      services at boot time or during a change of runlevel.
+	      These scripts should be named
+	      <file>/etc/init.d/<var>package</var></file>, and they should
+	      accept one argument, saying what to do:
+
+	      <taglist>
+		<tag><tt>start</tt></tag>
+		<item>start the service,</item>
+
+		<tag><tt>stop</tt></tag>
+		<item>stop the service,</item>
+
+		<tag><tt>restart</tt></tag>
+		<item>stop and restart the service if it's already running,
+		    otherwise start the service</item>
+
+		<tag><tt>reload</tt></tag>
+		<item><p>cause the configuration of the service to be
+		    reloaded without actually stopping and restarting
+		    the service,</item>
+
+		<tag><tt>force-reload</tt></tag>
+		<item>cause the configuration to be reloaded if the
+		    service supports this, otherwise restart the
+		    service.</item>
+	      </taglist>
 
-	</sect1>
-      </sect>
+	      The <tt>start</tt>, <tt>stop</tt>, <tt>restart</tt>, and
+	      <tt>force-reload</tt> options should be supported by all
+	      scripts in <file>/etc/init.d</file>, the <tt>reload</tt>
+	      option is optional.
+	    </p>
 
-      <sect>
-	<heading>Console messages from <file>init.d</file> scripts</heading>
+	    <p>
+	      An example on which you can base your
+	      <file>/etc/init.d</file> scripts is found in
+	      <file>/etc/init.d/skeleton</file>.
+	    </p>
 
-	<p>
-	  This section describes the formats to be used for messages
-	  written to standard output by the <file>/etc/init.d</file>
-	  scripts.  The intent is to improve the consistency of
-	  Debian's startup and shutdown look and feel.  For this
-	  reason, please look very carefully at the details.  We want
-	  the messages to have the same format in terms of wording,
-	  spaces, punctuation and case of letters.
-	</p>
+	    <p>
+	      The <file>init.d</file> scripts must ensure that they will
+	      behave sensibly (i.e., returning success and not starting
+	      multiple copies of a service) if invoked with <tt>start</tt>
+	      when the service is already running, or with <tt>stop</tt>
+	      when it isn't, and that they don't kill unfortunately-named
+	      user processes.  The best way to achieve this is to switch from
+	      an <file>init.d</file> script to a service unit
+	      (<ref id="systemdunit">) or a job file (<ref id="upstartjob">)
+	      of course.  Whilst remaining an <file>init.d</file> script
+	      however, the best usually for achieving this is to use
+	      <prgn>start-stop-daemon</prgn> with the <tt>--oknodo</tt>
+	      option.
+	    </p>
 
-	<p>
-	  Here is a list of overall rules that should be used for
-	  messages generated by <file>/etc/init.d</file> scripts.  
-	</p>
+	    <p>
+	      Be careful of using <tt>set -e</tt> in <file>init.d</file>
+	      scripts.  Writing correct <file>init.d</file> scripts requires
+	      accepting various error exit statuses when daemons are already
+	      running or already stopped without aborting
+	      the <file>init.d</file> script, and common <file>init.d</file>
+	      function libraries are not safe to call with <tt>set -e</tt>
+	      in effect<footnote>
+		<tt>/lib/lsb/init-functions</tt>, which assists in writing
+		LSB-compliant init scripts, may fail if <tt>set -e</tt> is
+		in effect and echoing status messages to the console fails,
+		for example.
+	      </footnote>.  For <tt>init.d</tt> scripts, it's often easier
+	      to not use <tt>set -e</tt> and instead check the result of
+	      each command separately.
+	    </p>
 
-	<p>
-	  <list>
-	    <item>
-		The message should fit in one line (fewer than 80
-		characters), start with a capital letter and end with
-		a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
-	    </item>
+	    <p>
+	      If a service reloads its configuration automatically (as
+	      in the case of <prgn>cron</prgn>, for example), the
+	      <tt>reload</tt> option of the <file>init.d</file> script
+	      should behave as if the configuration has been reloaded
+	      successfully.
+	    </p>
 
-	    <item>
-              If the script is performing some time consuming task in
-              the background (not merely starting or stopping a
-              program, for instance), an ellipsis (three dots:
-              <tt>...</tt>) should be output to the screen, with no
-              leading or tailing whitespace or line feeds.
-	    </item>
+	    <p>
+	      The <file>/etc/init.d</file> scripts must be treated as
+	      configuration files, either (if they are present in the
+	      package, that is, in the .deb file) by marking them as
+	      <tt>conffile</tt>s, or, (if they do not exist in the .deb)
+	      by managing them correctly in the maintainer scripts (see
+	      <ref id="config-files">).  This is important since we want
+	      to give the local system administrator the chance to adapt
+	      the scripts to the local system, e.g., to disable a
+	      service without de-installing the package, or to specify
+	      some special command line options when starting a service,
+	      while making sure their changes aren't lost during the next
+	      package upgrade.
+	    </p>
 
-	    <item>
-              The messages should appear as if the computer is telling
-              the user what it is doing (politely :-), but should not
-                mention "it" directly.  For example, instead of:
-		<example compact="compact">
+	    <p>
+	      These scripts should not fail obscurely when the
+	      configuration files remain but the package has been
+	      removed, as configuration files remain on the system after
+	      the package has been removed.  Only when <prgn>dpkg</prgn>
+	      is executed with the <tt>--purge</tt> option will
+	      configuration files be removed.  In particular, as the
+	      <file>/etc/init.d/<var>package</var></file> script itself is
+	      usually a <tt>conffile</tt>, it will remain on the system
+	      if the package is removed but not purged.  Therefore, you
+	      should include a <tt>test</tt> statement at the top of the
+	      script, like this:
+	      <example compact="compact">
+test -f <var>program-executed-later-in-script</var> || exit 0
+	      </example>
+	    </p>
+
+	    <p>
+	      Often there are some variables in the <file>init.d</file>
+	      scripts whose values control the behavior of the scripts,
+	      and which a system administrator is likely to want to
+	      change.  As the scripts themselves are frequently
+	      <tt>conffile</tt>s, modifying them requires that the
+	      administrator merge in their changes each time the package
+	      is upgraded and the <tt>conffile</tt> changes.  To ease
+	      the burden on the system administrator, such configurable
+	      values should not be placed directly in the script.
+	      Instead, they should be placed in a file in
+	      <file>/etc/default</file>, which typically will have the same
+	      base name as the <file>init.d</file> script.  This extra file
+	      should be sourced by the script when the script runs.  It
+	      must contain only variable settings and comments in SUSv3
+	      <prgn>sh</prgn> format.  It may either be a
+	      <tt>conffile</tt> or a configuration file maintained by
+	      the package maintainer scripts.  See <ref id="config-files">
+	      for more details.
+	    </p>
+
+	    <p>
+	      To ensure that vital configurable values are always
+	      available, the <file>init.d</file> script should set default
+	      values for each of the shell variables it uses, either
+	      before sourcing the <file>/etc/default/</file> file or
+	      afterwards using something like the <tt>:
+	      ${VAR:=default}</tt> syntax.  Also, the <file>init.d</file>
+	      script must behave sensibly and not fail if the
+	      <file>/etc/default</file> file is deleted.
+	    </p>
+
+	    <p>
+	      Files and directories under <file>/run</file>, including ones
+	      referred to via the compatibility paths <file>/var/run</file>
+	      and <file>/var/lock</file>, are normally stored on a temporary
+	      filesystem and are normally not persistent across a reboot.
+	      The <file>init.d</file> scripts must handle this correctly.
+	      This will typically mean creating any required subdirectories
+	      dynamically when the <file>init.d</file> script is run.
+	      See <ref id="fhs-run"> for more information.
+	    </p>
+	  </sect2>
+
+	  <sect2>
+	    <heading>Console messages from <file>init.d</file> scripts</heading>
+
+	    <p>
+	      This section describes the formats to be used for messages
+	      written to standard output by the <file>/etc/init.d</file>
+	      scripts.  The intent is to improve the consistency of
+	      Debian's startup and shutdown look and feel.  For this
+	      reason, please look very carefully at the details.  We want
+	      the messages to have the same format in terms of wording,
+	      spaces, punctuation and case of letters.
+	    </p>
+
+	    <p>
+	      Here is a list of overall rules that should be used for
+	      messages generated by <file>/etc/init.d</file> scripts.  
+	    </p>
+
+	    <p>
+	      <list>
+		<item>
+		    The message should fit in one line (fewer than 80
+		    characters), start with a capital letter and end with
+		    a period (<tt>.</tt>) and line feed (<tt>"\n"</tt>).
+		</item>
+
+		<item>
+		  If the script is performing some time consuming task in
+		  the background (not merely starting or stopping a
+		  program, for instance), an ellipsis (three dots:
+		  <tt>...</tt>) should be output to the screen, with no
+		  leading or tailing whitespace or line feeds.
+		</item>
+
+		<item>
+		  The messages should appear as if the computer is telling
+		  the user what it is doing (politely :-), but should not
+		    mention "it" directly.  For example, instead of:
+		    <example compact="compact">
 I'm starting network daemons: nfsd mountd.
-		</example>
-		the message should say
-		<example compact="compact">
+		    </example>
+		    the message should say
+		    <example compact="compact">
 Starting network daemons: nfsd mountd.
-		</example>
-	    </item>
-	  </list>
-	</p>
+		    </example>
+		</item>
+	      </list>
+	    </p>
 
-	<p>
-          <tt>init.d</tt> script should use the following  standard
-          message formats for the situations enumerated below.
-	</p>
+	    <p>
+	      <tt>init.d</tt> script should use the following  standard
+	      message formats for the situations enumerated below.
+	    </p>
 
-	<p>
-	  <list>
-	    <item>
-	      <p>When daemons are started</p>
+	    <p>
+	      <list>
+		<item>
+		  <p>When daemons are started</p>
 
-	      <p>
-		If the script starts one or more daemons, the output
-		should look like this (a single line, no leading
-		spaces):
-		<example compact="compact">
+		  <p>
+		    If the script starts one or more daemons, the output
+		    should look like this (a single line, no leading
+		    spaces):
+		    <example compact="compact">
 Starting <var>description</var>: <var>daemon-1</var> ... <var>daemon-n</var>.
-		</example>
-		The <var>description</var> should describe the
-		subsystem the daemon or set of daemons are part of,
-		while <var>daemon-1</var> up to <var>daemon-n</var>
-		denote each daemon's name (typically the file name of
-		the program).
-	      </p>
+		    </example>
+		    The <var>description</var> should describe the
+		    subsystem the daemon or set of daemons are part of,
+		    while <var>daemon-1</var> up to <var>daemon-n</var>
+		    denote each daemon's name (typically the file name of
+		    the program).
+		  </p>
 
-	      <p>
-		For example, the output of <file>/etc/init.d/lpd</file>
-		would look like:
-		<example compact="compact">
+		  <p>
+		    For example, the output of <file>/etc/init.d/lpd</file>
+		    would look like:
+		    <example compact="compact">
 Starting printer spooler: lpd.
-		</example>
-	      </p>
+		    </example>
+		  </p>
 
-	      <p>
-		This can be achieved by saying
-		<example compact="compact">
+		  <p>
+		    This can be achieved by saying
+		    <example compact="compact">
 echo -n "Starting printer spooler: lpd"
 start-stop-daemon --start --quiet --exec /usr/sbin/lpd
 echo "."
-		</example>
-		in the script. If there are more than one daemon to
-		start, the output should look like this:
-		<example compact="compact">
+		    </example>
+		    in the script. If there are more than one daemon to
+		    start, the output should look like this:
+		    <example compact="compact">
 echo -n "Starting remote file system services:"
 echo -n " nfsd"; start-stop-daemon --start --quiet nfsd
 echo -n " mountd"; start-stop-daemon --start --quiet mountd
 echo -n " ugidd"; start-stop-daemon --start --quiet ugidd
 echo "."
-		</example>
-		This makes it possible for the user to see what is
-		happening and when the final daemon has been started.
-		Care should be taken in the placement of white spaces:
-		in the example above the system administrators can
-		easily comment out a line if they don't want to start
-		a specific daemon, while the displayed message still
-		looks good.
-	      </p>
-	    </item>
+		    </example>
+		    This makes it possible for the user to see what is
+		    happening and when the final daemon has been started.
+		    Care should be taken in the placement of white spaces:
+		    in the example above the system administrators can
+		    easily comment out a line if they don't want to start
+		    a specific daemon, while the displayed message still
+		    looks good.
+		  </p>
+		</item>
 
-	    <item>
-	      <p>When a system parameter is being set</p>
+		<item>
+		  <p>When a system parameter is being set</p>
 
-	      <p>
-		If you have to set up different system parameters
-		during the system boot, you should use this format:
-		<example compact="compact">
+		  <p>
+		    If you have to set up different system parameters
+		    during the system boot, you should use this format:
+		    <example compact="compact">
 Setting <var>parameter</var> to "<var>value</var>".
-		</example>
-	      </p>
+		    </example>
+		  </p>
 
-	      <p>
-		You can use a statement such as the following to get
-		the quotes right:
-		<example compact="compact">
+		  <p>
+		    You can use a statement such as the following to get
+		    the quotes right:
+		    <example compact="compact">
 echo "Setting DNS domainname to \"$domainname\"."
-		</example>
-	      </p>
+		    </example>
+		  </p>
 
-	      <p>
-                Note that the same symbol (<tt>"</tt>) <!-- " --> is used
-                for the left and right quotation marks.  A grave accent
-                (<tt>`</tt>) is not a quote character; neither is an
-                apostrophe (<tt>'</tt>).
-	      </p>
-	    </item>
+		  <p>
+		    Note that the same symbol (<tt>"</tt>) <!-- " --> is used
+		    for the left and right quotation marks.  A grave accent
+		    (<tt>`</tt>) is not a quote character; neither is an
+		    apostrophe (<tt>'</tt>).
+		  </p>
+		</item>
 
-	    <item>
-	      <p>When a daemon is stopped or restarted</p>
+		<item>
+		  <p>When a daemon is stopped or restarted</p>
 
-	      <p>
-		When you stop or restart a daemon, you should issue a
-		message identical to the startup message, except that
-		<tt>Starting</tt> is replaced with <tt>Stopping</tt>
-		or <tt>Restarting</tt> respectively.
-	      </p>
+		  <p>
+		    When you stop or restart a daemon, you should issue a
+		    message identical to the startup message, except that
+		    <tt>Starting</tt> is replaced with <tt>Stopping</tt>
+		    or <tt>Restarting</tt> respectively.
+		  </p>
 
-	      <p>
-		For example, stopping the printer daemon will look like
-		this:
-		<example compact="compact">
+		  <p>
+		    For example, stopping the printer daemon will look like
+		    this:
+		    <example compact="compact">
 Stopping printer spooler: lpd.
-		</example>
-	      </p>
-	    </item>
+		    </example>
+		  </p>
+		</item>
 
-	    <item>
-	      <p>When something is executed</p>
+		<item>
+		  <p>When something is executed</p>
 
-	      <p>
-		There are several examples where you have to run a
-		program at system startup or shutdown to perform a
-		specific task, for example, setting the system's clock
-		using <prgn>netdate</prgn> or killing all processes
-		when the system shuts down.  Your message should look
-		like this:
-		<example compact="compact">
+		  <p>
+		    There are several examples where you have to run a
+		    program at system startup or shutdown to perform a
+		    specific task, for example, setting the system's clock
+		    using <prgn>netdate</prgn> or killing all processes
+		    when the system shuts down.  Your message should look
+		    like this:
+		    <example compact="compact">
 Doing something very useful...done.
-		</example>
-		You should print the <tt>done.</tt> immediately after
-		the job has been completed, so that the user is
-		informed why they have to wait.  You can get this
-		behavior by saying
-		<example compact="compact">
+		    </example>
+		    You should print the <tt>done.</tt> immediately after
+		    the job has been completed, so that the user is
+		    informed why they have to wait.  You can get this
+		    behavior by saying
+		    <example compact="compact">
 echo -n "Doing something very useful..."
 do_something
 echo "done."
-		</example>
-		in your script.
-	      </p>
-	    </item>
+		    </example>
+		    in your script.
+		  </p>
+		</item>
 
-	    <item>
-	      <p>When the configuration is reloaded</p>
+		<item>
+		  <p>When the configuration is reloaded</p>
 
-	      <p>
-		When a daemon is forced to reload its configuration
-		files you should use the following format:
-		<example compact="compact">
+		  <p>
+		    When a daemon is forced to reload its configuration
+		    files you should use the following format:
+		    <example compact="compact">
 Reloading <var>description</var> configuration...done.
-		</example>
-		where <var>description</var> is the same as in the
-		daemon starting message.
-	      </p>
-	    </item>
-	  </list>
-	</p>
+		    </example>
+		    where <var>description</var> is the same as in the
+		    daemon starting message.
+		  </p>
+		</item>
+	      </list>
+	    </p>
+	  </sect2>
+
+	</sect1>
       </sect>
 
       <sect id="cron-jobs">
@@ -8383,74 +8680,6 @@ exec /usr/lib/foo/foo "$@"
 	</p>
       </sect>
 
-      <sect id="alternateinit">
-        <heading>Alternate init systems</heading>
-        <p>
-          A number of other init systems are available now in Debian that
-          can be used in place of <package>sysvinit</package>.  Alternative
-          init implementations must support running SysV init scripts as
-          described at <ref id="sysvinit"> for compatibility.
-        </p>
-        <p>
-          Packages may integrate with these replacement init systems by
-          providing implementation-specific configuration information about
-          how and when to start a service or in what order to run certain
-          tasks at boot time.  However, any package integrating with other
-          init systems must also be backwards-compatible with
-          <package>sysvinit</package> by providing a SysV-style init script
-          with the same name as and equivalent functionality to any
-          init-specific job, as this is the only start-up configuration
-          method guaranteed to be supported by all init implementations.  An
-          exception to this rule is scripts or jobs provided by the init
-          implementation itself; such jobs may be required for an
-          implementation-specific equivalent of the <file>/etc/rcS.d/</file>
-          scripts and may not have a one-to-one correspondence with the init
-          scripts.
-        </p>
-        <sect1 id="upstart">
-          <heading>Event-based boot with upstart</heading>
-
-	  <p>
-            Packages may integrate with the <prgn>upstart</prgn> event-based
-            boot system by installing job files in the
-            <file>/etc/init</file> directory.  SysV init scripts for which
-            an equivalent upstart job is available must query the output of
-            the command <prgn>initctl version</prgn> for the string
-            <tt>upstart</tt> and avoid running in favor of the native
-            upstart job, using a test such as this:
-	    <example compact="compact">
-if [ "$1" = start ] && which initctl >/dev/null && initctl version | grep -q upstart
-then
-	exit 1
-fi
-	    </example>
-          </p>
-          <p>
-            Because packages shipping upstart jobs may be installed on
-            systems that are not using upstart, maintainer scripts must
-            still use the common <prgn>update-rc.d</prgn> and
-            <prgn>invoke-rc.d</prgn> interfaces for configuring runlevels
-            and for starting and stopping services.  These maintainer
-            scripts must not call the upstart <prgn>start</prgn>,
-            <prgn>restart</prgn>, <prgn>reload</prgn>, or <prgn>stop</prgn>
-            interfaces directly.  Instead, implementations of
-            <prgn>invoke-rc.d</prgn> must detect when upstart is running and
-            when an upstart job with the same name as an init script is
-            present, and perform the requested action using the upstart job
-            instead of the init script.
-          </p>
-          <p>
-            Dependency-based boot managers for SysV init scripts, such as
-            <prgn>startpar</prgn>, may avoid running a given init script
-            entirely when an equivalent upstart job is present, to avoid
-            unnecessary forking of no-op init scripts.  In this case, the
-            boot manager should integrate with upstart to detect when the
-            upstart job in question is started or stopped to know when the
-            dependency has been satisfied.
-          </p>
-         </sect1>
-      </sect>
-
     </chapt>
 
 
