A Dmarrage dun systme UNIX : /etc/inittab .............................................................................. 2
Les tapes du dmarrage d'un systme Unix ............................................................................... 2 Lancements raliss au niveau de chaque session utilisateur .................................................... 2 Le fichier /etc/inittab ..................................................................................................................... man inittab ........................................................................................................................... !xemple de fichiers inittab ................................................................................................. " #un level ou niveau d'excution ....................................................................................... $ %onditions d'activation des processus d'inittab ................................................................... & B Dmarrage des services sous inu! .............................................................................................. " 'canisme associ au dmarrage automatique des services ....................................................... ( # Dmarrage des services rseau sous inu! ................................................................................ $% Le )super serveur) xinetd ............................................................................................................ *+ D Dmarrage dune session uti&isateur .......................................................................................... $$ ,ichier )profile) selon )man bash) ............................................................................................. *2 Groupe Isaip-Esaip $ / *2 A Dmarrage dun systme UNIX : /etc/inittab Les tapes du dmarrage d'un systme Unix -oot -./0 en #/' %hargeur du systme d1exploitation'-# du disque d1amor2age 3ou #/' de la carte rseau4 !xcution du noyau Unix Lancement de l'ordonnanceur shed Lancement du processus init pour un niveau d)excution 3run &eve&4 donn et excution des commandes de /etc/inittab Lancements raliss au niveau de chaque session utilisateur 0urveillance des terminaux5 getty /etc/gettydefs /etc/issue 3message4 'ot de passe .... 5 login /etc/pass6d /etc/motd 3message4 Lancement du 0hell 5 bash /etc/profile 78/'!/.profile 3ou 78/'!/.bash9profile4 Les premiers processus lancs sont donc l'ordonnanceur s'ed: puis le processus init. init est l'anc;tre commun de tous les processus qui seront ultrieurement crs sur le systme 3voir par exemple le rsultat de la commande (stree )(4 Groupe Isaip-Esaip 2 / *2 Dmarrage dun systme UNIX : /etc/inittab Le fichier /etc/inittab Les actions du processus init sont dtermines par le contenu du fichier /etc/inittab: dont un exemple est donn ci<aprs 5 man inittab
The inittab file describes which processes are started at bootup and during normal operation (e.g. /etc/init.d/boot, /etc/init.d/rc, gettys...). Init(8) distinguishes multi ple runlevels, each of which can have its own set of pro cesses that are started. Valid runlevels are !" plus #, $, and % for ondemand entries. #n entry in the inittab file has the following format& id:runlevels:action:process 'ines beginning with ()* are ignored. id is a uni+ue se+uence of ,!- characters which iden tifies an entry in inittab (for versions of sysvinit compiled with libraries . /.0.,8 or a.out libraries the limit is 0 characters). 1ote& 2or gettys or other login processes, the id field should be the tty suffi3 of the corresponding tty, e.g. , for tty,. 4therwise, the login accounting might not wor5 correctly. runlevels lists the runlevels for which the specified action should be ta5en. action describes which action should be ta5en. process specifies the process to be e3ecuted. If the pro cess field starts with a (6* character, init will not do utmp and wtmp accounting for that process. This is needed for gettys that insist on doing their own utmp/wtmp house5eeping. This is also a historic bug. The runlevels field may contain multiple characters for different runlevels. 2or e3ample, ,07 specifies that the process should be started in runlevels ,, 0, and 7. The runlevels for ondemand entries may contain an #, $, or %. The runlevels field of sysinit, boot, and bootwait entries are ignored. Groupe Isaip-Esaip * / *2 Dmarrage dun systme UNIX : /etc/inittab Exemple de fichiers inittab = >he default runlevel is defined here id5?5initdefault5 = ,irst script to be executed: if not booting in emergency 3<b4 mode si55boot6ait5/etc/init.d/boot = /etc/init.d/rc ta@es care of runlevel handling = = runlevel + is 0ystem halt 3Ao not use this for initdefaultB4 = runlevel * is 0ingle user mode = runlevel 2 is Local multiuser 6ithout remote net6or@ 3e.g. C,04 = runlevel is ,ull multiuser 6ith net6or@ = runlevel " is Cot used = runlevel ? is ,ull multiuser 6ith net6or@ and xdm = runlevel $ is 0ystem reboot 3Ao not use this for initdefaultB4 = l+5+56ait5/etc/init.d/rc + l*5*56ait5/etc/init.d/rc * l25256ait5/etc/init.d/rc 2 l556ait5/etc/init.d/rc =l"5"56ait5/etc/init.d/rc " l?5?56ait5/etc/init.d/rc ? l$5$56ait5/etc/init.d/rc $ = 6hat to do in single<user mode ls5056ait5/etc/init.d/rc 0 DD505respa6n5/sbin/sulogin = 6hat to do 6hen %>#L<EL><A!L is pressed ca55ctrlaltdel5/sbin/shutdo6n <r <t " no6 = special @eyboard request 3Elt<UpErro64 = loo@ into the @bd<+.(+ docs for this @b55@brequest5/bin/echo )Feyboard #equest << edit /etc/inittab to let this 6or@.) = 6hat to do 6hen po6er fails/returns pf55po6er6ait5/etc/init.d/po6erfail start pn55po6erfailno65/etc/init.d/po6erfail no6 =pn55po6erfail5/etc/init.d/po6erfail no6 po55po6ero@6ait5/etc/init.d/po6erfail stop = for E#G/ UH0 sh5*2"?5po6erfail5/sbin/shutdo6n <h no6 >8! H/I!# .0 ,E.L.CG Groupe Isaip-Esaip + / *2 Dmarrage dun systme UNIX : /etc/inittab = getty<programs for the normal runlevels = JidK5JrunlevelsK5JactionK5JprocessK = >he )id) field 'U0> be the same as the last = characters of the device 3after )tty)4. *52"?5respa6n5/sbin/mingetty <<noclear tty* 252"?5respa6n5/sbin/mingetty tty2 52"?5respa6n5/sbin/mingetty tty "52"?5respa6n5/sbin/mingetty tty" ?52"?5respa6n5/sbin/mingetty tty? $52"?5respa6n5/sbin/mingetty tty$ = =0+5*2"?5respa6n5/sbin/agetty <L ($++ tty0+ vt*+2 = = Cote5 Ao not use tty& in runlevel : this virtual line = is occupied by the programm xdm. = = >his is for the pac@age xdmsc: after installing and = and configuration you should remove the comment character = from the follo6ing line5 =&55respa6n5L/etc/init.d/rx tty& = modem getty. = mo52?5respa6n5/usr/sbin/mgetty <s M"++ modem = fax getty 3hylafax4 = mo5?5respa6n5/usr/lib/fax/faxgetty /dev/modem = vbox 3voice box4 getty = .$5?5respa6n5/usr/sbin/vboxgetty <d /dev/tty.$ = .&5?5respa6n5/usr/sbin/vboxgetty <d /dev/tty.& = end of /etc/inittab L'identificateur de la ligne inittab compos de * ou 2 caractres doit ;tre unique dans toute la table. La commande associe N l'entre d'inittab peut ;tre un programme excutable ou un script shellO on pourra lui associer des paramtres. Aes commentaires peuvent ;tre insrs aprs le caractre = Groupe Isaip-Esaip , / *2 Dmarrage dun systme UNIX : /etc/inittab Run level ou niveau d'excution Le numro de run &eve& : ou niveau d'excution du systme va permettre de s&ectionner les processus activs par init . %e numro peut prendre les valeurs suivantes 5 +..$ niveau de configuration multiutilisateur a:b:c voir #!'E#PU!0 ci<aprs Eu lancement du systme: init demande N l'oprateur: sur la console systme: quel est le numro de runlevel choisi5 seules les lignes d'inittab prsentant le numro choisi 3ou ne comportant aucun numro4 donneront naissance N un processus. 0i l'oprateur spcifie le niveau s: le systme dmarrera en monoutilisateur 3single user4 Le processus init ne demandera pas le niveau de configuration si le fichier inittab contient une ligne dont la condition d'activation est initdefault5 c'est le niveau de configuration associ N cette ligne qui est dans ce cas automatiquement choisi. !n mode superutilisateur: il sera ensuite possible de changer le niveau de configuration actif par la commande init -nouveau.numro/ >ous les processus qui se trouvent alors exclus seront tus. #!'E#PU!05 *. .l est possible d'associer plusieurs numros de run &eve& N chaque ligne d0inittab. 2. Les niveaux a:b et c ne sont pas de vrai niveaux de configuration: mais ils permettent: par la commande init de lancer facilement les processus qui leur sont associs 3un changement de niveau ne les dtruira pas non plus4 . La commande init 1 demande au processus init de relire inittab 5 elle sera utilise N chaque fois que l'on aura modifi ce fichier: pour qu'init prenne immdiatement en compte les modifications. init examine automatiquement la table dans les cas suivants 5 au chargement du systme: N l'apparition d'un dfaut secteur lorsque meurt l'un des processus lancs par init lorsque l1oprateur le demande explicitement par la commande init q Groupe Isaip-Esaip 2 / *2 Dmarrage dun systme UNIX : /etc/inittab Conditions d'activation des processus d'inittab Un processus qui correspond au niveau de configuration choisi ne sera effectivement lanc que s'il satisfait aussi la condition spcifie au me champ d0inittab. Les conditions possibles sont les suivantes 5 sysinit 5 le processus associ est excut avant 1u0init n'essaie d'accder N la console pour demander le niveau de run5 normalement: l'action associe N cette entre doit permettre d'initialiser correctement la console systme. initde3au&t5 spcifie le niveau de run qui doit ;tre choisi automatiquement par inittab 3si cette entre n'existe pas: init demandera N l'oprateur de spcifier un numro4 boot5 le processus est excut une seule fois au dmarrage du systme boot4ait 5 m;me cas que ci dessus: mais en plus init attendra la mort de ce processus avant de continuer l'examen d0inittab. once5 ce processus sera lanc chaque fois qu'il y aura un changement de niveau de configuration 4ait 5 m;me cas que ci<dessus: mais init attendra la mort de ce processus avant de poursuivre la scrutation d0inittab. res(a4n 5 3engendrer: gnrer4 le processus est cr sans attente de la part d0init: N l'initialisation. lorsque le processus ainsi lanc meurt: il est automatiquement relanc: pourvu que le niveau de configuration le permette encore. ondemand5 est quivalent N res(a4n pour les pseudo<niveaux a5b ou cO les processus associs seront automatiquement relancs lorsqu'ils se termineront. o33 5 si le processus associ n'existe pas: il n'est pas crO s'il existe 3cas d'une modification d0inittab4: il est tu dans un dlai de 2+ secondes 3ce dlai lui permettant de s'autodtruire en sauvegardant ses donnes4 (o4er3ai& 5 init lance ce processus lorsqu'il re2oit le signal 6I789:: et poursuit sans attendre la scrutation d0inittab 3cette possibilit peut demander des options matrielles particulires: qui permettront par exemple de sauvegarder les buffers par sync ou de recopier le contenu de la mmoire sur disque4 (o4er4ait5 m;me chose que ci<dessus: mais init attend la fin du processus avant de continuer l'examen d0inittab. Groupe Isaip-Esaip ; / *2 Dmarrage dun systme UNIX : /etc/inittab B Dmarrage des services sous Linu Les services sous Linux sont dmarrs par l1intermdiaire de procdures situs dans le rpertoire /etc/rc.d/init.d 3ou /etc/init.d selon la distributions Linux4 !xemple de liste de procdures de dmarrage et d1arr;t des services 5 demoQmail D K &s /etc/rc.d/init.d anacron functions irda lpd nfs rusersd snmpd apmd gpm @dcrotate named nfsloc@ r6alld syslog arp6atch halt @eytable named.rpmsave pcmcia r6hod xfs atd identd @illall named.run portmap sendmail ypbind avgate inet @udRu netfs random single yppass6dd crond ipchains linuxconf net6or@ rstatd smb ypserv %hacune de ces procdures peut ;tre invoque avec le paramtre start ou sto( pour dmarrer ou arr;ter le service. A1autres paramtres sont ventuellement disponibles selon les procdures: et en gnral affichs lorsque l1on utilise la procdure sans paramtres. 0ur certaines distributions: il est aussi possible d1utiliser la commande service -nom du service/ !xemples 5 demoQmail D K /etc/rc.d/init.d/net6or@ Usage5 net6or@ SstartTstopTrestartTreloadTstatusTprobeU demoQmail D K /sbin/service net6or@ Usage5 net6or@ SstartTstopTrestartTreloadTstatusTprobeU .l est possible de prvoir un dmarrage automati1ue des services grVce N la commande ntsysv $
89999999999999: ;ervices <99999999999999= > ?uels services doivent @tre dAmarrAs > > automati+uement B > > > > C D 5udEu > > CFD linu3conf > > C D lpd > > CFD named > > C D netfs > > CFD networ5 > > C D nfs > G999999999999999999999999999999999999999H * ntsystv considre automatiquement les services du niveau de configuration courant 3run&eve& courant4 pour travailler sur un autre niveau il faut le prciser au lancement de la commande: par exemple ntsysv ..&eve& , . A1autres outils d1administration comme &inu!con3 ou 4ebmin 3red'at.con3ig: dra<con3 ou yastW4 permettent de paramtrer ainsi le dmarrage automatique des services. Groupe Isaip-Esaip " / *2 Dmarrage des services sous inu! 'canisme associ au dmarrage automatique des services L1activation ou la dsactivation du dmarrage automatique d1un service: pour le niveau de configuration *: va crer dans /etc/rc.d/rc*.d un &ien 3ou raccourci4 vers la procdure correspondante de /etc/rc.d/init.d/ 3respectivement pour les niveaux de configuration 2: " ou ?4W le nom du lien commencera par F si le service doit ;tre arr;t 3Fill4 le nom du lien commencera par 0 si le service doit ;tre dmarr 30tart4. Un numro dordre permet en plus de dterminer dans quel ordre les service doivent ;tre arr;ts ou dmarrs. !xemple 5 rootQmail K ls /etc/rc.d/rc.d lr6xr6xr6x * root root F"yppass6dd <K ../init.d/yppass6dd lr6xr6xr6x * root root F?smb <K ../init.d/smb lr6xr6xr6x * root root F"?arp6atch <K ../init.d/arp6atch lr6xr6xr6x * root root F?+snmpd <K ../init.d/snmpd lr6xr6xr6x * root root F$+lpd <K ../init.d/lpd lr6xr6xr6x * root root F$?identd <K ../init.d/identd lr6xr6xr6x * root root F&+nfsloc@ <K ../init.d/nfsloc@ lr6xr6xr6x * root root F&?netfs <K ../init.d/netfs lr6xr6xr6x * root root 0?+inet <K ../init.d/inet lr6xr6xr6x * root root 0??named <K ../init.d/named lr6xr6xr6x * root root 0&?@eytable <K ../init.d/@eytable lr6xr6xr6x * root root 0M+avgate <K ../init.d/avgate lr6xr6xr6x * root root 0M+sendmail <K ../init.d/sendmail lr6xr6xr6x * root root 0M?gpm <K ../init.d/gpm lr6xr6xr6x * root root 0(+xfs <K ../init.d/xfs Groupe Isaip-Esaip = / *2 Dmarrage des services sous inu! ! Dmarrage des services rseau sous Linu Le )super serveur) xinetd !inetd active les processus rpondant aux demandes des clients en exploitant les directives de /etc/!inetd.con3 et des diffrents fichiers de /etc/!inetd.d La signification des diffrents champs d'un paragraphe de /etc/!inetd.con3 est la suivante5 *. nom du service tel qu'il est dfini dans /etc/services 2. type de soc<et utilis 3stream ou datagram4 . nom du (rotoco&e utilis et dfini dans /etc/protocols ". dlai 4ait ou no4ait 5 un serveur dclar 6ait doit ;tre capable de satisfaire les requ;tes qui arrivent pour le m;me service pendant sa dure de vie: inetd ne doit pas dans ce cas lancer plus d'un serveur de ce type 3c'est le cas de tal@4. Hour le cas no6ait: inetd lancera autant de serveurs qu'il y a de requ;tes 3c'est le cas de telnet4. ?. le nom de &ogin donnant l'U.A et les droits avec lesquels s'excute le dmon 3souvent root4 $. le nom du fichier e!cutab&e pour le dmon 3interna& si !inetd assure lui<m;me ce service4 &. les (aramtres 3? maximum4 transmis au lancement du processus serveur 3dmon4 !xemple de configuration pour xinetd et telnetd demoI2orum&/etcJ ls -ld xinet* !rw!r!!r!! , root root "07 07!,!0 00&,K 3inetd.conf drw3r!3r!3 0 root root -L" 0-!-!08 ,/&00 3inetd.d demoI2orum&/etcJ ls xinetd.d chargen cvs echo netstat systat time!udp chargen!udp daytime echo!udp servers telnet vnc cups!lpd daytime!udp ftpd services time vsftpd demoQ,orum5/etcK cat !inetd.d/te&net = de3au&t: o33 = description5 >elnet is the old login server 6hich is .C0!%U#! and should = therefore not be used. Use secure shell 3openssh4. = .f you need telnetd not to )@eep<alives) 3e.g. if it runs over a .0AC X = uplin@4: add )<n). 0ee 'man telnetd' for more details. service te&net S soc@et9type Y stream protocol Y tcp 6ait Y no user Y root server Y /usr/sbin/in.telnetd disab&e > no U Groupe Isaip-Esaip $% / *2 Dmarrage des services rseau sous inu! D Dmarrage dune session uti"isateur L'examen de la table /etc/inittab permet de se rendre compte que chaque ligne de liaison srie: est surveille par un processus getty 3ou mingetty4 cr par inittab . = getty<programs for the normal runlevels = JidK5JrunlevelsK5JactionK5JprocessK = >he )id) field 'U0> be the same as the last = characters of the device 3after )tty)4. *52"?5respa6n5/sbin/mingetty <<noclear tty* 252"?5respa6n5/sbin/mingetty tty2 52"?5respa6n5/sbin/mingetty tty "52"?5respa6n5/sbin/mingetty tty" ?52"?5respa6n5/sbin/mingetty tty? $52"?5respa6n5/sbin/mingetty tty$ getty getty utilise un fichier de description des caractristiques des terninaux 5 /etc/gettyde3s? on trouvera en particulier dans ce fichier des indications sur la vitesse de transmission 3en bauds4 N utiliser: ainsi que le texte du message de login. !nfin le message d'accueil envoy sur les terminaux est le contenu du fichier /etc/issue. getty: par une fonction e!ec 324 : se trouve ensuite remplac par le programme &ogin . &ogin %e programme va interprter le contenu de /etc/pass6d et autoriser ou non la connexion: en fonction du mot de passe. 0i la connexion est ralise le contenu du fichier /etc/motd 3message of the day4 est affich sur l'cran. Huis une nouvelle fonction e!ec324 est excute: et la commande 3s'e&&4 associe N &0uti&isateur dans le fichier /etc/(ass4d: est lanceO il s'agit en gnral de l'interprteur de commandes /bin/sh ou /bin/bash bas' %e shell va excuter les procdures /etc/profile et 78/'!/.profile: puis attendre les commandes de l'oprateur. #emarquons que le s'e&&: grVce aux diffrentes fonctions e!ec@A ralises correspond au m;me processus que le processus getty qui fut cr par init. La mort de ce s'e&&: sera donc bien la mort d'un des fils d0init: ce qui va ractiver init: relancer l'examen d0inittab: et recrer un processus getty car la condition d'activation tait res(a4n. Groupe Isaip-Esaip $$ / *2 Dmarrage dune session uti"isateur ,ichier )profile) selon )man bash) Lorsque bas' est lanc comme shell de login interactif: ou comme shell non<interactif avec l'option <<login: il lit et excute tout d'abord les commandes se trouvant dans le fichier /etc/(ro3i&e s'il existe. Eprs lecture de ce fichier: il recherche B/.bas'C(ro3i&e5 B/.bas'C&ogin5 et B/.(ro3i&e5 dans cet ordre5 et excute les com mandes se trouvant dans le premier fichier existant et accessible en lecture. L'option <<noprofile peut ;tre utilise au dmarrage du shell pour emp;cher ce comportement. Lorsqu'un shell de login se termine: bash lit et excute les comman des du fichier B/.bas'C&ogout5 s'il existe. Puand un shell interactif dmarre sans ;tre un shell de login: bash lit et excute les commandes se trouvant dans B/.bas'rc s'il existe. %e comportement peut ;tre inhib N l'aide de l'option <<norc. L'option <<rcfile fichier forcera bash N excuter les commandes dans fichier plutZt que dans D/.bashrc. Puand bash est dmarr de manire non<interactive: pour lancer un script shell par exemple: il recherche la variable -E089!C[ dans l'environnement: dveloppe son contenu si elle existe: et considre cette valeur comme le nom d'un fichier N lire et excuter. -ash se comporte comme si la commande suivante se trouvait en dbut de script 5 if \ <n )7-E089!C[) ]O then . )7-E089!C[)O fi mais la valeur de la variable HE>8 n'est pas utilise pour rechercher le fichier. Groupe Isaip-Esaip $2 / *2 Dmarrage dune session uti"isateur