Differences between revisions 153 and 154
Revision 153 as of 2008-11-30 10:27:05
Size: 6383
Editor: ?PetterReinholdtsen
Comment: New status update sent.
Revision 154 as of 2009-01-21 20:18:39
Size: 6309
Editor: ?SandroMillien
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
It is possible to converting Debian to order the boot sequence using the LSB headers in the init.d scripts. This will get rid of several bugs in the current boot sequence, and make it easier to keep the sequence correct.
Line 4: Line 5:
It is possible to converting Debian to order the boot sequence using the
LSB headers in the init.d scripts. This will get rid of several bugs in the
current boot sequence, and make it easier to keep the sequence correct.

The feature [http://lists.debian.org/debian-devel-announce/2008/01/msg00004.html was announced on debian-devel-announce] 2008-01-17.
A status update message was sent [http://lists.debian.org/debian-devel-announce/2008/03/msg00011.html 2008-03-16] and
[http://lists.debian.org/debian-devel-announce/2008/11/msg00007.html 2008-11-30].
The feature [http://lists.debian.org/debian-devel-announce/2008/01/msg00004.html was announced on debian-devel-announce] 2008-01-17. A status update message was sent [http://lists.debian.org/debian-devel-announce/2008/03/msg00011.html 2008-03-16] and [http://lists.debian.org/debian-devel-announce/2008/11/msg00007.html 2008-11-30].
Line 13: Line 8:

Did you every need to insert a init.d scripts Y before init.d scripts
Z and after init.d script X, where both Z and X is started using boot
sequence number 20 (as in 20X and 20Z)? Adding your script as 20Y
would not cut it, because you need Z to start before X. To do this,
in Debian you currently need to talk to the maintainer of packages
with scripts Z and X, asking one of them (or both) to move their
script into a different number. Dependency based boot sequencing make
it possible for each package maintainer to specify the dependencies of
its scripts, and leave the number allocation to the dependency
resolver.
Did you ever need to insert a init.d scripts Y before init.d scripts Z and after init.d script X, where both Z and X is started using boot sequence number 20 (as in 20X and 20Z)? Adding your script as 20Y would not cut it, because you need Z to start before X. To do this, in Debian you currently need to talk to the maintainer of packages with scripts Z and X, asking one of them (or both) to move their script into a different number. Dependency based boot sequencing make it possible for each package maintainer to specify the dependencies of its scripts, and leave the number allocation to the dependency resolver.
Line 26: Line 11:
Line 30: Line 14:
== Status ==
This page is created to keep track of the state of this feature, to make it easier to coordinate an effort to implement it for Debian Lenny. It is [http://lists.debian.org/debian-release/2007/06/msg00164.html proposed] as a [http://release.debian.org/lenny-goals.txt release goal] for Lenny.
|| || 2007-07-03 || 2007-07-22 || 2007-08-08 || 2007-09-06 || 2007-10-24 || 2007-11-14 || 2007-11-29 || 2007-12-22 || 2007-12-30 || 2008-01-06 || 2008-01-14 || 2008-01-26 || 2008-02-03 || 2008-02-08 || 2008-02-20 || 2008-02-23 || 2008-03-07 || 2008-03-09 || 2008-03-13 || 2008-03-19 || 2008-04-16 || 2008-05-01 || 2008-05-18 || 2008-11-30 ||
|| packages with init.d scripts || 843 || 843 || 845 || 849 || 855 || 852 || 851 || 857 || 860 || 863 || 863 || 864 || 863 || 863 || 866 || 866 || 873 || 873 || 873 || 873 || 873 || 873 || 873 || 909 ||
|| fraction with LSB headers || 56% || 57% || 58% || 60% || 62% || 63% || 64% || 66% || 67% || 68% || 69% || 70% || 73% || 73% || 76% || 77% || 78% || 79% || 80% || 83% || 98% || 99% || 99% || 99.8% ||
|| packages without LSB headers || 373 || 363 || 353 || 336 || 325 || 319 || 303 || 292 || 287 || 280 || 269 || 258 || 237 || 229 || 212 || 203 || 187 || 181 || 172 || 148 || 16 || 12 || 9 || 2 ||
|| base packages without LSB headers || 2 of 40 || || || || || 1 of 40 (1 of 12 pkgs) || || || || 0 of 38 (0 of 10 pkgs) || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 ||
|| desktop packages without LSB headers || 6 of 58 || || || || || 7 of 70 (7 of 39 pkgs) || || || || 4 of 75 (4 of 42 pkgs) || || || || || || || || || || || || || 0 || 0 ||
Line 31: Line 23:
== Status ==

This page is created to keep track of the state of this feature, to make it easier
to coordinate an effort to implement it for Debian Lenny. It is [http://lists.debian.org/debian-release/2007/06/msg00164.html proposed] as a [http://release.debian.org/lenny-goals.txt release goal] for Lenny.

|| || 2007-07-03 || 2007-07-22 || 2007-08-08 || 2007-09-06 || 2007-10-24 || 2007-11-14 || 2007-11-29 || 2007-12-22 || 2007-12-30 || 2008-01-06 || 2008-01-14 || 2008-01-26 || 2008-02-03 || 2008-02-08 || 2008-02-20 || 2008-02-23 || 2008-03-07 || 2008-03-09 || 2008-03-13 || 2008-03-19 || 2008-04-16 || 2008-05-01 || 2008-05-18 || 2008-11-30 ||
|| packages with init.d scripts || 843 || 843|| 845 || 849 || 855 || 852 || 851 || 857 || 860 || 863 || 863 || 864 || 863 || 863 || 866 || 866 || 873 || 873 || 873 || 873 || 873 || 873 || 873 || 909 ||
|| fraction with LSB headers || 56% || 57% || 58% || 60% || 62% || 63% || 64% || 66% || 67% || 68% || 69% || 70% || 73% || 73% || 76% || 77% || 78% || 79% || 80% || 83% || 98% || 99% || 99% || 99.8% ||
|| packages without LSB headers || 373 || 363|| 353 || 336 || 325 || 319 || 303 || 292 || 287 || 280 || 269 || 258 || 237 || 229 || 212 || 203 || 187 || 181 || 172 || 148 || 16 || 12 || 9 || 2 ||
|| base packages without LSB headers || 2 of 40 || || || || || 1 of 40 (1 of 12 pkgs) || || || || 0 of 38 (0 of 10 pkgs) || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 ||
|| desktop packages without LSB headers || 6 of 58 || || || || || 7 of 70 (7 of 39 pkgs) || || || || 4 of 75 (4 of 42 pkgs) || || || || || || || || || || || || || 0 || 0 ||
Line 46: Line 27:
 * Some init.d scripts provide the same service, and this is not supported by insserv. The provided service should be unique for each script. Example problems caused by this:
  * It is not possible to migrate between exim and postfix without purging the other package.
  * It is not possible to migrate between inetutils-inetd and openbsd-inetd without purging the other package.
  * It is not possible to activate insserv when obsolete scripts, which are removed from their package but not properly removed from the disk, are still present in /etc/init.d/. It might also create problems with package installation.
 * Some init.d scripts have buggy headers, making them fail to install properly in the boot sequence.
To see the boot and reboot sequence dependecy graph, use
Line 47: Line 34:
 * Some init.d scripts provide the same service, and this is not supported by insserv. The provided service should be unique for each script. Example problems caused by this:

   * It is not possible to migrate between exim and postfix without purging the other package.
   * It is not possible to migrate between inetutils-inetd and openbsd-inetd without purging the other package.
   * It is not possible to activate insserv when obsolete scripts, which are removed from their package but not properly removed from the disk, are still present in /etc/init.d/. It might also create problems with package installation.

 * Some init.d scripts have buggy headers, making them fail to install properly in the boot sequence.

To see the boot and reboot sequence dependecy graph, use
Line 63: Line 41:
The number of packages with init.d scripts was counted using {{{apt-file update && apt-file search etc/init.d|cut -d: -f1|sort -u|wc -l}}} in Debian/Sid. The number of packages missing LSB headers are fetched from [http://lintian.debian.org/reports/tags.html the lintian reports] for the [http://lintian.debian.org/reports/Tinit.d-script-missing-lsb-section.html init.d-script-missing-lsb-section] tag. The number of base and desktop packages missing headers were counted by creating chroots with debootstrap and tasksel.
Line 64: Line 43:
The number of packages with init.d scripts was counted using {{{apt-file update && apt-file search etc/init.d|cut -d: -f1|sort -u|wc -l}}} in Debian/Sid. The number of packages missing LSB headers are fetched from [http://lintian.debian.org/reports/tags.html the lintian reports] for the [http://lintian.debian.org/reports/Tinit.d-script-missing-lsb-section.html init.d-script-missing-lsb-section] tag. The number of base and desktop packages missing headers were
counted by creating chroots with debootstrap and tasksel.

To enable dependency based boot, the [http://packages.qa.debian.org/i/insserv.html insserv] package can be used.
At [http://user.skolelinux.no/~pere/mypapers/200706-bootseq/200706-bootseq.html debconf7] and [http://www.hungry.com/~pere/mypapers/200802-bootsequence/200802-bootsequence.html FOSDEM 2008] ([http://meetings-archive.debian.net/pub/debian-meetings/2008/fosdem/ogg_theora/384x288/Reordering_the_Debian_boot_sequence_for_correctness_and_speed___Petter_Reinholdtsen.ogg video]), Petter Reinholdtsen gave a talk
about the dependency based boot system. To enable it, install the insserv package and
activate it like this:
To enable dependency based boot, the [http://packages.qa.debian.org/i/insserv.html insserv] package can be used. At [http://user.skolelinux.no/~pere/mypapers/200706-bootseq/200706-bootseq.html debconf7] and [http://www.hungry.com/~pere/mypapers/200802-bootsequence/200802-bootsequence.html FOSDEM 2008] ([http://meetings-archive.debian.net/pub/debian-meetings/2008/fosdem/ogg_theora/384x288/Reordering_the_Debian_boot_sequence_for_correctness_and_speed___Petter_Reinholdtsen.ogg video]), Petter Reinholdtsen gave a talk about the dependency based boot system. To enable it, install the insserv package and activate it like this:
Line 75: Line 48:
Line 78: Line 50:
To usertag related bugs, send an email to request (at) bugs.debian.org,
with content like this:
To usertag related bugs, send an email to request (at) bugs.debian.org, with content like this:
Line 86: Line 58:
Line 88: Line 59:
Line 94: Line 64:
Line 99: Line 68:
CategoryDeveloper  . CategoryDeveloper

Dependency based boot sequence

It is possible to converting Debian to order the boot sequence using the LSB headers in the init.d scripts. This will get rid of several bugs in the current boot sequence, and make it easier to keep the sequence correct.

The feature [http://lists.debian.org/debian-devel-announce/2008/01/msg00004.html was announced on debian-devel-announce] 2008-01-17. A status update message was sent [http://lists.debian.org/debian-devel-announce/2008/03/msg00011.html 2008-03-16] and [http://lists.debian.org/debian-devel-announce/2008/11/msg00007.html 2008-11-30].

Advantages

Did you ever need to insert a init.d scripts Y before init.d scripts Z and after init.d script X, where both Z and X is started using boot sequence number 20 (as in 20X and 20Z)? Adding your script as 20Y would not cut it, because you need Z to start before X. To do this, in Debian you currently need to talk to the maintainer of packages with scripts Z and X, asking one of them (or both) to move their script into a different number. Dependency based boot sequencing make it possible for each package maintainer to specify the dependencies of its scripts, and leave the number allocation to the dependency resolver.

Example of such problems

Status

This page is created to keep track of the state of this feature, to make it easier to coordinate an effort to implement it for Debian Lenny. It is [http://lists.debian.org/debian-release/2007/06/msg00164.html proposed] as a [http://release.debian.org/lenny-goals.txt release goal] for Lenny.

2007-07-03

2007-07-22

2007-08-08

2007-09-06

2007-10-24

2007-11-14

2007-11-29

2007-12-22

2007-12-30

2008-01-06

2008-01-14

2008-01-26

2008-02-03

2008-02-08

2008-02-20

2008-02-23

2008-03-07

2008-03-09

2008-03-13

2008-03-19

2008-04-16

2008-05-01

2008-05-18

2008-11-30

packages with init.d scripts

843

843

845

849

855

852

851

857

860

863

863

864

863

863

866

866

873

873

873

873

873

873

873

909

fraction with LSB headers

56%

57%

58%

60%

62%

63%

64%

66%

67%

68%

69%

70%

73%

73%

76%

77%

78%

79%

80%

83%

98%

99%

99%

99.8%

packages without LSB headers

373

363

353

336

325

319

303

292

287

280

269

258

237

229

212

203

187

181

172

148

16

12

9

2

base packages without LSB headers

2 of 40

1 of 40 (1 of 12 pkgs)

0 of 38 (0 of 10 pkgs)

0

0

0

0

0

0

0

0

0

0

0

0

0

0

desktop packages without LSB headers

6 of 58

7 of 70 (7 of 39 pkgs)

4 of 75 (4 of 42 pkgs)

0

0

A number of [http://bugs.debian.org/cgi-bin/pkgreport.cgi?usertag=initscripts-ng-devel@lists.alioth.debian.org&dist=unstable bug reports] are submitted to request LSB headers in init.d scripts. It is useful to track [http://bugs.debian.org/cgi-bin/pkgreport.cgi?usertag=initscripts-ng-devel@lists.alioth.debian.org&dist=testing the ones open in testing] as well.

Known issues

  • Some init.d scripts provide the same service, and this is not supported by insserv. The provided service should be unique for each script. Example problems caused by this:
    • It is not possible to migrate between exim and postfix without purging the other package.
    • It is not possible to migrate between inetutils-inetd and openbsd-inetd without purging the other package.
    • It is not possible to activate insserv when obsolete scripts, which are removed from their package but not properly removed from the disk, are still present in /etc/init.d/. It might also create problems with package installation.
  • Some init.d scripts have buggy headers, making them fail to install properly in the boot sequence.

To see the boot and reboot sequence dependecy graph, use

aptitude install insserv graphviz
/usr/share/insserv/check-initd-order -g > boot.dot
/usr/share/insserv/check-initd-order -g -k > reboot.dot
dotty boot.dot
dotty reboot.dot

The number of packages with init.d scripts was counted using apt-file update && apt-file search etc/init.d|cut -d: -f1|sort -u|wc -l in Debian/Sid. The number of packages missing LSB headers are fetched from [http://lintian.debian.org/reports/tags.html the lintian reports] for the [http://lintian.debian.org/reports/Tinit.d-script-missing-lsb-section.html init.d-script-missing-lsb-section] tag. The number of base and desktop packages missing headers were counted by creating chroots with debootstrap and tasksel.

To enable dependency based boot, the [http://packages.qa.debian.org/i/insserv.html insserv] package can be used. At [http://user.skolelinux.no/~pere/mypapers/200706-bootseq/200706-bootseq.html debconf7] and [http://www.hungry.com/~pere/mypapers/200802-bootsequence/200802-bootsequence.html FOSDEM 2008] ([http://meetings-archive.debian.net/pub/debian-meetings/2008/fosdem/ogg_theora/384x288/Reordering_the_Debian_boot_sequence_for_correctness_and_speed___Petter_Reinholdtsen.ogg video]), Petter Reinholdtsen gave a talk about the dependency based boot system. To enable it, install the insserv package and activate it like this:

aptitude install insserv && dpkg-reconfigure insserv

Make sure to use insserv version 1.09.0-6 or higher.

To usertag related bugs, send an email to request (at) bugs.debian.org, with content like this:

user initscripts-ng-devel (at) lists.alioth.debian.org
usertag 361054 + incorrect-dependency
usertag 361358 + missing-dependency
thanks

Packages left to fix

Generated using dd-list $(lynx -nolist -dump http://lintian.debian.org/reports/tags/init.d-script-missing-lsb-section.html | grep binary | cut -d" " -f1 | sort)

Daniel Baumann <daniel@debian.org>
   ipmasq
Jaakko Niemi <liiwi@debian.org>
   sfs