Gestionnaire de démarrage

De The Linux Craftsman
Aller à la navigation Aller à la recherche

Introduction

Les services peuvent être démarrés via des scripts présents dans le répertoire /etc/init.d mais cela demande une intervention manuelle. Heureusement, il existe alors des répertoires /etc/rcX.d, qui contiennent les scripts permettant de démarrer / arrêter les services en fonction du runlevel de la machine.

Les scripts présents dans ces répertoires sont des liens symboliques vers les scripts présents dans /etc/init.d et faire cela manuellement est pénible, c'est là que l'utilitaire chkconfig va nous aider.

runlevel, kesako ?

Le fichier /etc/inittab

Le runlevel est le niveau de démarrage dans lequel se trouve le système. Pour information, ces runlevel sont détaillés dans le fichier /etc/inittab qui permet de définir le niveau de démarrage du système:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Dans cet exemple, le runlevel est à 3, c'est à dire multi-utilisateur sans interface graphique.

A manipuler avec précaution

Vous vous doutez bien que mettre le runlevel à 0 (halt) ou 6 (reboot) est tout sauf une bonne idée. En effet, la machine ma amorcer son démarrage, lire le fichier /etc/inittab et de suite redémarrer ou s’arrêter...

Voir le runlevel

Il suffit d'utiliser la commande du même nom

# runlevel
N 3

Configuration du niveau de démarrage des services

Pour configurer le niveau de démarrage d'un service, il existe deux possibilités:

  • On peut spécifier le ou les runlevel
chkconfig --level 3 dhcpd on
  • On peut faire confiance à l'éditeur du paquetage
chkconfig dhcpd on

Dans le deuxième cas, chkconfig va étudier le script de démarrage du service (dans cet exemple /etc/init.d/dhcpd) à la recherche des niveaux de démarrage et d'arrêt <source lang="bash">

  1. !/bin/sh
      1. BEGIN INIT INFO
  2. Provides: dhcpd
  3. Default-Start:
  4. Default-Stop:
  5. Should-Start: portreserve
  6. Required-Start: $network
  7. Required-Stop:
  8. Short-Description: Start and stop the DHCP server
  9. Description: dhcpd provides the Dynamic Host Configuration Protocol (DHCP)
  10. server.
      1. END INIT INFO
  11. The fields below are left around for legacy tools (will remove later).
  12. chkconfig: - 65 35
  13. description: dhcpd provides the Dynamic Host Configuration Protocol (DHCP) \
  14. server
  15. processname: dhcpd
  16. config: /etc/dhcp/dhcpd.conf
  17. config: /var/lib/dhcpd/dhcpd.leases
  18. pidfile: /var/run/dhcpd.pid

... </script>

On peut apercevoir dans l'entête la ligne suivante:

# chkconfig: - 65 35