39
Administration et maintenance du système GNU/Linux Démarrage du système 1

1_démarrage du systeme linux.pptx

Embed Size (px)

Citation preview

Slide 1

Administration et maintenance du systme GNU/LinuxDmarrage du systme1Dmarrage du systmeLe principe de dmarrage d'un systme LinuxComment les processus sont lancs et dans quel ordre?Envisager de configurer le systme pour lancer des services personnaliss.

2Dmarrage du systmeSous LINUX on peut dfinir un tat de marche qui correspond un certain nombre de services (logiciels) qui seront lancs. Exemple: dans une universit, on pourra dfinir un certain tat de marche pour les lves et un autre pour les professeurs, la diffrence entre les deux sera que les professeurs bnficieront de plus de services.

3Squence de dmarrageLe boot loaderLa premire chose que vous devriez voir aprs l'cran de prsentation de votre carte mre est votre boot loader.

4Squence de dmarrage

5Squence de dmarrageIci nous avons le choix entre deux entres relatives un mme noyau linux (kernel). La premire correspond un lancement normal, la seconde ("single user mode" ou "recovery mode") n'est utile que si votre systme Debian ne dmarre plus dans son mode normal. Remarque :Lancer un noyau "normalement" et en "recovery mode" consiste simplement passer un jeu d'options diffrent au noyau. Vous pouvez passer les options que vous souhaitez en les modifiant dans grub. Il suffit pour cela d'appuyez sur la touche 'e' ou 'tabulation'.

6Squence de dmarrageChargement du noyau LinuxVotre noyau Linux commence se charger.Il prend en charge un minimum de matriel pour que le dmarrage s'effectue avec succs.

7Squence de dmarrage

8Squence de dmarrageChargement de l'OS (operating system)

Si le kernel se charge avec succs, l'OS va commencer s'amorcer. La position de l'OS est prcise au niveau du boot loader. Un systme Linux comporte 6 runlevels. un runlevel associ au redmarrage (reboot) Un runlevel pour l'arrt (halt) d'une machine

9Squence de dmarrageUn certain nombre d'tats de marche ont t prdfinis sur le systme, on peut les voir dans le fichier /etc/inittab. Le fichier /etc/inittab indique quelles commandes amorcer en fonction du runlevel.Voici ce qu'on peut trouver au dbut du fichier:10Squence de dmarrage11# Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)#id:5:initdefault:

Squence de dmarrageeUn runlevel indique quelles tches lancer et stopper. Voici quelques exemples de services :gdm : le gestionnaire de connexion gnomekdm : le gestionnaire de connexion KDEgpm : la souris en mode textemysql : une base de donne mysqlapache2 : un serveur webssh : un serveur ssh

12Squence de dmarrageLes serveurs rseau se traduisent toujours par un service, au mme titre que n'importe quelle tche qui tourne en arrire plan. Une tche qui tourne en arrire plan sous Linux est souvent appele dmon. En gnral le nom d'un dmon se termine par un "d" (comme par exemple statd, sshd, proftpd, rsyslogd...).13

14Comment dmarrer plus vite ?

Lorsque Linux dmarre, un certain nombre de services sont lancs automatiquement.

Il se peut que certains d'entre eux ne vous servent pas. Vous pouvez supprimer selon votre cas de figure :lpd ou cups si vous n'avez pas d'imprimante crond et atd si vous n'utilisez pas la gestion de tches programmable

15Comment dmarrer plus vite ?

gpm, le gestionnaire de souris en mode texte, Sendmail si vous n'envoyez pas de courrier par cette mthode Postgres si vous n'utilisez pas cette base de donnes... Pour cela, vous pouvez lancer le setup de Redhat, Drakconf ou un diteur de Systme V (ksysv ou tksysv)

