processus de démarrage d une Redhat Entreprise

Creation: 12 juillet 2011
Mise à jour: 10 avril 2012
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2011 Jean-Louis BICQUELET-SALAÜN

Séquence de démarrage de le redhat

La phase de démarrage d'un serveur linux est souvent méconnue. Il est pourtant important de bien conneître celle-ci, si on désire bien connaître son système.

Initialisation du bios

Le BIOS (Basic Input/Output System) est l'interface entre le matériel et le logiciel à un très bas niveau.

Le BIOS effectue tout d'abord un auto-test de l'allumage (POST). Il recherche les périphériques et en particulier celui qui est utilisé pour démarrer.Les inforamtions de configuration du matériel sont stockés dans une petite zone (de l'ordre de 64 octets) appelé CMOS (Complementary Metal Oxide Semiconductor) alimenté par une batterie se trouvant sur la carte mère qui lui permet de conserver la configuration lorsque l'ordinateur est éteint.

A la fin du POST, le périphériquede démarrage est sélectionné parmi la liste des périphériques de démarrage détectés. L'ordinateur va prendre dans l'ordre la liste qui a été définie. Le plus souvent, pour modifier cette liste, il faut taper au boot sur la touche F10 (parfois F2 ...).

Le BIOS lit alors et exécute le premier secteur physique du média de démarrage ou MBR (Master Boot Record). Sur un disuqe dur il s'agit des 512 permiers octets.

chargeur de démarrage

Le BIOS charge le chargeur de programme initial (IPL Initial Program Loader) à partir du MBR.

Sur redhat c'est le premier étage du chargeur de démarrage. La seconde phase va chercher dans /boot où est stockéle noyau pour amorcer le système. Cette seconde phase fournit à l'utilisateur un moyen de charger un autre noyau ou de démarrer un autre système d'exploitation (windows par exemple).

Le chargeur de démarrage de redhat entreprise est GRUB (GRand Unified Bootloader). GRUB supporte de nombreuses fonctionnalités comme la protection par mot de passe,un mode d'édition de menus, une interface en ligne de commandes.

Initialisation du noyau

Le noyau au démarrage :

  • détecte les périphériques
  • initialise les pilotes de périphériques
  • monte le système de fichier racine / en lecture seule
  • lance le processus initial init

Le démarrage se passant assez rapidement, il est possible d'examiner à postériori le fichier /var/log/dmesg pour savoir comment cela s'est passé.

démarrage d'init jusqu'au run level désiré

Init est le père de tous les processus. C'est pourquoi son numéro de pid est 1.

init va lire sa configuration dans le fichier /etc/inittab .

Il va en déduire

  • le niveau d'éxécution initial ou runlevel (qui se trouve sur la ligne commencant pas init:)
  • lancer les scripts d'initialisation du système
  • lancer les scripts spécifiques à chaque runlevel
  • reconnaitree certaines séquences de touches
  • définir les défaillances secteur et lancer les scripts de restauration UPS
  • lancer les getty sur les consoles virtuelles
  • initialiser X si son runlevel est 5

Si X11 est lancé, le fichier /etc/sysconfig/desktop détermine le gestionnaire d'affichage (valeur GNOME ou KDE). Ce fichier est lu lorsque init execute /etc/X1/prefdm.

Si /etc/inittab n'existe pas ou est corrompu, il faut partir en single user (Single,S,s) ou d'urgence (emergency).

niveau d'execution

init peut définir un runlevel parmi les niveau 0 à 6, S et emergency. Le niveau est sélectionné dans le fichier /etc/inittab au démarrage, ou choisi par GRUB ou lancer à partir de la ligne de commande en tapant init x.

Dans le cas de /etc/inittab on va trouver un fichier:

Les runlevel définis dans linux sont

0 arret du système (à ne pas mettre dans /etc/inittab )
1,S mode en utilisaeur simple (single user) pour maintenance
2 multiples utilisateurs, sans réseau NFS
3 mode multiples utilisateurs complet (avec le réseau)
4 configurable par l'utilisateur mais contient tout ce qu'il y a au runlevel 3
5 X11 (le réseau est compris)
6 redémarrage (à ne pas mettre dans /etc/inittab )

Pour afficher les niveaux d'exécution courant ainsi que le précédent il faut taper:

/sbin/runlevel

Processus démon

Un processus demon est un programme qui s'execute en arrière plan pour fournir des services systèmes. Il attend que des requêtesse produisent. Lorsqu'il recoit une requête, il créé une copie de lui-même pour traiter sa tâche. Un serveur web apache, un serveur ftp, une file d'attente d'impression sont des exemples de démons.

Certains démons sont autonomes et sont lancés par init comme mingetty et gdm ou par un script de démarrage sous /etc/rc/d .

Certains démons sont transitoires et ne sont lancés que lorsqu'ils deviennent necessaires. Le démon xinetd est chargés de les controller. Son fichier de configurattion est /etc/xinetd.conf .