Par défaut les services des systèmes Linux démarrent les uns après les autres. Un moyen de gagner du temps lors du démarrage est de lancer les différent services en parallèle ce qui évite de devoir attendre qu'un service ait fini de démarrer pour en lancer d'autre.

Pour cela il faut modifier l'option CONCURRENCY dans le fichier /etc/init.d/rc. Par défaut elle est désactivée:

39  [...]
40  CONCURRENCY=none
41  [...]

Cette option peut prendre trois valeurs différentes:

  • none: désactivation de l'option de démarrage concurrentiel
  • startpar: les services sont lancés en parallèle mais leur sortie reste en série.
  • shell: les services sont lancés en parallèle dans des shell différents ainsi les sorties sont aussi parallélisées.

Plus la parallélisation augmente plus le temps de démarrage est raccourci.

Cependant certains services doivent être lancés après d'autre. Pour cela il faut réordonnancer les services pour être sur de ne pas démarrer un service tant que les pré-requis ne sont pas remplis. Par exemple le service de mise à jour de leur sur les serveur distant doit être lancé qu'une fois la connexion réseau établie.

Le paquet insserv permet de calculer les dépendances des différents scripts de démarrage, et ainsi de créer la hiérarchie nécessaire. Une fois installé il faut lancé la commande suivante en root pour optimiser les scripts init:

# update-bootsystem-insserv

Lors d'une mise à jour du système des messages d'avertissement similaire au suivant peuvent apparaitre:

insserv: warning: current start runlevel(s) (0 6) of script `umountroot' overwrites defaults (empty).

Cela veut simplement dire que l'ordre de lancement d'un ou plusieurs scripts init ont été modifiés lors de l'installation d'un ou plusieurs paquets. Il suffit de relancer la commande update-bootsystem-insserv pour refaire le calcul de hiérarchie t faire disparaitre ces messages d'avertissement.