Processus de démarrage, Init et Shutdown

Cette section contient des informations sur ce qu'il se passe lorsque vous démarrez ou arrêtez votre système Red Hat Linux.

Coulisses du processus de démarrage i386

Lorsqu'un ordinateur est démarré, le processeur recherche le BIOS (Basic Input/Output System, système d'entrée/sortie de base) à la fin de la mémoire du système et l'exécute. Le programme BIOS est écrit dans la mémoire permanente en lecture seule, et est toujours prêt à opérer. Le BIOS fournit l'interface du niveau le plus bas aux périphériques et contrôle la première étape du processus de démarrage.

Le BIOS teste le système, recherche et contrôle les périphériques, puis recherche un lecteur à partir duquel démarrer. Habituellement, il contrôle le lecteur de disquettes (ou le lecteur de CD-ROM sur bon nombre de systèmes plus récents), s'il y en a un, puis examine le disque dur. Sur le disque dur, le BIOS recherche un bloc de démarrage maître (MBR), en commençant pas le premier secteur du premier disque, puis lance l'exécution du MBR.

Le MBR recherche la première partition active et lit l'enregistrement d'amorçage de la partition. L'Enregistrement d'amorçage contient des instructions sur la manière de charger le chargeur de démarrage LILO (LInux LOader). Le MBR charge ensuite LILO et prend le relais du processus.

LILO lit le fichier /etc/lilo.conf qui précise quel(s) système(s) d'exploitation configurer ou quel noyau lancer, et où s'installer lui-même (par exemple, /dev/hda pour votre disque dur). LILO affiche une invite LILO: à l'écran et attend pendant un laps de temps prédéfini (également défini dans le fichier lilo.conf) une entrée de l'utilisateur. Si lilo.conf est défini pour offrir à LILO un choix de systèmes d'exploitation, à ce moment, vous pourriez entrer l'étiquette du système d'exploitation que vous voulez démarrer.

Après avoir attendu un certain laps de temps (habituellement cinq secondes), LILO entreprend de démarrer le premier système d'exploitation figurant dans le fichier lilo.conf.

