Debian GNU Linux auf „dependency-based boot system“ umstellen

Seit einigen Wochen offeriert mir Debian bei jedem apt-get dist-upgrade, mein System auf ein abhängigkeitsbasiertes Bootsystem („dependency-based boot system“) umzustellen.

Störrische Pakete

Leider ist dies bisher jedesmal gescheitert, weil folgende init.d-Skripte die Umstellung verhindert haben:

'libdevmapper1.02' missing LSB tags and overrides,
'iptables' missing LSB tags and overrides,
'xfree86-common' missing LSB tags and overrides,
's3sqld.init' missing LSB tags and overrides,
'libdevmapper1.00' missing LSB tags and overrides,
'dhcp' missing LSB tags and overrides,
'raid2' missing LSB tags and overrides,
'rendezvous' missing LSB tags and overrides,

Gestern habe ich mir nun endlich die Mühe genommen, mein System zu durchforsten, aufzuräumen und auf die neue Boot-Methode umzustellen. Wie es sich herausstellte, war es doch nicht so kompliziert, wie ich es befürchtet hatte.

Generisches Vorgehen

Zuallererst ist zu überprüfen, ob das bemängelte Script tatsächlich noch vom System benötigt wird oder ob es bei einem apt-get remove <package> versehentlich zurückgelassen wurde.

Als erstes sucht man deshalb auf packages.debian.org mit der Suchfunktion unter „Search the contents of packages“ nach der entsprechenden Datei. Kann diese in keinem aktuellen Paket gefunden werden, ist es wahrscheinlich, dass es sich um ein Überbleibsel handelt. Zur Sicherheit kann man mittels dpkg --list | grep <vermutetes package> überprüfen, ob das Paket tatsächlich vor langer Zeit entfernt wurde (rc steht in diesem Fall zu Beginn der Zeile).

Wird die Datei hingegen irgendwo gefunden, muss man mittels Google herausfinden, ob und wie das init-Skript von Hand angepasst werden kann, um die geforderten „LSB tags“ und „overrides“ eingepflegt zu erhalten.

Konkretes Vorgehen

Konkret sah das Prozedere bei mir folgendermassen aus (Achtung: Sicherheitskopien sind ratsam, um notfalls nicht das gesamte System zu zerschiessen):

libdevmapper1.02 wird benötigt. Das Skript muss mit der Anleitung von Bug#361358: marked as done (libdevmapper1.02: Please add LSB formatted dependency info in init.d script) angepasst werden

libdevmapper1.00 Überrest, kann gelöscht werden (apt-get remove libdevmapper1.00), da eine neuere Version dieses Pakets auf dem System installiert ist (s. oben)

iptables Überrest, kann gelöscht werden (rm /etc/init.d/iptables) — auch wenn es der Package-Maintainer aus Rückwärtskompatibilität dort belassen möchte: „The script was dropped from the package ages ago. Unfortunately, removing it would have been problematic, so it’s just a vestige.“

xfree86-common Überrest, kann (in meinem Fall!) gelöscht werden, da dpkg --list | grep xfree meldet: rc xfree86-common 6.9.0.dfsg.1-6

s3sqld.init Überrest einer Testinstallation des unbrauchbaren Seco Backups. Kann gelöscht werden.

dhcp Es handelt sich hierbei um ein hoffnungslos veraltetes Paket, das aus Sicherheitsgründen umgehend ersetzt werden sollte: apt-get install dhcp3-server Die DHCP-Konfiguration in /etc/dhcp3/dhcpd.conf muss dabei glücklicherweise nicht angepasst werden.

raid2 Überrest (?), verweist auf nicht mehr vorhandene raidstart etc. und kann deshalb gelöscht werden.

rendezvous Überrest, das Paket wird auf dem Debian-Server nicht mehr gefunden. Das Paket kann entfernt werden: apt-get remove rendezvous. Je nachdem muss man vorher noch einen in der Zwischenzeit gelöschten Benutzer daapd erstellen, der dann von der Deinstallationsroutine gleich wieder entfernt wird.

initrd-tools.sh Bei der Suche nach dieser Datei im Debian Package-Archiv wurde kein Paket zurückgeliefert, welches dieses Script auf dem System installieren würde. Ich habe diese Datei deshalb kurzerhand gelöscht.

Endlich den Schalter umlegen …

Schlussendlich kann man die Boot-Methode nun umstellen:

# dpkg-reconfigure sysv-rc
info: Checking if it is safe to convert to dependency based boot.
info: Reordering boot system, log to /var/lib/insserv/run-20100727T1330.log
success: Enabled dependency based boot system.