Ecole Nationale des Sciences Appliques - Khouribga
Administration systme Linux 2 D Gestion dnergie Plan C Arrt dune machine Linux B Processus Init et niveaux dexcution A Dtail du dmarrage dune machine Linux 3 D Gestion dnergie Plan C Arrt dune machine Linux B Processus Init et niveaux dexcution A Dtail du dmarrage dune machine Linux 4 A- Dtail du dmarrage dune machine Linux 1. BIOS 2. Gestionnaire damorage 3. Chargement du noyau 5 A- Dtail du dmarrage dune machine Linux 1 BIOS Le BIOS (Basic Input Output System) est le premier programme excut lallumage de lordinateur. Son but est de fournir des routines standard pour les diffrents types de matriels et de charger le systme dexploitation. Sans le BIOS, la machine ne pourrait pas dmarrer car le microprocesseur ne sait utiliser que les instructions stockes en mmoire vive. Le BIOS aura donc pour fonction : inspecter l tat matriel de la machine (cartes, disques, RAM) initialiser le systme daffichage permettre lutilisateur dinteragir si besoin pour divers rglage (ex: prcision du disque de boot) charger en mmoire vive le secteur de boot dun certain priphrique et excuter ce programme 5 Administration Linux 6 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage Gestionnaire damorage = chargeur = boot loader est le petit programme lanc sur la machine aprs le BIOS. Sa tche est de lire et mettre en mmoire limage du noyau dun systme dexploitation, puis de lui passer la main. Pour tre accessible et excut par le BIOS, celui-ci se trouve dans le premier bloc de donnes contenu sur le priphrique damorage, plus connu sous le nom de "MBR" (Master Boot Record). 6 Administration Linux 7 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage M B Rhda1 (c:) hda2 (swap) hda5 (/) hda6 (/var) hda7 (/usr) hda3 Gestionnaire d'amorage (446 octets) Table des partitions (4*16=64 octets) 0xAA55 8 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage M B R Linux Windows XP Certains MPR ne savent booter que certains systmes (par exemple celui de Windows XP ne sait pas booter un Linux) 9 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage M B R Linux Windows XP P B R Principe de chainage d'amorage (chainloading) un MBR qui ne sait pas charger la partition 2 mais tout MBR sait charger un autre MBR un autre MBR dans la partition 2 : PBR (Partition Boot Record) 10 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage Sous Linux, deux programmes de MBR principalement : LILO (Linux Loader) : moins utilis GRUB (Grand Unified Boot Loader) : plus utilis LILO et GRUB proposent une interface graphique de dmarrage du systme Linux. 11 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage b. LILO LILO (LInux LOader) peut dmarrer diffrents systmes dont DOS, OS/2, FreeBSD, et bien sr Linux. Il permet en outre de passer en paramtres au noyau Linux lors de son chargement. Utilisation L'interface fournie par LILO soit une invite texte au dmarrage qui affiche LILO: ou boot:, soit un menu graphique dans lequel on peut naviguer avec les flches de direction. Pour intervenir sur un systme en panne de dmarrage, on peut utiliser le CD- Rom d'installation et saisir l'invite : boot: expert 11 Administration Linux 12 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage Configuration La modification du MBR (ou du PBR) est ralis par la commande lilo qui suit les instructions laisses dans le fichier /etc/lilo.conf. Exemple de fichier de configuration: Gestionnaire d'amorage : LILO 12 Administration Linux #section gnrale boot=/dev/sda map=/boot/map install=/boot/boot.b prompt timeout=500 #section image image=/boot/vmlinuz-2.0.36-0.7 label=linux52 root=/dev/sdb3 initrd=/boot/initrd- 2.0.36-0.7.img read-only image=/boot/vmlinuz-2.0.35 label=linux51 root=/dev/sda5 initrd=/boot/initrd- 2.0.35.img read-only #section other other=/dev/sda1 label=windows98 table=/dev/sda 13 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage On distingue trois sections : une section gnrale unique (global options) des sections pour linux (image) des sections pour dautres systmes dexploitation (other) Les deux derniers types de sections servent donc distinguer les systmes dexploitation. Section gnrale Cest la premire section du fichier et peut contenir une srie de commandes prcises, parmi lesquelles : Gestionnaire d'amorage : LILO 13 Administration Linux 14 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage boot=<fichier-de-priphrique> Ce fichier indique o installer lilo : sil sagit dune disquette, on trouvera /dev/fd0, sil sagit du secteur damorage de la partition racine, on retrouvera le nom de fichier de priphrique de la partition linux, par exemple /dv/hda1 sil sagit du MBR, on aura directement /dev/hda, cest -dire le nom du disque mme root=<fichier-de-priphrique> (ex debian: root=dev/hdb1) Nom du fichier de priphrique permettant daccder au systme dexploitation. Ceci est optionnel, puisque limage indique une partition. Gestionnaire d'amorage : LILO 14 Administration Linux install=<fichier-de-boot> (ex debian: install=bmp) installe le fichier spcifi comme le nouveau boot secteur. 15 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage promt si cette option est prsente, LILO affichera une invite et attendra une saisie de lutilisateur timeout utilis avec loption prompt, permet de dfinir un dlai dattente avant le dmarrage automatique Gestionnaire d'amorage : LILO 15 Administration Linux section image Elle intervient aprs la section globale, sachant que lordre des sections est important. Le mot crucial de cette nouvelle section est image=. Le but de cette section est dindiquer de quelle manire linux est lanc. On peut trs bien avoir plusieurs images linux dans le fichier lilo.conf. cette section regroupe les commandes suivantes : 16 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage image=<nom de fichier> indique le noyau du systme charger, gnralement /vmlinuz label=nom nom de limage pouvant tre introduit par lutilisateur si loption prompt est active Gestionnaire d'amorage : LILO 16 Administration Linux read-only pour monter la partition en lecture seule afin que le programme de vrification de lintgrit du disque puisse sexcuter proprement 17 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage label=nom Idem que ci-avant Gestionnaire d'amorage : LILO 17 Administration Linux other=<fichier de priphrique> permet dindiquer la partition qui abrite un systme dexploitation autre que Linux. section other Il est possible de proposer dautres systmes que linux. La diffrence stablit au travers de la section other. 18 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage Gestionnaire d'amorage : LILO 18 Administration Linux Enregistrement de la configuration LILO Une fois ce fichier modifi, il ne faut pas oublier de lancer la commande lilo pour crire le chargeur dans le MBR avec les directives dfinies prcdemment. Dsinstallation Enfin, pour dsinstaller LILO et replacer le MBR dans son tat initial, plusieurs mthodes existent: o Sous linux : [root]# lilo -U o Sous Windows XP: fixmbr <nom du priphrique> 19 A- Dtail du dmarrage dune machine Linux 2 Gestionnaire damorage c. GRUB Gestionnaire d'amorage : GRUB 19 Administration Linux GRUB (GRand Unified Bootloader) est capable de dmarrer peu prs tout, de Linux Windows NT en passant par BIOS, FreeBSD, OpenBSD, Windows 9x, OS/2 Une autre caractristique intressante de GRUB est la mise disposition d'un mini shell au dmarrage permettant d'excuter toutes les commandes internes. 20 A- Dtail du dmarrage dune machine Linux Shell GRUB Pour obtenir une mulation du shell GRUB sous Linux, il suffit de saisir la commande grub. Le mini shell obtenu vous permettra de lancer les mmes commandes GRUB qu'au dmarrage de la machine ainsi que les instructions d'installation de GRUB dans le MBR. Gestionnaire d'amorage : GRUB 20 Administration Linux 21 A- Dtail du dmarrage dune machine Linux Configuration Le fichier de configuration de GRUB est /boot/grub/menu.lst ; en voici un exemple : Gestionnaire d'amorage : GRUB 21 Administration Linux Si GRUB n'a pas t retenu lors de l'installation de la distribution, il sera ncessaire d'installer les fichiers de base; cela est facilement ralisable avec la commande grub- install, suivie du nom du priphrique o le MBR doit tre inscrit Exemple : #grub-install /dev/hda timeout=10 default=0 title Debian root (hd1,0) kernel boot/vmlinuz-2.6.12-15 ro root=/dev/hdb1 initrd /boot/initrd-2.6.12-15.img title Windows XP root (hd0,0) chainloader +1 22 A- Dtail du dmarrage dune machine Linux Dsinstallation Pour supprimer GRUB du MBR, il suffit d'installer un autre chargeur Linux ou d'utiliser les commandes DOS/Windows adquates afin de restaurer le bootloader Microsoft. Gestionnaire d'amorage : GRUB 22 Administration Linux 23 A- Dtail du dmarrage dune machine Linux 3 Chargement du noyau 23 Administration Linux Une fois charg par le gestionnaire de dmarrage, le noyau Linux effectue plusieurs oprations : Dtection du matriel. Cette opration a dj t ralis par le BIOS mais les systmes d'exploitation rcents prfrent se passer des routines fournies par celui-ci pour des raisons d'optimisation et de support des dernires technologies. Montage du systme de fichiers principale contenant la racine / pour accder certains fichiers comme le binaire du premier programme du systme. Lancement du premier processus du systme : Init. 24 D Gestion dnergie Plan C Arrt dune machine Linux B Processus Init et niveaux dexcution A Dtail du dmarrage dune machine Linux 24 Administration Linux 25 B- Processus Init et niveaux dexcution 25 Administration Linux Processus Init Il a le numro de processus 1 et constitue la racine de tous les autres processus, directement ou indirectement. Init est gnralement stock en /sbin. de quoi est charg le processus init Il est charg de procder diverses initialisations et configurations, ainsi que de lancer un certain nombre de dmons, qui sont en fait des services systmes que lon active. Parmi les initialisations et configurations, nous citerons : o le contrle des partitions, o le contrle de lintgrit des systmes de fichiers, o le montage de ces systmes, o la configuration de la ou des cartes rseau o l'affectation des valeurs de base certaines variables d'environnement comme PATH ou RUNLEVEL 26 B- Processus Init et niveaux dexcution 26 Administration Linux Pour ce qui concerne lactivation des dmons, il peut sagir : o du dmon dimpression, lpd, o des dmons de journalisation, syslogd, o du dmon de supervision du rseau, inetd, o du dmon NFS (Network File System), o des dmons permettant la gestion des console, getty, o du dmon cron charg de lexcution des tches en diffr o dun certain nombre de dmons dfinis par ladministrateur, tels que celui permettant de grer samba, ceux dfinis pour un firewall o etc Les services dmarres dpendront du niveau d'excution spcifi au processus Init. 27 B- Processus Init et niveaux dexcution 27 Administration Linux Il existe huit runlevels dfinis sous Linux, dont quatre rservs : 0 : arrt de la machine ("halt") 1 : mode mono-utilisateur ou maintenance 6 : redmarrage de la machine ("reboot") S ou s : mode mono-utilisateur dans lequel seule la partition racine est monte; utile pour vrifier et rparer les autres systmes de fichiers. Les autres niveaux d'excution sont dfinissables souhait et permettent de distinguer diffrents modes d'utilisation du systme. Pour Redhat (Centos) : 2 : multi-utilisateur, sans NFS ( mme que 3, si on na pas le rseau) 3 : mode texte multi-utilisateur 4 : non utilis 5 : X11 mode multiutilisateur et connexion linterface graphique (si prsente) 28 B- Processus Init et niveaux dexcution 28 Administration Linux Le mode mono-utlisateur Dans ce cas seul un utilisateur peut se connecter et gnralement cest ladministrateur qui sassure ainsi quaucun utilisateur ne perturbera le systme. On utilise gnralement ce niveau pour : o rsoudre un problme technique, o installer un nouveau priphrique, o construire un nouveau noyau. Cest donc un mode maintenance. 29 B- Processus Init et niveaux dexcution 1 Fichier de configuration /etc/inittab 29 Administration Linux Pour dfinir le comportement du systme et les services dmarrer en fonction du niveau d'excution, Init se rfre au fichier de configuration /etc/inittab. Voici un exemple de ce fichier : # Default runlevel. id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.modules default bw::bootwait:/etc/rc.d/rc.boot # What to do in single-user mode. ~1:S:wait:/etc/rc.d/rc 1 ~~:S:wait:/sbin/sulogin 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 # If battery is fading fast -- we hurry... p1::powerfailnow:/sbin/shutdown -c 2> /dev/null p2::powerfailnow:/sbin/shutdown -h now "Battery Low..." # If power was restored before the shutdown kicked in, cancel it. po:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:12345:respawn:/sbin/getty tty1 VC linux 2:2345:respawn:/sbin/getty tty2 VC linux 3:2345:respawn:/sbin/getty tty3 VC linux 4:2345:respawn:/sbin/getty tty4 VC linux 5:2345:respawn:/sbin/getty tty5 VC linux 6:2345:respawn:/sbin/getty tty6 VC linux 30 B- Processus Init et niveaux dexcution 30 Administration Linux les entres du fichiers /etc/inittab Outre les commentaires, ce fichier comporte des lignes du type : <id>:<levels>:<action>:<process> id : identifiant unique et comprendre de 1 4 caractres alphanumrique. levels : les runlevels pour lesquels cette action s'applique action : mthode ou manire d'excuter la commande spcifie dans le champ suivant process : chemin de la commande lancer avec ses paramtres pour les niveaux d'excution dfinis prcdemment. respawn : le processus sera relanc s'il se termine. Utilis principalement mingetty pour assurer la gestion d'un certain nombre de terminaux texte. once : le processus n'est excut qu'une seule fois. wait : identique la directive prcdente mais ici, Init attend que le processus soit termin avant de passer la ligne suivante. off : ne fait rien; cela revient commenter la ligne. Les diffrentes directives pour le troisime champ "action" sont : 31 B- Processus Init et niveaux dexcution 31 Administration Linux boot : le processus est excut au dmarrage du systme, le champ "levels" est ignor. bootwait : idem, mais ici Init attend que le processus soit termin avant de passer la ligne suivante. initdefault : dfinit le niveau d'excution par dfaut au dmarrage du systme. Si cette directive est absente, Init le demandera sur le console. Le champ "process" est ignor. sysinit : la commande sera excut au dmarrage, avant mme les lignes contenant les directives boot et bootwait. powerfail : la commande est excut lorsque Init reoit le signal SIGPWR qui signifie que l'alimentation est sur le point d'tre interrompue. powerwait : idem, mais ici Init attend que le processus soit termin. powerokwait : le processus est excut si Init est inform du rtablissement de l'alimentation. ctrlaltdel : la commande est lance quand Init reoit le signal SIGINT. Ceci se produit lorsqu'on appuie sur les touches [Ctrl][Alt][Suppr] simultanment partir de la console. Le processus est gnralement shutdown pour passer en mode monoutilisateur ou redmarrer le systme. 32 B- Processus Init et niveaux dexcution 32 Administration Linux L'analyse du fichier de configuration prcdent vous apprend donc que : o le niveau d'excution par dfaut est le numro 3. o la commande /etc/init.d/rcSest lance en premier lieu. o la commande /etc/init.d/rcest lance pour chaque niveau d'excution avec son numro en argument. o la commande /sbin/shutdown est excut avec diffrents arguments lors de l'appui sur la touche [Ctrl][Alt][Suppr] et lors d'un vnement concernant l'alimentation. o six terminaux virtuels "tty" sont initialiss avec la commande /sbin/getty pour les niveaux d'excution 2 et 3 et un seul pour les niveaux 4 et 5. 33 B- Processus Init et niveaux dexcution 2 Contrle du processus Init 33 Administration Linux Ce mcanisme permet de changer de niveau d'excution tout moment. L'administrateur pourra donc modifier l'tat du systme en contrlant le processus Init. Niveau d'excution courant On pourra connaitre le niveau d'excution actuel grce la commande runlevel. Changement de niveau d'excution Pour controler le processus Init et changer de runlevel, il suffit d'appeler la commande init ou telinit avec le niveau d'excution (0, 1, 2, 3, 4, 5, 6, S ou s). Dmarrage en mode mono-utilisateur Il est possible de forcer le niveau d'excution du systme au dmarrage de la machine en spcifiant son numro au noyau charger (ou le mot "single" pour le runlevel S). Ainsi avec LILO, il faudra saisir au dmarrage : boot : linux single Sous GRUB, il faudra diter les arguments de l'une des entres en appuyant sur la touche [e], puis valider aprs l'ajout de single en fin de ligne. 34 B- Processus Init et niveaux dexcution 3 Scripts de dmarrage 34 Administration Linux Un certain nombre de commandes excutes par init se trouvent dans les rpertoires /etc/init.d et /etc/rc?.d (? peut tre remplac par 0, 1, 2, 3, 4, 5, 6, S). /etc/init.d/rcS : nous avons vu que cette commande est excute en premier lieu par Init; en fait c'est un script shell qui contient toutes les commandes pralables d'initialisation du systme. Ce script lance tous les scripts de /etc/rcS.d/. 35 B- Processus Init et niveaux dexcution 35 Administration Linux toujours dans /etc/init.d : les scripts shell permettant de lancer tous les services sur le systmes. Les scripts prsents ici doivent obligatoirement supporter l'argument start pour lancer le service et l'argument stop pour l'arrter. root# /etc/init.d/cron Usage: /etc/init.d/cron start | stop | restart | reload | force-reload /etc/rc?.d : ces rpertoires contiennent des liens vers les scripts du rpertoire init.d lancer lorsque Init entre dans le niveau d'excution correspondant au numro du rpertoire. Le script rc lancera les scripts contenus dans le rpertoire correspondant au niveau d'excution pass en argument. 36 B- Processus Init et niveaux dexcution 36 Administration Linux Tous ces scripts peuvent tre lancs manuellement par l'administrateur sur la ligne de commandes; il n'est donc pas ncessaire de redmarrer un systme (Debian) aprs l'ajout d'un service ou la modification de sa configuration. Par exemple, pour relancer le serveur de messagerie directement partir de la ligne de commandes : rc : cette commande parcourt le rpertoire correspondant au runlevel pass en argument et excute chaque script qui y figure en lanant d'abord ceux commenant par la lettre K (Kill) avec l'argument stop, puis ceux dbutant par la lettre S (Start) avec l'argument start; le numro suivent la lettre indiquant l'ordre d'excution. root# /etc/init.d/postfix restart Stopping mail transport agent : Postfix. Starting mail transport agent : Postfix. 37 B- Processus Init et niveaux dexcution 4 Ajout et suppression de services au dmarrage 37 Administration Linux Le programme /etc/init.d/rc excutant tous les scripts prsents dans le rpertoire du runlevel, il suffira d'ajouter un lien dans ce rpertoire vers le script adquat pour lancer (ou arrter ) un service lorsque le systme entre dans ce niveau d'excution. Par exemple, pour que le serveur Web soit lanc automatiquement au dmarrage (nous supposons ici que initdefault est positionn 3 dans /etc/inittab), sachant que le script contrlant ce service est /etc/init.d/apache2, il faudra crer un lien de ce script en respectant certains points : ce lien doit se trouver dans /etc/rc3.d puisque c'est le rpertoire du runlevel par dfaut. le nom de ce lien doit commencer par la lettre S puisque l'on veut dmarrer le service. le numro suivant la premire lettre doit tenir des autres services devant tre lancs au pralable. la fin de ce nom de fichier devrait tre significative : apache2 est un bon choix ici. 38 B- Processus Init et niveaux dexcution 5 Rpertoire /etc/rcS.d 38 Administration Linux Le premier script appel par init est /etc/init.d/rcS et ce dernier appelle tous les scripts se trouvant dans /etc/rcS.d. les scripts qui s'y trouvent permettent de dfinir les paramtres du systme, d'effectuer des initialisations comme le chargement des modules, le dmarrage des services rseau, le rglage de l'horloge. 39 D Gestion dnergie Plan C Arrt dune machine Linux B Processus Init et niveaux dexcution A Dtail du dmarrage dune machine Linux 39 Administration Linux 40 C- Arrt dune machine Linux Pourquoi faut-il arrter un systme Linux proprement ? 40 Administration Linux Pour arrter les processus qui fonctionnent et librer les diffrentes ressources utilises mmoire connexions rseau fichiers disque ouverts Pour arrter les processus qui fonctionnent et librer les diffrentes ressources utilises Linux utilise la mthode asynchrone d'criture sur disque Donc, lorsqu'un fichier est modifi, cette modification ne sera effective sur le disque qu'au bout d'un certain temps Si le systme de fichiers n'est pas synchronis (sync) avant l'arrt, le systme de fichiers peut tre corrompu Il devra tre vrifi et rpar (fsck) au redmarrage, lors du montage du systme de fichiers, ce qui peut prendre beaucoup de temps Sans compter la perte possible d'informations !!! 41 C- Arrt dune machine Linux 41 Administration Linux Comment arrter un systme Linux ? Plusieurs mthodes permettent darrter proprement une machine sous Linux. Tout dabord les arrts sont aussi grs par Init avec les niveaux 0 et 6. Cest ainsi que la commande suivante teint lordinateur : Et que celle-ci le reboote : # init 0 # init 6 Cependant la commande la plus correcte, la plus propre et la plus scuritaire pour arrter le systme est shutdown. Shutdown appelle Init, mais accepte des paramtres supplmentaires. Sa syntaxe de base est : shutdown <param> <dlai> <message> 1 Commande: shutdown 42 C- Arrt dune machine Linux 42 Administration Linux Les paramtres sont : Paramtre Action -k Neffectue pas le shutdown mais envoie le message tout le monde -r Cest un reboot -h (halt) cest un arrt. -f Empche lexcution de fsck au boot -F Force lexcution de fsck au boot -c Annule le shutdown sans dlai, mais un message est possible Le dlai peut tre spcifi de diffrentes manires : o hh:mm : une heure prcise. o +m : dans m minutes. o now : un alias pour +0, cest--dire tout de suite. 43 C- Arrt dune machine Linux 2 Commande: halt, reboot 43 Administration Linux Lexemple suivant programme un reboot pour dans 10 minutes avec un message davertissement. # shutdown -r +10 "Reboot pour maintenance dans 10 minutes" Lexemple suivant annule le reboot. # shutdown -c "Maintenance annule" Les commandes d'arrt halt et reboot sont utilises dans le dernier script lanc des niveaux d'excution 0 et 6 : halt : synchnorise les disques avec les tampons, met jour le fichier /var/log/wtmp (qui contient un historique des utilisateurs connects) et arrte le systme. reboot : identique halt sauf pour le dernier point o la commande redmarre le systme au lieu de l'arrter. 44 D Gestion dnergie Plan C Arrt dune machine Linux B Processus Init et niveaux dexcution A Dtail du dmarrage dune machine Linux 44 Administration Linux 45 D- Gestion dnergie Onduleurs 45 Administration Linux Nous avons vu que le fichier /etc/inittab tait dot de quatre directives permettant la gestion d'nergie: powerfail, powerwait, powerokwait et pawerfailnow. C'est au programme grant l'onduleur d'envoyer le signal SIGPWR Init et de renseigner le fichier /etc/powerstatus sur l'tat de l'alimentation lectrique. Lorsque Init reoit un signal SIGPWR, il regarde dans /etc/powerstatus. Si celui-ci contient FAIL, il excute les entres powerfail et powerwait du fichier /etc/inittab. S'il contient OK, il excute l'entre powerokwait. Enfin, si la chaine de caractre est LOW, il excute l'entre powerfailnow.