Si LILO démarre Linux, il commence par démarrer le noyau, qui est un fichier vmlinuz (assorti d'un numéro de version, par exemple vmlinuz-2.2.15-xx) situé dans le répertoire /boot. Ensuite, le noyau prend le relais.

Le noyau recherche un programme init à divers endroits (/sbin est un emplacement habituel) et exécute le premier trouvé. Le programme Init prend le relais.

Le programme Init démarre tous les processus constituant le système Linux (en en devenant le parent ou grand-parent). Il commence par exécuter /etc/rc.d/rc.sysinit, qui définit votre chemin d'accès, démarre la prise en charge de l'espace swap, vérifie les systèmes de fichiers, etc. Fondamentalement, rc.sysinit s'occupe de tout ce dont votre système a besoin pour s'initialiser. Par exemple, sur un système en réseau, rc.sysinit utilise les informations figurant dans les fichiers /etc/sysconfig/network et /etc/sysconfig/clock pour initialiser les processus réseau et l'horloge. Il peut également exécuter rc.serial si vous avez des processus de port série nécessitant une initialisation.

Le programme Init examine et implémente le fichier /etc/inittab. Le fichier /etc/inittab décrit la manière dont le système doit être configuré à chaque niveau d'exécution et définit le niveau d'exécution par défaut. Ce fichier indique que /etc/rc.d/rc et /sbin/update doivent être exécutés chaque fois qu'un niveau d'exécution commence.

Le fichier /sbin/update évacue vers le disque les tampons utilisés.

Chaque fois que le niveau d'exécution change, /etc/rc.d/rc démarre et arrête des services. Tout d'abord, rc définit la bibliothèque de fonctions source du système (généralement /etc/rc.d/init.d/functions), qui précise comment lancer/arrêter un programme et comment trouver le PID d'un programme. Le fichier rc recherche ensuite les niveaux d'exécution actuel et précédent, et indique à linuxconf le niveau d'exécution approprié.

Le fichier rc lance tous les processus en tâche de fond nécessaires au fonctionnement du système, puis recherche un répertoire rc pour ce niveau d'exécution (/etc/rc.d/rc<x>.d, où <x> est une valeur de 0 à 6). rc arrête tous les scripts d'arrêt (le nom de ces fichiers commence par un K). Ensuite, il initialise tous les scripts de démarrage (leurs noms de fichier commencent par S) dans le répertoire de niveau d'exécution approprié (de manière à ce que tous les services et applications soient démarrés correctement).

Par exemple, pour le niveau d'exécution 5, rc recherche dans le répertoire /etc/rc.d/rc5.d et découvre qu'il doit arrêter rusersd, rwalld, rwhod, mcserv, mars-nwe, apmd et pcmcia. Ensuite, rc effectue une recherche dans le même répertoire et trouve des scripts de lancement pour kmod, network, nfsfs, randomc, syslog, atd, crond, portmap, snmpd, inet, xntpd, lpd, dhcpd, ypbind, autofs, keytable, sendmail, gpm et sound. Et la vie continue.

Le fichier /etc/inittab lance un processus getty pour chaque console virtuelle (invites de connexion) et pour chaque niveau d'exécution (les niveaux d'exécution 2-5 obtiennent six consoles virtuelles ; le niveau d'exécution 1, qui est un mode simple utilisateur, n'en obtient qu'une ; les niveaux d'exécution 0 et 6 n'obtiennent pas de consoles virtuelles).

Dans le niveau d'exécution 5, /etc/inittab exécute également un script nommé /etc/X11/prefdm. Le script prefdm exécute votre gestionnaire d'écran X Window préféré ( gdm si vous utilisez GNOME, kdm si vous utilisez KDE ou xdm si vous utilisez AnotherLevel) en fonction du contenu du répertoire /etc/sysconfig/desktop.

De même, /etc/inittab indique comment le système doit interpréter la combinaison de touches Ctrl-Alt-Suppr. (par exemple, en émettant la commande /sbin/shutdown -t3 -r now). Enfin, le fichier /etc/inittab indique ce que le système doit faire en cas de panne d'alimentation.

A ce stade, le système devrait afficher une invite de connexion. Tout cela n'a pris que quelques secondes.

Nous allons à présent présenter les informations contenues dans les fichiers figurant dans /etc/sysconfig.

Informations sur Sysconfig

Les informations suivantes décrivent les divers fichiers figurant dans /etc/sysconfig, leur fonction et leur contenu.

Fichiers figurant dans /etc/sysconfig

Le fichiers suivants se trouvent normalement dans /etc/sysconfig:

  • /etc/sysconfig/apmd

  • /etc/sysconfig/clock

  • /etc/sysconfig/harddisks

  • /etc/sysconfig/hwconf (ceci devrait être ignoré pour l'édition)

  • /etc/sysconfig/init

  • /etc/sysconfig/keyboard

  • /etc/sysconfig/mouse

  • /etc/sysconfig/network

  • /etc/sysconfig/pcmcia

  • /etc/sysconfig/sendmail

  • /etc/sysconfig/soundcard (qui est écrit par sndconfig)

Examinons-les.

/etc/sysconfig/apmd

Le fichier /etc/sysconfig/apmd est utilisé par apmd comme configuration indiquant ce qu'il convient de lancer/arrêter/modifier en cas de suspension ou de reprise. Il est configuré pour activer ou désactiver apmd au cours de démarrage, selon que votre matériel prend ou non en charge la technologie apm (Advanced Power Management, gestion de puissance perfectionnée), ou que vous décidez de ne pas l'utiliser.

/etc/sysconfig/clock

Le fichier /etc/sysconfig/clock contrôle l'interprétation des valeurs lues sur l'Horloge système. Les versions précédentes de Red Hat Linux utilisaient les valeurs suivantes (qui sont désapprouvées) :

  • CLOCKMODE=mode, où mode est l'une des valeurs suivantes :

    • GMT — Indique que l'horloge est réglée sur UTC.

    • ARC — Sur station Alpha, indique uniquement que le décalage de 42 ans de la console ARC est activé.

Actuellement, les valeurs correctes sont :

  • UTC=boolean, où boolean est ce qui suit :

    • true — Indique que l'horloge est réglée sur UTC. Toute autre valeur indique qu'elle est réglée sur l'heure locale.

  • ARC=boolean, où boolean est ce qui suit :

    • true — Indique que le décalage de 42 ans de la console ARC est activé (uniquement pour les systèmes de type Alpha). Toute autre valeur indique que l'époque UNIX normale est supposée.

  • ZONE="nom_de_fichier" — Indique le fichier de fuseau horaire sous /usr/share/zoneinfo dont /etc/localtime est une copie, par exemple :

    ZONE="Amerique/New York"

/etc/sysconfig/desktop

Le fichier /etc/sysconfig/desktop spécifie le gestionnaire de bureau à exécuter.

/etc/sysconfig/harddisks

Le fichier /etc/sysconfig/harddisks permet de régler le(s) disque(s) dur(s).

Il peut contenir ce qui suit :

  • USE_DMA=1, où la valeur 1 active DMA. Toutefois, avec certaines combinaisons circuits/disque dur, cette configuration pourrait entraîner une corruption de données.

  • Multiple_IO=16, où la valeur 16 autorise plusieurs secteurs par interruption d'entrée/sortie. Lorsqu'elle est activée, cette fonction réduit le temps de gestion du système d'exploitation de 30 à 50 %. Utilisez-la avec prudence.

  • EIDE_32BIT=3, active le support E/S (E)IDE 32 bits pour une carte d'interface.

  • LOOKAHEAD=1, active l'anticipation en lecture du lecteur.

  • EXTRA_PARAMS=, où des paramètres supplémentaires peuvent être ajoutés.

/etc/sysconfig/hwconf

Le fichier /etc/sysconfig/hwconf affiche la liste de tout le matériel détecté par kudzu sur le système, de même que les informations sur les pilotes utilisés, l'ID du fabricant et l'ID du périphérique. Il n'est pas destiné à être modifié. Si vous le modifiez, certains périphériques pourraient soudain apparaître ajoutés ou supprimés.

/etc/sysconfig/init

Le fichier /etc/sysconfig/init contrôle l'aspect du système durant la séquence d'amorçage.

Les valeurs suivantes peuvent être utilisées :

  • BOOTUP=<mode d'amorçage>, où <mode d'amorçage> est l'une des options suivantes :

    • BOOTUP=color signifie un nouvel affichage au démarrage (à partir de Red Hat Linux 6.0).

    • BOOTUP=verbose signifie un affichage dans l'ancien style.

    • Toute autre chose signifie un nouvel affichage, mais sans mise en forme ANSI.

  • LOGLEVEL=<un chiffre>, où <un chiffre> définit le niveau de connexion initial de la console pour le noyau. La valeur par défaut est 7 ; 8 signifie tout (y compris le débogage) ; 1 signifie rien sauf les panics du noyau. syslogd écrasera ceci au démarrage.

  • RES_COL=<un nombre>, où <un nombre> désigne une colonne de l'écran à laquelle commencer les étiquettes d'état. La valeur par défaut est 60.

  • MOVE_TO_COL=<une commande>, où <une commande> déplace le curseur vers $RES_COL. Indique, par défaut, une sortie de séquences ANSI par echo -e.

  • SETCOLOR_SUCCESS=<une commande>, où <une commande> définit une couleur indiquant la réussite. Indique, par défaut, une sortie de séquences ANSI par écho -e, définissant la couleur sur vert.

  • SETCOLOR_FAILURE=<une commande>, où <une commande> définit une couleur indiquant l'échec. Indique, par défaut, une sortie de séquences ANSI par écho -e, définissant la couleur sur rouge.

  • SETCOLOR_WARNING=<une commande>, où <une commande> définit une couleur indiquant un avertissement. Indique, par défaut, une sortie de séquences ANSI par écho -e, définissant la couleur sur jaune.

  • SETCOLOR_NORMAL=<une commande>, où <une commande> définit la couleur sur "normal". Indique, par défaut, une sortie de séquences ANSI par echo -e.

  • PROMPT=une réponse, où une réponse est l'une des options suivantes :

    • yes — Active le contrôle de clé pour le mode interactif.

    • no — Désactive le contrôle de clé pour le mode interactif.

/etc/sysconfig/i18n

Le fichier /etc/sysconfig/i18n définit la langue par défaut, etc.

/etc/sysconfig/keyboard

Le fichier /etc/sysconfig/keyboard contrôle le comportement du clavier. Les valeurs suivantes peuvent être utilisées :

  • KEYTABLE=file, où file est le nom d'un fichier de clavier. Par exemple : KEYTABLE="/usr/lib/kbd/keytables/us.map"

  • KEYBOARDTYPE=sun|pc, uniquement utilisé sur les machines SPARC. sun signifie qu'un clavier Sun est connecté à /dev/kbd, pc signifie qu'un clavier PS/2 est connecté à un port PS/2.

/etc/sysconfig/mouse

Le fichier /etc/sysconfig/mouse est utilisé pour fournir des informations sur la souris disponible. Les valeurs suivantes peuvent être utilisées :

  • MOUSETYPE=type, où type et l'une des valeurs suivantes :

    • ** microsoft — Souris Microsoft.

    • mouseman — Souris MouseMan.

    • mousesystems — Souris Mouse Systems.

    • ps/2 — Souris PS/2.

    • msbm — Souris bus Microsoft.

    • logibm — Souris bus Logitech.

    • atibm — Souris bus ATI.

    • logitech — Souris Logitech.

    • mmseries — Autre souris MouseMan.

    • mmhittab — Souris mmhittab.

  • XEMU3=emulation, où emulation est l'une des valeurs suivantes :

    • yes — Emulation du troisième bouton de la souris.

    • no — La souris dispose déjà de trois boutons.

En outre, /dev/mouse est un lien symbolique pointant vers le périphérique de souris réel.

/etc/sysconfig/network

Le fichier /etc/sysconfig/network permet de spécifier des informations sur la configuration de réseau souhaitée. Les valeurs suivantes peuvent être utilisées :

  • NETWORKING=answer, où answer est l'une des valeurs suivantes :

    • yes — La connexion au réseau doit être configurée.

    • no — La connexion au réseau ne doit pas être configurée.

  • HOSTNAME=hostname, où hostname doit être le FQDN (Fully Qualified Domain Name), mais peut être le nom de domaine de votre choix.

    NoteRemarque
     

    Pour assurer la compatibilité avec des logiciels plus anciens que certaines personnes risqueraient d'installer (tels que trn), le fichier /etc/HOSTNAME doit contenir la même valeur qu'ici.

  • GATEWAY=gw-ip, où gw-ip est l'adresse IP de la passerelle du réseau.

  • GATEWAYDEV=gw-dev, où gw-dev est le périphérique de passerelle (par exemple, eth0).

  • NISDOMAIN=dom-name, où dom-name est le nom de domaine NIS.

/etc/sysconfig/pcmcia

Le fichier /etc/sysconfig/pcmcia est utilisé pour spécifier des informations de configuration de la carte PCMCIA. Les valeurs suivantes peuvent être utilisées :

  • PCMCIA=answer, où answer est l'une des valeurs suivantes :

    • yes — Le support PCMCIA doit être activé.

    • no — Le support PCMCIA ne doit pas être activé.

  • PCIC=pcic-type, où pcic-type est l'une des valeurs suivantes :

    • i82365 — L'ordinateur à un circuit de socket PCMCIA du type i82365.

    • tcic — L'ordinateur à un circuit de socket PCMCIA du type tcic.

  • PCIC_OPTS=option, où option correspond aux paramètres de synchronisation du pilote de support (i82365 ou tcic).

  • CORE_OPTS=option, où option est la liste d'options pcmcia_core.

  • CARDMGR_OPTS=option, où option est la liste d'options pour PCMCIA cardmgr (telle que -q, mode silencieux ; -m, recherche des modules de noyau chargeables dans le répertoire spécifié ; etc. ; lire la page de manuel cardmgr pour plus d'informations).

/etc/sysconfig/sendmail

Le fichier /etc/sysconfig/sendmail permet l'envoi de messages à un ou plusieurs destinataires, en routant le message sur les réseaux nécessaires. Le fichier définit les valeurs par défaut pour l'exécution du programme sendmail. Ses valeurs par défaut font qu'il s'exécute comme démon en tâche de fond et qu'il contrôle sa file d'attente une fois par heure si quelque chose a été sauvegardé.

Les valeurs suivantes peuvent être utilisées :

  • DAEMON=answer, où answer est l'une des valeurs suivantes :

    • yesSendmail doit être configuré pour contrôler le port 25 afin de détecter le courrier entrant. yes implique -bd.

    • noSendmail ne doit pas être configuré pour contrôler le port 25 afin de détecter le courrier entrant.

  • QUEUE=1h qui est donné à sendmail comme -q$QUEUE. L'option -q n'est pas donnée à sendmail si /etc/sysconfig/sendmail existe et si QUEUE est vide ou non défini.

/etc/sysconfig/soundcard

Le fichier /etc/sysconfig/soundcard est généré par sndconfig et ne doit pas être modifié. Son seul usage est de déterminer l'entrée de carte du menu à afficher par défaut lors de la prochaine exécution de sndconfig.

Il peut contenir ce qui suit :

  • CARDTYPE=<une carte>, où <une carte> est vue, comme CARDTYPE=SB16.

Fichiers dans /etc/sysconfig/network-scripts/

Les fichiers suivants se trouvent normalement dans /etc/sysconfig/network-scripts:

  • /etc/sysconfig/network-scripts/ifup

  • /etc/sysconfig/network-scripts/ifdown

  • /etc/sysconfig/network-scripts/network-functions

  • /etc/sysconfig/network-scripts/ifcfg-<interface-name>

  • /etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>

  • /etc/sysconfig/network-scripts/chat-<interface-name>

  • /etc/sysconfig/network-scripts/dip-<interface-name>

  • /etc/sysconfig/network-scripts/ifup-post

Examinons-les.

/etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdown

Il s'agit de liens symboliques, respectivement vers /sbin/ifup et /sbin/ifdown. Il s'agit des deux seuls scripts de ce répertoire qui doivent être appelés directement ; ces deux scripts appellent tous les autres en fonction des besoins. Ces liens symboliques sont ici uniquement à titre d'héritage — ils seront probablement supprimés dans les prochaines versions, de sorte qu'il ne faudrait utiliser que /sbin/ifup et /sbin/ifdown.

Ces scripts prennent normalement un argument : le nom du périphérique (par exemple "eth0 "). Ils sont appelés avec un second argument de "boot" durant la séquence d'amorçage, de sorte que les périphériques qui ne sont pas destinés à être appelés à l'amorçage (ONBOOT=no, [voir ci-dessous]) peuvent être ignorés.

/etc/sysconfig/network-scripts/network-functions

Ce n'est pas réellement un fichier public. Il contient des fonctions que les scripts utilisent pour appeler et renvoyer des interfaces. Il contient, en particulier, l'essentiel du code pour la prise en charge des configurations d'interface alternatives et la notification de modification d'interface par le biais de netreport.

/etc/sysconfig/network-scripts/ifcfg-<nom_interface>, /etc/sysconfig/network-scripts/ifcfg-<nom_interface>:<nom_clone>

Le premier fichier définit une interface, tandis que le second contient uniquement les parties de la définition qui diffèrent dans une interface "alias" (ou alternative). Par exemple, les numéros de réseau peuvent être différents et tout le reste identique, de sorte que seuls les numéros de réseau figureraient dans le fichier clone, tandis que toutes les informations de périphérique figureraient dans le fichier ifcfg de base.

Les éléments pouvant être définis dans un fichier ifcfg dépendent du type d'interface.

Les valeurs suivantes sont communes :

  • DEVICE=name, où name est le nom du périphérique physique (à l'exception des périphériques PPP attribués de façon dynamique là où est le "nom logique").

  • IPADDR=addr, où addr est l'adresse IP.

  • NETMASK=mask, où mask est la valeur du masque réseau.

  • NETWORK=addr, où addr est l'adresse de réseau.

  • BROADCAST=addr, où addr est l'adresse de diffusion.

  • GATEWAY=addr, où addr est l'adresse de passerelle.

  • ONBOOT=answer, où answer est l'une des valeurs suivantes :

    • yes — Ce périphérique doit être activé au démarrage.

    • no — Ce périphérique ne doit pas être activé au démarrage.

  • USERCTL=answer, où answer est l'une des valeurs suivantes :

    • yes — Les utilisateurs non root sont autorisés à contrôler ce périphérique.

    • no — Les utilisateurs non root ne sont pas autorisés à contrôler ce périphérique.

  • BOOTPROTO=proto, où proto est l'une des valeurs suivantes :

    • none — Aucun protocole de démarrage ne doit être utilisé.

    • bootp — Le protocole BOOTP doit être utilisé.

    • dhcp — Le protocole DHCP doit être utilisé.

Les valeurs suivantes sont communes à tous les fichiers SLIP :

  • PERSIST=answer, où answer est l'une des valeurs suivantes :

    • yes — Ce périphérique doit rester actif en permanence, même s'il est désactivé après un raccrochage du modem.

    • no — Ce périphérique ne doit pas rester actif en permanence.

  • MODEMPORT=port, où port est le nom de périphérique du port du modem (par exemple, "/dev/modem").

  • LINESPEED=baud, où baud est la vitesse de ligne du modem (par exemple, "115200").

  • DEFABORT=answer, où answer est l'une des valeurs suivantes :

    • yes — Insérer des chaînes d'abandon par défaut lors de la création/édition du script pour cette interface.

    • no — Ne pas insérer de chaînes d'abandon par défaut lors de la création/édition du script pour cette interface.

/etc/sysconfig/network-scripts/chat-<interface-name>

Ce fichier est un "chat script" pour les connexions SLIP ; il a pour fonction d'établir la connexion. Pour les périphériques SLIP, un script DIP est écrit à partir du "chat script".

/etc/sysconfig/network-scripts/dip-<interface-name>

Ce script en écriture seule est créé à partir du "chat script" par netcfg. Ne modifiez pas ce fichier. A l'avenir, ce fichier pourrait disparaître et être plutôt créé à la volée à partir du "chat script".

/etc/sysconfig/network-scripts/ifup-post

Ce fichier est appelé lorsqu'un périphérique réseau (sauf un périphérique SLIP) intervient. Il appelle /etc/sysconfig/network-scripts/ifup-routes pour établir des routes statiques dépendant de ce périphérique, établit des alias pour ce périphérique et définit le nom d'hôte si ce n'est déjà fait — et un nom d'hôte peut être trouvé pour l'IP de ce périphérique. ifup-post Envoie SIGIO à tout programme ayant demandé une notification d'événements de réseau.

Le cas échéant, ce fichier pourrait être étendu pour définir la configuration du service de noms, appeler des scripts arbitraires, etc.

System V Init

Cette section décrit brièvement les éléments internes du processus de démarrage. Elle présente la manière dont l'ordinateur démarre en utilisant SysV init, de même que les différences entre l' init utilisé dans les éditions de Linux plus anciennes et SysV init.

Le programme Init est exécuté par le noyau au démarrage. Il est chargé de lancer tous les processus normaux devant s'exécuter au démarrage. Ceux-ci comprennent les processus getty qui vous permettent de vous connecter, les démons NFS, les démons FTP et tout ce que vous voulez exécuter au démarrage de l'ordinateur.

SysV init est en passe de devenir rapidement le standard dans l'univers Linux pour la vérification du lancement du logiciel au démarrage, car il est plus facile à utiliser et plus puissant et flexible que le programme BSD init traditionnel.

SysV init diffère également de BSD init en ce que les fichiers de configuration figurent dans un sous-répertoire de /etc au lieu de résider directement dans /etc. Dans /etc/rc.d, vous trouverez rc.sysinit et les répertoires suivants :

init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
        

Le répertoire init.d contient une série de scripts. Fondamentalement, vous devez avoir un script pour chaque service que vous pourriez être amené à lancer au démarrage ou lorsque vous accédez à un autre niveau d'exécution. Les services incluent des aspects tels que la connexion au réseau, nfs, sendmail, httpd, etc. Ils n'incluent pas des éléments tels que setserial qui ne doit être exécuté qu'une seule fois, puis quitté. Des éléments tels que celui-là doivent aller dans rc.local ou rc.serial.

Si vous optez pour rc.local, il doit être dans /etc/rc.d. La plupart des systèmes en incluent un, même s'il ne fait pas grand-chose. Vous pouvez également inclure un fichier rc.serial dans /etc/rc.d si vous devez exécuter des tâches spécifiques au port série au démarrage.

La chaîne des événements de présente comme suit :

Le niveau d'exécution par défaut est géré au niveau de /etc/inittab. Il doit y avoir, près du début, une ligne ressemblant à ceci :

id:3:initdefault:
        

A partir de ceci, vous devez considérer la seconde colonne et voir que le niveau d'exécution par défaut est 3. Si vous le souhaitez, vous pouvez modifier /etc/inittab manuellement. Soyez très prudent lorsque vous modifiez le fichier inittab. Si vous pensez que vous n'en sortirez pas, vous pouvez régler le problème en redémarrant le système, puis en tapant :

LILO boot :  linux single
        

Ceci devrait vous permettre de démarrer en mode mono-utilisateur afin que vous puissiez éditer à nouveau inittab pour rétablir sa valeur initiale.

A présent, comment exécute-t-il tous les bons scripts ? Si vous tapez ls -l dans rc3.d, vous pourriez voir s'afficher quelque chose comme :

lrwxrwxrwx 1 root root 17 3:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 3:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 3:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 3:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 3:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 3:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 3:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 3:11 S99local -> ../rc.local
        

Vous remarquerez qu'il n'y a pas de fichiers "réels" dans le répertoire. Tout ce qu'il y a, c'est un lien vers l'un des scripts se trouvant dans le répertoire init.d. Les liens contiennent également un "S" et un nombre au début. Le "S" indique de démarrer ce script particulier et un "K" signifierait de l'arrêter. Le nombre figurant dans le nom du fichier est utilisé à des fins d'ordre. Init lance tous les services sur la base de l'ordre dans lequel ils apparaissent. Vous pouvez dupliquer des nombres, mais cela contribuera seulement à semer la confusion. Vous devez uniquement utiliser un nombre à deux chiffres, associé à un "S" ou un "K" majuscule selon que vous voulez lancer ou arrêter les services requis.

Comment init lance-t-il et arrête-t-il des services ? C'est simple. Chacun des scripts est écrit pour accepter un argument qui peut être "start" et "stop". En fait, vous pouvez exécuter ces scripts manuellement en tapant une ligne de commande telle que :
/etc/rc.d/init.d/httpd stop
          
Ceci arrête le serveur httpd . init lit le nom et s'il contient un "K", il appelle le script avec l'argument "stop". S'il est associé à un "S", il appelle le script contenant un argument "start".

Pourquoi tous ces niveaux d'exécution ? Certaines personnes veulent disposer d'une solution facile pour configurer des ordinateurs afin d'en faire des machines multitâches. Vous pourriez avoir un niveau d'exécution "serveur" qui exécute uniquement httpd, sendmail, la connexion au réseau, etc. Vous pourriez ensuite avoir un niveau d'exécution "user" exécutant la connexion au réseau gdm, etc.

Niveaux d'exécution d'Init

Généralement, Red Hat Linux fonctionne en niveau d'exécution 3 — mode multi-utilisateurs complet. Les niveaux d'exécution suivants sont définis dans Red Hat Linux :

  • 0 — Arrêt

  • 1 — Mode mono-utilisateur

  • 2 — Mode multi-utilisateurs, sans connexion au réseau

  • 3 — Mode multi-utilisateurs complet

  • 4 — Non utilisé

  • 5 — Mode multi-utilisateurs complet (avec écran de connexion de type X Window)

  • 6 — Redémarrage

Si votre ordinateur ne démarre pas en raison d'un /etc/inittab incorrect, ou ne vous laisse pas vous connecter parce que votre /etc/passwd est corrompu ou parce que vous avez oublié votre mot de passe, démarrez en mode mono-utilisateur en tapant linux single à l'invite de démarrage de LILO. Un système très dépouillé démarrera et vous disposerez d'un shell à partir duquel vous pourrez résoudre le problème.

Utilitaires Initscript

L'utilitaire chkconfig offre un outil de ligne de commande simple permettant de maintenir la hiérarchie de répertoires /etc/rc.d. Il libère les administrateurs système de la tâche de devoir manipuler directement les nombreux liens symboliques dans /etc/rc.d.

En outre, il y a l'utilitaire ntsysv qui offre une interface orientée écran, par opposition à l'interface de ligne de commande de chkconfig.

Reportez-vous à la la section intitulée Contrôle de l'accès aux services ou aux pages man de chkconfig et ntsysv pour plus d'informations.

Exécution de programmes au démarrage

Le fichier /etc/rc.d/rc.local est exécuté au démarrage, après accomplissement de toute autre tâche d'initialisation, et chaque fois que vous modifiez des niveaux d'exécution. Vous pouvez ajouter ici des commandes d'initialisation supplémentaires. Par exemple, il se peut que vous vouliez démarrer des démons supplémentaires ou initialiser une imprimante. En outre, si vous avez besoin d'une configuration de port série, vous pouvez modifier /etc/rc.d/rc.serial qui sera exécuté automatiquement au démarrage.

Le fichier /etc/rc.d/rc.local par défaut crée simplement une jolie bannière de connexion avec votre version de noyau et votre type d'ordinateur.

Arrêt

Pour arrêter Red Hat Linux, entrez la commande shutdown. Pour plus de détails, lisez la page de manuel shutdown. Les deux utilisations les plus courantes sont :

shutdown -h now
shutdown -r now
        

Chacune de ces commandes arrête proprement le système. Après avoir tout arrêté, l'option -h arrête l'ordinateur et l'option -r le redémarre.

Bien que les commandes reboot et halt soient suffisamment "intelligentes" pour invoquer la commande shutdown si elles sont exécutées tandis que le système est en niveaux d'exécution 1-5, ce n'est pas une bonne habitude à prendre car les systèmes de type Linux ne disposent pas tous de cette fonction.