Démarrage du système

Note : une partie de ce chapitre est extraite du cours de Jean Gourdin (Université de Créteil) sous licence GnuFDL

Voici dans ses grandes lignes les phases du démarrage du système jusqu’à une session de travail :

  • d’initialisation du BIOS de la carte mère
  • Habituellement le BIOS charge en mémoire le MBR (Master Boot Record, 1er secteur de la 1ère piste du 1er disque dur, 512 octets).
  • exécution du chargeur (LILO) (si plusieurs systèmes bootable sont présents, LILO affiche un menu pour que l’on puisse choisir
  • chargement du noyau en mémoire et décompression “à la volée”
    • réservation mémoire,
    • prise en compte de la zone d’échange (swap),
    • détection du matériel et chargement des pilotes des périphériques,
    • montage du système de fichiers
  • lancement du 1er processus /sbin/init

Le process init

init est le premier process lancé, il est le père de tous les autres process.

init se charge des opérations suivantes :

– monter le fichier racine (/)
- monter les autres systèmes de fichiers tel que spécifié dans /etc/
fstab
- activer le swap
- initialiser les services en exécutant les scripts de configuration
- activer l’écran de login sur les consoles

Les niveaux de fonctionnement

C’est le script /etc/inittab qui définit le mode dans lequel sera démarré le système. Il s’agit des runlevels ou niveaux d’exécution.
Ils peuvent être spécifiés différemment d’une distribution à une autre. On notera cependant que les runlevels 0, 1 et 6 sont codés en dur dans init ou dans shutdown et ne peuvent être changés.
Pour une Debain ou dérivée on a par exemple :

  • 0 : provoque un arrêt (shutdown) de la machine
  • 1 : pour rentrer en mode mono-utilisateur, réservé à root
  • 2, 3 ,4 ne se distinguent pas sous Debian : mode multi-utilisateurs complet
  • 5 : démarrage du serveur graphique X11 en plus
  • 6 : redémarrage de la machine (la commande init 6 ou reboot lance le niveau 6).

Exemple de fichier /etc/initab

# runlevel par defaut
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# powerfail
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

Examen de /etc/inittab

d:5:initdefault
définit le niveau de fonctionnement par défaut au démarrage (Default runlevel), ici le niveau 5
Donc pour changer de niveau par défaut, il suffit tout simplement de changer ce numéro !

/etc/rc.d/rc <n>
Avec n allant de 0 a 6
démarre les services adéquats lorsque le runlevel change.
- Exécution du script etc/init.d/rc avec le paramètre $runlevel=<n>

1:2345:respawn:/sbin/mingetty tty<n>

mingetty est une version minimale de getty.
Il crée les 6 consoles virtuelles.

  1. Ouvrir les lignes tty et les configurer.
  2. Afficher lâinvite de connexion, et saisir le nom dâutilisateur.
  3. Lancer un processus de connexion (login) pou

Si le “runlevel” était 5, inittab se terminerait par l’exécution de xdm qui lance le serveur graphique X et le login graphique.

Le système (System V) de démarrage des services

Principe

Chaque service système ou réseau est controlé par un script présent dans le répertoire /etc/init.d/. Lorsqu’on installe un nouveau serveur (par exemple apt-get install apache), il y aura création :
- d’un nouveau script /etc/init.d/apache permettant de démarrer, stopper, reconfigurer le serveur à tout moment par la commande :
/etc/init.d/apache start | stop | reload
- d’un lien symbolique /etc/rc2.d/S91apache vers /etc/init.d/apache
(un tel lien est créé par : ln -s /etc/init.d/apache /etc/rc2.d/S91apache)
- l’indication S91 permettra de provoquer le lancement du serveur web par l’exécution de /etc/init.d/apache start en respectant un numéro d’ordre (ici 91)
- de meme pour les autres niveaux d’exécution, on placera soit un lien Sxxapache, soit un lien Kxxapache (pour stopper) dans les répertoires associés /etc/rcx.d (x de 0à 7)

Lancement automatique au démarrage
La commande update-rc permet d’éviter de manipuler directement ces liens symboliques.
- pour supprimer les liens symboliques de démarrage :
update-rc.d -f apache remove
- pour exécuter apache au niveau 91 :
update-rc.d apache defaults 91
- commande générale
update-rc.d service start 75 2 . stop 40 6 .

Gestion manuelle des services
En cours de session de travail on peut exécuter directement les scripts de controle d’un service pour le démarrer, l’arreter ou modifier sa configuration

- lancer ssh : /etc/init.d/ssh start
- arreter apache : /etc/init.d/apache stop
- reconfigurer apache : /etc/init.d/apache reload

Les services gérés par inetd
Certains services client/serveur réseau peuvent ne pas être lancés de manière autonomes comme vu précédemment. Dans ce cas la ils utilisent un ‘super seveur’ le démon inetd.

Pour vérifier si ce super serveur tourne :

$> ps -ef|grep inetd

Le cas échéant , pour connaitre et éventuellement modifier leur paramétrage on se référera aux fichiers

/etc/inetd.conf
/etc/xinetd.conf

Exemple de vérification

$> ps -ef|grep inetd
root      7746  2596  0 12:45 pts/1    00:00:00 grep inetd
$> # j’ai juste ma commande ‘grep’ dans les process en cours
$> # le super serveur inetd n’est donc pas lancé
$> # vérifions si le serveur ssh tourne ?
$> ps -ef|grep sshd
root      1985     1  0 11:03 ?        00:00:00 /usr/sbin/sshd
root      7750  2596  0 12:47 pts/1    00:00:00 grep sshd
$> # on voit que init a lancé un process fils de PID 1985 : sshd

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.