Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:gnu-linux [06/05/2013 09:28] smolski [Le noyau] |
doc:systeme:gnu-linux [06/05/2013 18:24] smolski [Le PC] |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
===== Le PC ===== | ===== Le PC ===== | ||
- | Un est une machine qui écrit des 0 et des 1 dans un disque et une carte graphique pour nous permettre de les lire. \\ | + | Un PC est une machine qui écrit des 0 et des 1 dans un disque et qui utilise une carte graphique pour nous permettre de les lire sur un écran. \\ |
===== Système d'exploitation ===== | ===== Système d'exploitation ===== | ||
Ligne 148: | Ligne 148: | ||
===== Le processus init ===== | ===== Le processus init ===== | ||
- | Une fois que le noyau a fini tout son travail d'initialisation, il lance alors un programme qui va devenir le père de tous les autres processus et portera l'identifiant de processus (le PID) 1. | + | Une fois que le noyau a fini l'initialisation, il lance le programme ''init'' qui va devenir le père de tous les autres processus et portera l'identifiant((le PID)) 1. \\ |
+ | Pour trouver //init//, le //noyau// va lancer sa recherche dans ces répertoires : | ||
+ | * /sbin/init | ||
+ | * /etc/init | ||
+ | * /bin/init | ||
+ | * /bin/sh | ||
- | Ce programme s'appelle généralement init. Le noyau va en fait essayer de lancer successivement les programmes suivants : | + | Dès qu'il trouve //init//, le //noyau// lui passe immédiatement le contrôle de la suite des évènements. \\ |
+ | - S'il ne le trouve pas, le noyau tentera de lancer [[manuel:shell | un shell]] pour permettre un accès au système. | ||
+ | - Si le shell ne fonctionne pas, le noyau indique l'erreur et s'arrête. | ||
- | /sbin/init | + | Pour modifier la recherche on utilise l'option du noyau **init=** en lui indiquant le chemin complet((Voir : [[manuel:repertoire | Les chemins absolus et relatifs en détail.]])) de l'exécutable à lancer. |
- | /etc/init | + | |
- | /bin/init | + | |
- | /bin/sh | + | |
- | Dès qu'un de ceux-là est lancé avec succès, les autres ne sont même pas testés car le contrôle est passé au programme. | + | ==== Configuration d'init ==== |
- | On voit que le programme init est cherché dans différents répertoires (/sbin, /etc et finalement /bin). \\ | + | Le fichier //init// se configure dans le répertoire : ''/etc/inittab''. \\ |
- | * S'il ne se trouve dans aucun de ceux-là, le noyau tente de lancer un shell afin que l'utilisateur ait accès au système. | + | Exemple de configurations : |
- | * Si cela échoue également, le noyau affiche un message d'erreur et s'arrête. | + | |
- | + | ||
- | Pour pouvoir indiquer un autre programme que ceux-là, il faut utiliser l'option du noyau **init=** vue précédemment. On lui passe en paramètre le chemin complet de l'exécutable à lancer. | + | |
- | + | ||
- | Le comportement d'init se configure à l'aide du fichier ''/etc/inittab''. En voici un exemple d'extrait : | + | |
<code> | <code> | ||
id:5:initdefault: | id:5:initdefault: | ||
Ligne 180: | Ligne 179: | ||
ca::ctrlaltdel:/sbin/shutdown -t3 -r now</code> | ca::ctrlaltdel:/sbin/shutdown -t3 -r now</code> | ||
- | + | Explication en tableau : | |
- | Chaque ligne est construite de la même manière avec les champs suivants : \\ | + | |
- | Format dans /etc/inittab | + | |
^Position ^Nom ^Description ^ | ^Position ^Nom ^Description ^ | ||
- | |1 |Identifiant |Une chaîne de caractère choisie par l'utilisateur (sauf dans certains cas particuliers) et permettant d'identifier la ligne.| | + | |1 |Identifiant |Une chaîne de caractère choisie par l'utilisateur (sauf dans certains cas particuliers) et permettant d'identifier la ligne. | |
- | |2 |Niveaux d'exécution |Les niveaux d'exécution (détaillés dans le chapitre suivant) pour lesquels cette ligne doit être prise en compte.| | + | |2 |Niveaux d'exécution |Les niveaux d'exécution pour lesquels cette ligne doit être prise en compte. | |
- | |3 |Action |Contient une des actions prédéfinies indiquant ce qui doit être fait.Le tableau suivant les liste.| | + | |3 |Action |Contient une des actions prédéfinies indiquant ce qui doit être fait. | |
- | |4 |Programme |Le programme qui doit être exécuté lorsque l'on rentre dans les niveaux indiqués.| | + | |4 |Programme |Le programme qui doit être exécuté lorsque l'on rentre dans les niveaux indiqués. | |
+ | |||
+ | Certains champs peuvent être ignorés selon ce qui est choisi. | ||
+ | |||
+ | ==== Configuration d'inittab ==== | ||
- | Selon l'action choisie, le comportement sera différent et certains champs peuvent être ignorés. Voici la description des actions le plus souvent utilisées. | + | Tableau de configuration pour ''/etc/inittab'' (//les configurations principales...//) |
- | Actions pour /etc/inittab | + | |
^Action ^Champs ignorés ^Description ^ | ^Action ^Champs ignorés ^Description ^ | ||
|initdefault |Programme |Permet d'indiquer le niveau d'exécution à utiliser par défaut. Le champs Niveaux d'exécution contiendra alors une seule valeur qui sera ce niveau par défaut.| | |initdefault |Programme |Permet d'indiquer le niveau d'exécution à utiliser par défaut. Le champs Niveaux d'exécution contiendra alors une seule valeur qui sera ce niveau par défaut.| | ||
Ligne 197: | Ligne 197: | ||
|respawn |Aucun |Semblable à wait si ce n'est qu'à chaque fois que le programme se termine, init le relancera.| | |respawn |Aucun |Semblable à wait si ce n'est qu'à chaque fois que le programme se termine, init le relancera.| | ||
|ctrlaltdel |Niveaux d'exécution |Permet d'indiquer une commande devant être exécutée lorsque l'utilisateur presse la combinaison de touches Ctrl-Alt-Suppr.| | |ctrlaltdel |Niveaux d'exécution |Permet d'indiquer une commande devant être exécutée lorsque l'utilisateur presse la combinaison de touches Ctrl-Alt-Suppr.| | ||
- | Les niveaux d'exécution (Haut de page)| | ||
- | Sur les systèmes GNU/Linux, on a plusieurs niveaux d'exécution possibles (appelés aussi modes d'exécution). Il s'agit en fait de mode de démarrage différents qui diffèrent les uns des autres par les services qui y sont lancés. | + | ===== Les modes d'exécution ===== |
- | La convention choisie est celle appelée ''System V init'' qui définit la manière dont doivent être gérés les différents niveaux. \\ | + | Selon les services qui sont lancés, plusieurs modes d'exécution sont possibles. \\ |
- | Dans le fichier **inittab** donné en exemple dans le chapitre précédent, on peut voir que c'est le programme ''/etc/rc.d/rc'' qui gère cela. Il est lancé avec en paramètre le numéro de niveau lorsque l'on a besoin de basculer dans un certain niveau d'exécution. | + | La convention appliquée est appelée ''System V init''. Elle définit la gestion des différents niveaux. |
+ | |||
+ | Dans le fichier **inittab** c'est le programme ''/etc/rc.d/rc'' qui gère cela. Il est lancé avec un numéro en paramètre qui défini le niveau d'exécution attribué. | ||
+ | |||
+ | Il y a habituellement 7 niveaux d'exécution numérotés de 0 à 6. \\ | ||
+ | |||
+ | ==== Tableau des niveaux d'exécution ==== | ||
- | On trouve en général 7 niveaux d'exécution numérotés de 0 à 6. \\ | ||
- | Leur utilisation est libre, mais traditionnellement on a l'utilisation suivante : \\ | ||
- | Niveaux d'exécution | ||
^Numéro ^Désignation ^Description ^ | ^Numéro ^Désignation ^Description ^ | ||
- | |0 |Arrêt |Passer dans ce niveau provoque un arrêt de la machine.| | + | |0 |Arrêt |Ce niveau provoque un arrêt de la machine.| |
- | |1 |Maintenance |On a directement accès à un shell, mais quasiment aucun service n'est lancé. Utile pour le dépannage en cas de problème important.| | + | |1 |Maintenance |Accès à un shell sans aucun service de lancé. Utilisé pour le dépannage.| |
- | |2 |Multi-utilisateurs simple |Plusieurs utilisateurs peuvent se connecter en mode texte. Mais les services sont limités (souvent pas de réseau par exemple).| | + | |2 |Multi-utilisateurs simple |Ouverture à plusieurs utilisateurs en mode texte. Mais les services sont limités (pas de réseau par exemple).| |
- | |3 |Multi-utilisateurs complet |Tous les services nécessaires sont démarrés et plusieurs utilisateurs peuvent se connecter en mode texte.| | + | |3 |Multi-utilisateurs complet |Ajoute le démarrage de tous les services nécessaires pour plusieurs utilisateurs connectés en mode texte.| |
- | |4 |Mode utilisateur |Généralement non utilisé, il peut être librement utilisé.| | + | |4 |Mode utilisateur |Librement utilisé.| |
- | |5 |Graphique |Identique au mode 3, mais les utilisateurs peuvent se connecter en mode graphique et disposer d'un gestionnaire de fenêtre.| | + | |5 |Graphique |Identique au mode 3. Lles utilisateurs peuvent se connecter en mode graphique et disposer d'un gestionnaire de fenêtre.| |
- | |6 |Redémarrage |Passer dans ce niveau redémarre la machine.| | + | |6 |Redémarrage |Redémarre la bécane.| |
- | Après le démarrage, le système se trouve dans le mode indiqué par **initdefault** dans ''/etc/inittab''. \\ | + | ==== mode initdefault ==== |
- | Pour pouvoir changer, il existe un outil appellé //telinit//. Il suffit de le lancer en lui passant en paramètre le numéro du niveau souhait. Par exemple : | + | |
+ | Après le démarrage, le système se trouve dans le mode indiqué par **initdefault** dans ''/etc/inittab''. | ||
+ | |||
+ | Pour le changer, il existe un outil appellé //telinit//. Il suffit de le lancer en lui passant en paramètre un numéro du niveau. \\ | ||
+ | Par exemple : | ||
<code bash> | <code bash> | ||
telinit 6</code> | telinit 6</code> | ||
- | Permet de redémarrer la machine. | + | Redémarre la machine. |
+ | |||
+ | ==== Le programme /etc/rc.d/rc ==== | ||
- | Bien qu'il y ait des conventions pour ce qui doit être fait dans chaque mode, cela peut être entièrement changé. Mais pour comprendre comment influer sur ce comportement, il faut d'abord savoir ce que fait le programme ''/etc/rc.d/rc'' (ou un autre selon les systèmes et le contenu du fichier inittab). | + | Pour changer ce qui doit être fait dans chaque mode, il est nécessaire de savoir ce que fait le programme ''/etc/rc.d/rc'' contenu dans le fichier //inittab//. |
Le programme gérant les niveaux d'exécution va consulter le contenu du répertoire ''/etc/rc.d/rcX.d'' (où X correspond au numéro du niveau devant être changé). \\ | Le programme gérant les niveaux d'exécution va consulter le contenu du répertoire ''/etc/rc.d/rcX.d'' (où X correspond au numéro du niveau devant être changé). \\ |