Gestionnaire de démarrage

De The Linux Craftsman
Aller à la navigation Aller à la recherche
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

#!/bin/sh
#
### BEGIN INIT INFO
# Provides: dhcpd
# Default-Start:
# Default-Stop:
# Should-Start: portreserve
# Required-Start: $network
# Required-Stop:
# Short-Description: Start and stop the DHCP server
# Description: dhcpd provides the Dynamic Host Configuration Protocol (DHCP)
#              server.
### END INIT INFO
#
# The fields below are left around for legacy tools (will remove later).
#
# chkconfig: - 65 35
# description: dhcpd provides the Dynamic Host Configuration Protocol (DHCP) \
#              server
# processname: dhcpd
# config: /etc/dhcp/dhcpd.conf
# config: /var/lib/dhcpd/dhcpd.leases
# pidfile: /var/run/dhcpd.pid

...

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

# chkconfig: - 65 35

qui précise que dhcpd est tué en 35éme position et démarré en 65éme position:

# find /etc/rc* -name *dhcpd*
/etc/rc.d/rc0.d/K35dhcpd6
/etc/rc.d/rc0.d/K35dhcpd
/etc/rc.d/rc2.d/S65dhcpd
/etc/rc.d/rc2.d/K35dhcpd6
/etc/rc.d/rc3.d/S65dhcpd
/etc/rc.d/rc3.d/K35dhcpd6
/etc/rc.d/rc1.d/K35dhcpd6
/etc/rc.d/rc1.d/K35dhcpd
/etc/rc.d/rc6.d/K35dhcpd6
/etc/rc.d/rc6.d/K35dhcpd
/etc/rc.d/rc4.d/S65dhcpd
/etc/rc.d/rc4.d/K35dhcpd6
/etc/rc.d/rc5.d/S65dhcpd
/etc/rc.d/rc5.d/K35dhcpd6

Vérification

Pour vérifier le niveau de démarrage, il suffit de spécifier le nom du service

# chkconfig --list dhcpd
dhcpd           0:arrêt 1:arrêt 2:marche        3:marche        4:marche        5:marche        6:arrêt