Vous êtes sur la page 1sur 12

Les procdures de dmarrage d'un systme Unix

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

Vous aimerez peut-être aussi