|
|
||
|
||
|
|
| Red Hat Documentation |
Processus de démarrage, Init et ShutdownCette 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émarrageLorsqu'un ordinateur démarre, 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 à fonctionner. Le BIOS fournit l'interface du niveau le plus bas avec les 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. Généralement, il contrôle le lecteur de disquette (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 par le premier secteur du premier disque, puis lance l'exécution du MBR. Le bloc de démarrage maître 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 bloc de démarrage maître charge ensuite LILO qui contrôle la suite 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, vous pouvez entrer à ce niveau 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 (plus un numéro de version tel que 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 dont est composé le système Linux (en en devenant le parent ou grand-parent). Tout d'abord, il exécute /etc/rc.d/rc.sysinit qui définit le chemin d'accès, configure la connexion au réseau si nécessaire, lance les échanges, vérifie les systèmes de fichiers, etc. Fondamentalement, rc.sysinit s'occupe de tout ce que le système doit accomplir lors de l'initialisation. 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 du réseau et l'horloge. Il peut également exécuter rc.serial, si certains processus de port série doivent être initialisés. 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 les tampons utilisés vers le disque. A chaque fois que le niveau d'exécution change, /etc/rc.d/rc démarre et arrête les 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 arrière-plan 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 numéroté 0-6). rc arrête tous les scripts d'arrêt (leur nom de fichier commence par K ) dans /rc.d/. Il initialise ensuite tous les scripts de lancement (leur nom de fichier commence par S ) dans le répertoire de niveau d'exécution approprié (de manière à ce que tous les services et applications soient lancé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 découvre des scripts de lancement pour kmod, network, nfsfs, randomc, syslog, atd, crond, portmap, snmpd, inet, xntpd, lpd, nfs.rpmsave, dhcpd, ypbind, autofs, keytable, sendmail, gpm, sound et smb.rpmsave. 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 aucune console virtuelle). /etc/inittab indique également que gdm, le gestionnaire d'ouverture de session X Window, doit démarrer au niveau d'exécution 5. De même, le fichier /etc/inittab décrit comment le système doit prendre en charge la conversion de la combinaison de touches Ctrl-Alt-Suppr en quelque chose comme 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 sysconfigLes informations suivantes décrivent les divers fichiers figurant dans /etc/sysconfig, leur fonction et leur contenu. Fichiers figurant dans /etc/sysconfigLes fichiers suivants se trouvent normalement dans /etc/sysconfig:
Examinons-les. /etc/sysconfig/clockLe 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éconseillées) :
Actuellement, les valeurs correctes sont :
/etc/sysconfig/hwconfLe 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 néanmoins, il se peut que certains périphériques apparaissent soudain comme ajoutés ou supprimés. /etc/sysconfig/mouseLe fichier /etc/sysconfig/mouse est utilisé pour fournir des informations sur la souris disponible. Les valeurs suivantes peuvent être utilisées :
En outre, /dev/mouse est un lien symbolique pointant sur la souris réelle. /etc/sysconfig/sendmailLe 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 arrière-plan 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 :
/etc/sysconfig/apmdLe 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 du démarrage, selon que votre matériel prend ou non en charge la technologie de gestion de l'alimentation apm (Advanced Power Management) ; vous pouvez choisir de ne pas l'utiliser. /etc/sysconfig/initLe 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 :
/etc/sysconfig/keyboardLe fichier /etc/sysconfig/keyboard contrôle le comportement du clavier. Les valeurs suivantes peuvent être utilisées :
/etc/sysconfig/networkLe 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 :
/etc/sysconfig/pcmciaLe fichier /etc/sysconfig/pcmcia est utilisé pour spécifier des informations de configuration de la carte PCMCIA. Les valeurs suivantes peuvent être utilisées :
/etc/sysconfig/soundcardLe fichier /etc/sysconfig/soundcard est généré par sndconfig et ne doit pas être modifié. Il est utilisé par /etc/rc.d/init.d/sound pour configurer correctement le système. Il permet seulement 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 :
Fichiers dans /etc/sysconfig/network-scripts/Les fichiers suivants se trouvent normalement dans /etc/sysconfig/network-scripts :
Examinons-les. /etc/sysconfig/network-scripts/ifup, /etc/sysconfig/network-scripts/ifdownIl 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 à des fins d'"héritage" ; ils seront probablement supprimés dans les versions futures ; ainsi, seuls /sbin/ifup et /sbin/ifdown devraient être actuellement utilisés. Ces scripts utilisent 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 au démarrage (ONBOOT=no, [voir ci-dessous]) peuvent être ignorés. /etc/sysconfig/network-scripts/network-functionsCe n'est pas réellement un fichier public. Il contient des fonctions que les scripts utilisent pour ouvrir et fermer des interfaces. Il contient, en particulier, l'essentiel du code pour la prise en charge des configurations d'interface alternatives et la notification de modifications d'interface via netreport. /etc/sysconfig/network-scripts/ifcfg-<interface-name>, /etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>Le premier fichier définit une interface, tandis que le second contient uniquement les éléments de la définition qui diffèrent dans une interface "clone" (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 à tous les fichiers de base :
Les valeurs suivantes sont communes à tous les PPP et fichiers SLIP :
Les valeurs suivantes sont communes à tous les fichiers PPP :
/etc/sysconfig/network-scripts/chat-<interface-name>Ce fichier est un "chat script" pour connexion PPP ou SLIP destiné à établir la connexion. Pour les périphériques SLIP, un script DIP est écrit à partir du "chat script" ; pour les périphériques PPP, le "chat script" est utilisé directement. /etc/sysconfig/network-scripts/dip-<interface-name>Ce script en écriture seule est créé par netcfg à partir du "chat script". 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-postCe fichier est appelé lorsqu'un périphérique réseau (à l'exception d'un périphérique SLIP) intervient. Il appelle /etc/sysconfig/network-scripts/ifup-routes pour activer les routes statiques dépendant de ce périphérique. Il active des alias pour ce périphérique. Il définit le nom d'hôte si celui-ci n'est pas encore défini et s'il est possible de trouver un nom d'hôte pour l'adresse IP de ce périphérique. Il envoie SIGIO à tout programme ayant demandé une notification d'événements de réseau. Ce fichier pourrait être étendu pour gérer la configuration des services de noms, appeler des scripts arbitraires et effectuer d'autres opérations, en fonction des besoins. /etc/sysconfig/network-scripts/ifdhcpc-doneCe fichier est appelé par dhcpcd une fois la configuration de DHCP terminée ; il configure /etc/resolv.conf à partir de la version de dhcpcd se trouvant dans /etc/dhcpc/resolv.conf. System V InitCette 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 lancé par le noyau au démarrage. Il est chargé de lancer tous les processus normaux devant être exécutés 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 la norme dans le monde Linux pour le contrôle du lancement des logiciels au démarrage, car il est plus facile à utiliser et plus puissant et flexible que le programme init (BSD) traditionnel. SysV init diffère également de BSD init en ce sens que les fichiers de configuration se trouvent dans un sous-répertoire de /etc au lieu d'être directement dans /etc. Dans /etc/rc.d, vous trouverez rc.sysinit et les répertoires suivants :
Le répertoire init.d contient une série de scripts. Vous devez disposer d'un script pour chaque service que vous pourriez être amené à lancer au démarrage ou lors de l'accès à un autre niveau d'exécution. Les services comprennent des éléments 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 de ce type doivent être placés 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 pour que le système exécute des opérations 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, au début, une ligne ressemblant à ceci :
A ce stade, vous devez consulter 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 . En cas de problème, vous pouvez redémarrer et entrer :
Ceci devrait vous permettre de démarrer en mode mono-utilisateur de façon à pouvoir modifier inittab en rétablissant sa valeur antérieure. A présent, examinons comment le système procède pour exécuter les bons scripts. Si vous entrez ls -l dans rc3.d, le système devrait afficher quelque chose comme :
Vous remarquerez qu'il n'y a pas de fichiers "réels" dans le répertoire. Il y a seulement 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 que le script concerné doit être lancé et un "K" signifierait qu'il doit être arrêté. Le nombre figurant dans le nom du fichier permet de déterminer l'ordre de prise en compte. Init lance tous les services sur la base de l'ordre alphabétique. Vous pouvez dupliquer des nombres, mais cela contribuera seulement à semer la confusion. Il suffit que vous utilisiez un nombre de deux chiffres, assorti d'un "S" ou d'un "K" majuscule selon que vous voulez lancer ou arrêter les services de votre choix. 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". Vous pouvez exécuter ces scripts manuellement en entrant une ligne de commande telle que :
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 "utilisateur" exécutant gdm, la connexion au réseau, etc. Niveaux d'exécution d'initGénéralement, Red Hat Linux fonctionne au niveau d'exécution 3 -- mode multi-utilisateurs complet. Les niveaux d'exécution suivants sont définis dans Red Hat Linux :
Si votre ordinateur ne démarre pas en raison d'un fichier /etc/inittab défectueux ou ne vous laisse pas vous connecter parce que le fichier /etc/passwd est endommagé ou simplement parce que vous avez oublié votre mot de passe, démarrez en mode mono-utilisateur en entrant 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 remédier à votre problème. Utilitaires initscriptL'utilitaire chkconfig offre un outil de ligne de commande simple permettant de maintenir la hiérarchie de répertoires /etc/rc.d . Il évite aux administrateurs système d'avoir à manipuler directement les nombreux liens symboliques dans /etc/rc.d. Vous disposez également de l'utilitaire ntsysv qui offre une interface permettant de déplacer le curseur dans toute la page, par opposition à l'interface de ligne de commande de chkconfig. Pour plus de détails, reportez-vous aux pages de manuel de chkconfig et ntsysv. Exécution de programmes au démarrageLe 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êtPour arrêter Red Hat Linux, entrez la commande shutdown. Pour plus de détails, lisez la page de manuel de shutdown. Les deux utilisations les plus courantes sont :
Chacune de ces commandes arrête correctement 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 que de les utiliser car tous les systèmes de type Linux ne disposent pas de cette fonction.
| ||||||||||||||||||||||||
|
|