16Les runlevelsPrsentation:Au dmarrage ou l'arrt d'une machine Linux, plusieurs tches doivent tre effectues. Ces tches peuvent correspondre: des fonctionnalits de base (montage des partitions, chargement des priphriques, dmarrage de l'interface graphique, ..)

des tches plus spcifiques (lancement d'un serveur web, d'un service ssh, d'une base de donnes MySQL, ...).

17Les runlevelsCes scripts (tches) peuvent tre excuts en leur passant un paramtre spcifique :start : dmarre le servicestop : arrte le servicerestart : redmarre le servicereload : force la relecture du fichier de configuration sans arrter le servicestatus : affiche l'tat actuel du service (dmarr, teint, ...)Par exemple, pour lancer un serveur apache,:il faut excuter cette commande : /etc/init.d/apache2 start pour le redmarrer : /etc/init.d/apache2 restart.

18Les runlevelsLes scripts sont donc le moyen de contrler les diffrents services installs sur votre machine. Lors de l'installation d'un paquet correspondant un service, un script est automatiquement ajout dans ce rpertoire.En fait, il y a 7 runlevels diffrents sur un systme Unix.

Chacun est associ un tat de votre machine. Voici les runlevels des systmes Debian/Ubuntu :

Etat de marche 0 pour raliser un arrt (shutdown) de la machine, 1 pour rentrer en mode single user (uniquement root de connect) en mode maintenance, 2 en mode multiutilisateur sans NFS, 3 le mode multiutilisateur complet, 4 inutilis, 5 mode multiutilisateur avec X lanc automatiquement, 6 pour rebooter la machine.

19Le programme initinitdefaut dfinit l'tat de marche par dfaut de la machine en fonctionnement normal, Exemple: par dfaut sur une Mandrake 7.1 c'est 5.init 0 : Pour arrter la machine par exemple.A noter que pour arriver l'tat de marche 3, le systme passe successivement l'tat de marche 0, 1, 2 et 3. En tatant l'tat de marche 3, pour s'arrter (tat de marche 0), on passe successivement l'tat de marche 3, 2, 1 et 0.

Le fichier /etc/inittabAu dmarrage du systme lilo lance le noyau /boot/vmlinuz-(numro de version), qui excute /sbin/init,qui est le premier processus tre lanc , il va lire squentiellement le fichier /etc/inittab pour lancer les autres services (processus).

20Le programme initRappelons que le premier processus tre lanc sur un systme Unix est le programme init (qui est le pre de tous les processus existants). Son but est de lancer tous les autres processus ncessaires l'utilisation d'une machine.La gestion de tous les services installs sur une machine passe par des scripts situs dans le rpertoire /etc/init.d/. Ce rpertoire contient un script par service (serveur web, gestion du rseau, l'interface graphique, le DHCP, le gestionnaire des logs, ...).

21Le programme initVoici le fichier /etc/inittab avec les commentaires associs:id:3:initdefault:Etat de marche par dfaut 3# System initialization.si::sysinit:/etc/rc.d/rc.sysinit Au dmarrage c'est le script /etc/rc.d/rc.sysinit qui va tre lanc au premier, il permet d'initialiser le systme, il ralise les tches suivantes : initialisation du rseau, de la swap, vrification des disques , montage des disques, chargement des modules, appel du fichier rc.firewall pour initialiser les rgles d'ipchains .... . En fait les messages que vous voyez au boot sont gnrs par ce fichier.

22Le programme initl0:0:wait:/etc/rc.d/rc 0Au dmarrage on passe d'abord l'tat de marche 0, lancement de tous les services qui sont dans /etc/rc.d/rc0.det qui commencent par S (pour Start). Vous constaterez que ce sont des liens vers des scripts qui sont dans /etc/rc.d/init.d. Le wait signifie que tant que tous les scripts de lancement ne se sont pas achevs, on ne va pas plus loin dans le fichier.l1:1:wait:/etc/rc.d/rc 1Passage ensuite l'tat de marche 1, lancement des services commenant par S dans le rpertoire /etc/rc.d/rc1.dl2:2:wait:/etc/rc.d/rc 2Passage ensuite l'tat de marche 2, lancement des services commenant par S dans le rpertoire /etc/rc.d/rc2.dl3:3:wait:/etc/rc.d/rc 3Passage ensuite l'tat de marche 3, lancement des services commenant par S dans le rpertoire /etc/rc.d/rc3.d, comme c'est l'tat de marche par dfaut, on ne lit pas les 3 lignes suivantes.l4:4:wait:/etc/rc.d/rc 4

23Le programme initl5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6# Things to run in every runlevel.ud::once:/sbin/updateA chaque passage un tat de marche on excute une fois la commande /sbin/update qui permet de vider les "dirty buffers", ca::ctrlaltdel:/sbin/shutdown -t3 -r nowCa c'est important, c'est ici qu'on dfinit que si on presse sur les touches ctrl+alt+del, on dclenche un shutdown (arrt de la machine (-t3 dans 3 secondes, -r redmarrage aprs arrt# When our UPS tells us power has failed, assume we have a few minutes# of power left. Schedule a shutdown for 2 minutes from now.# This does, of course, assume you have powerd installed and your# UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Dow.# If power was restored before the shutdown kicked in, cancel it.pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled

24Le programme init# Run gettys in standard runlevels1:12345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6Lancement de console minimaliste suivant l'tat de marche (dfini en dbut de ligne). respawn : le processus sera relanc si jamais il est interrompu.# Run xdm in runlevel 5x:5:respawn:/etc/X11/prefdm nodaemon*Si on passe l'tat de marche 5, lancement de l'interface graphique

25Les runlevelsPour chaque tat de la machine, il va falloir excuter des scripts diffrents (par exemple, pour le runlevel 0 (l'arrt du systme), il faut arrter tous les services de la machine. En revanche, pour le runlevel 2 (le dmarrage du systme), il va falloir dmarrer tous les services de la machine). Lorsqu'un systme dmarre, il se place dans le runlevel 2, 3, 4 ou 5 (par dfaut, le 2). Admettons que le systme utilise le runlevel par dfaut pour dmarrer (le 2). Au dmarrage, il va consulter le rpertoire /etc/rc2.d/. Allons voir ce que contient ce rpertoire (ls -l /etc/rc2.d/) :26Les runlevels[...]lrwxrwxrwx 1 root root 13 2008-11-18 20:04 S16ssh -> ../init.d/sshlrwxrwxrwx 1 root root 15 2008-12-17 19:50 S19mysql -> ../init.d/mysqllrwxrwxrwx 1 root root 14 2008-11-03 14:58 S89cron -> ../init.d/cronlrwxrwxrwx 1 root root 17 2008-11-17 19:31 S91apache2 -> ../init.d/apache2[...]

Voici la syntaxe d'une ligne :X00service -> ../init.d/serviceX correspond la lettre S ou la lettre K. Si il y a la lettre S, le paramtre start sera pass au script /etc/init.d/service. si c'est la lettre K, c'est le paramtre stop qui sera pass ce script.00 correspond une priorit d'excution. Le service possdant le plus petit chiffre s'excutera en premier. Par exemple, S16ssh s'excutera avant S89cron. (Attention : Tous les liens commenant par K s'excuteront avant les liens commenants par un S)Service correspond au nom du service lanc (ou arrt). Exemple : apache2, ssh,

27Les runlevelsExemple : passage l'tat de marche 3Quand on passe l'tat de marche 3, au dmarrage, le systme va dans le rpertoire /etc/rc.d/rc3.d on y trouve:lrwxrwxrwx 1 root root 17 mar 27 17:58 k20rusersd -> ../init.d/rusersdlrwxrwxrwx 1 root root 15 mar 27 17:58 K20rwhod -> ../init.d/rwhodlrwxrwxrwx 1 root root 16 mai 1 15:30 K30mcserv -> ../init.d/mcserv

28Les runlevelslrwxrwxrwx 1 root root 15 mar 27 17:58 K50snmpd -> ../init.d/snmpdlrwxrwxrwx 1 root root 16 mar 27 17:58 K55routed -> ../init.d/routedlrwxrwxrwx 1 root root 16 mar 27 17:58 K87ypbind -> ../init.d/ypbindlrwxrwxrwx 1 root root 16 mar 27 17:58 K96pcmcia -> ../init.d/pcmcialrwxrwxrwx 1 root root 17 mar 27 17:58 S01kerneld -> ../init.d/kerneldlrwxrwxrwx 1 root root 17 mar 27 17:58 S10network -> ../init.d/networklrwxrwxrwx 1 root root 17 mar 27 17:58 S11portmap -> ../init.d/portmaplrwxrwxrwx 1 root root 15 mar 27 17:58 S15nfsfs -> ../init.d/nfsfslrwxrwxrwx 1 root root 16 mar 27 17:58 S20random -> ../init.d/randomlrwxrwxrwx 1 root root 16 mar 27 17:58 S30syslog -> ../init.d/sysloglrwxrwxrwx 1 root root 13 mar 27 17:58 S40atd -> ../init.d/atdlrwxrwxrwx 1 root root 15 mar 27 17:58 S40crond -> ../init.d/crondlrwxrwxrwx 1 root root 14 mar 27 17:58 S50inet -> ../init.d/inetlrwxrwxrwx 1 root root 15 mar 27 17:58 S55named -> ../init.d/namedlrwxrwxrwx 1 root root 13 mar 27 17:58 S60lpd -> ../init.d/lpdlrwxrwxrwx 1 root root 13 mar 27 17:58 S60nfs -> ../init.d/nfslrwxrwxrwx 1 root root 18 mar 27 17:58 S75keytable -> ../init.d/keytablelrwxrwxrwx 1 root root 18 mar 27 17:58 S80sendmail -> ../init.d/sendmaillrwxrwxrwx 1 root root 13 mar 27 17:58 S85gpm -> ../init.d/gpmlrwxrwxrwx 1 root root 15 mar 27 17:58 S85httpd -> ../init.d/httpdlrwxrwxrwx 1 root root 15 mar 27 17:58 S85sound -> ../init.d/soundlrwxrwxrwx 1 root root 13 mar 27 17:58 S91smb -> ../init.d/smblrwxrwxrwx 1 root root 14 mar 27 17:58 S95innd -> ../init.d/inndlrwxrwxrwx 1 root root 19 mar 27 17:58 S99linuxconf -> ../init.d/linuxconflrwxrwxrwx 1 root root 11 mar 27 17:15 S99local -> ../rc.local29Les runlevels# Source function library.. /etc/rc.d/init.d/functions# See how we were called.case "$1" in start)[ -f /var/lock/subsys/kerneld ] && exit 0echo -n "Starting kerneld services: "daemon kerneldechotouch /var/lock/subsys/kerneld;;stop)echo -n "Stopping kerneld services: killproc kerneldechorm -f /var/lock/subsys/kerneld;;status)status kerneld;;restart)$0 stop$0 start;;reload)killall -HUP kerneld;;*)

30

Le systme va reprer tous les noms de liens qui commencent par S (start). ce sont les services lancer, suivant les chiffres croissants, il va donc reprer en premier S01kerneldqui pointe vers le script /etc/rc.d/init.d/kerneld suivant:#! /bin/sh# chkconfig: 12345 01 98# description: The kerneld daemon automatically loads kernel modules \# as the system needs them. This deamon should always \# be kept running, or many features of the system will \# stop working.# processname: kerneld# config: /etc/conf.modules autoreload

31Les runlevelsLes runlevelsecho "Usage: kerneld {start|stop|status|restart} exit 1esacexit 0

Ce script va tre appel avec comme argument startce qui aura pour effet ici de lancer le service kerneld, le message "Starting kerneld services:" devrait apparatre au boot lors du passage l'tat de marche 3.Aprs S01kerneld c'est S10network qui va tre appel et ainsi de suite.

32Les runlevelsPassage un tat de marche infrieur

Supposons que l'administrateur veuille passer de l'tat de marche 3 l'tat de marche 1 (single user)pour raliser des tches d'administration. Le systme va jeter un coup d'oeil dans /etc/rc.d/rc3.d et excutez tous les scripts dont les noms des liens commencent par K et ceci dans l'ordre croissant.Ce qui donne (voir liste plus haut), K20ruserd excut en premier puis, K20rwhod et ainsi de suite, tous ces scripts sont appels avec l'argument stop pour stopper les services. Le systme va ensuite dans le rpertoire /etc/rc.d/rc2.det appelez les scripts dont le nom du lien commence par K, pareil ensuite pour le rpertoire /etc/rc.d/rc.1.d.

33Lancement d'un service personnalis

Si vous voulez configurer votre systme en lanant automatiquement vos propres applications au dmarrage, vous devez d'abord crire un script totod dans /etc/rc.d/init.d qui aura cette tte l (en admettant que votre service se nomme totod) :

34Lancement d'un service personnalis#! /bin/shSource function library. ./etc/rc.d/init.d/functionsScript qui dfinit les fonctions killproc, daemon, status, ...# See how we were called.case "$1" inVrification de l'argument (start pour lancer votre service et stop pour l'arrter)start)[ -f /var/lock/subsys/totod ] && exit 0Si le service est lanc on cre un fichier lock, on vrifie ici si le fichier existe pour ne pas lancer le service une deuxime fois.echo -n "Starting totod services: "daemon totodLancement de votre appli cation (daemon est dfini dans /etc.rc.d/init.d/functions)echotouch /var/lock/subsys/totodCration du fichier lock;;

35Lancement d'un service personnalisstop)echo -n "Stopping totod services: "En cas d'arrt du service, on affiche le messagekillproc totodArrt de totod (killproc dfini dans /etc/rc.d/init.d/functions)echorm -f /var/lock/subsys/totod;;Suppression du fichier lockstatus)status totod;;Pour avoir l'tat de l'application (status dfini dans functions)restart)$0 stop$0 start;;Pour relancer l'application, noter que $0 correspond au nom du scriptreload)killall -HUP totod;;Pour recharger l'application (voir killall dans functions)*)echo "Usage: totod {start|stop|status|restart}"exit 1esacSi on appelle le script sans faire appel aux arguments start, stop, status ou restart, rappel de ces arguments.exit 0

36Lancement d'un service personnalisOn admet maintenant que vous vouliez lancer votre service uniquement l'tat de marche 3, 4 et 5 et l'arrter quand vous voulez passer l'tat de marche 6, 2 et infrieur.Pour cela pour l'tat de marche 3 vous allez crer un lien dans /etc/rc.d/rc3.dln -s /etc/rc.d/init.d/totod /etc/rc.d/rc3.d/S99totod

37Lancement d'un service personnalisVotre service sera donc celui qui sera lanc en dernier au passage l'tat de marche 2 3. Faire de mme dans les rpertoires rc4.d et rc5.d. Ensuite tapez pour l'tat de marche 2 :ln -s /etc/rc.d/init.d/totod /etc/rc.d/rc2.d/K01totodVotre service sera donc celui qui sera arrt en premier au passage de l'tat de marche 3 2. Faire de mme dans les rpertoires rc0.d, rc1.d et rc6.d.Rappelons que quand le lien commence par S le script est appel avec l'argument start et par K avec l'argument stop. 38Lancement d'un service personnalisMaintenant vous avez un moyen plus simple avec la commande chkconfig, vous devez rajouter en entte du fichier (aprs la ligne #! /bin/sh)# chkconfig: 60 40Pour lancer la commande aux tats de marche 3, 4 et 5, il suffira de taper :chkconfig --level 345 totod onEt pour l'arrter aux tats de marche 0, 1, 2 et 6 il suffira de taper :chkconfig --level 0126 totod offC'est les liens S60totod et K40totod qui seront ainsi crs.

39