Démarrage et arrêt système linux Le boot, init et les runlevel Si nous partons de la base, voici les grandes lignes du démarrage : on appuie sur le bouton de mise en marche. La machine s'allume et va lire le bios, qui va initialiser très basiquement certains composants, dont le disque dur. Le bios va ensuite lire les 512 premiers octets du disque dur, ce qu'on appelle le MBR, pour Master Boot Record. Ce MBR contient la table des partitions, ainsi qu'un petit programme appelé Boot Loader. Le Boot Loader va permettre de démarrer sur la partition où se situe notre système d'exploitation. Dans le cas de Windows, le Boot Loader utilisé se nomme NTLDR (NT Loader). Par défaut, NTLDR considère toujours Windows comme le seul système d'exploitation présent. Ainsi, il lance automatiquement la partition où se situe Windows, l'étape est donc invisible pour l'utilisateur lambda. Lorsque l'on a installé une distribution GNU/Linux, nous avons installé sur le MBR un Boot Loader, souvent GRUB, qui va nous demander de choisir de démarrer sur un des systèmes présents. Une fois le système choisi, le Boot Loader va sélectionner la partition où se situent ce système et le lancer. La première chose à faire consiste à appeler le noyau Linux. Pour rappel, le noyau gère les ressources de l'ordinateur, c'est pour cela qu'il est fondamental de l'initialiser dès le départ. Celui-ci est présent sous forme compressée dans /boot. Il va s'auto-décompresser, démarrer, utiliser un environnement ultra-minimal, l'initrd, pour charger les modules nécessaires au montage du système de fichier, démonter l'initrd, et monter la partition système. Il ne reste plus qu'à lancer le premier processus, init, qui sera le père de tous les autres processus. Notre système est prêt, c'est désormais lui qui va prendre la relève du noyau pour le démarrage. Le chargement du noyau Linux Lorsque l'on allume son ordinateur, la carte mère effectue un test automatique qui se charge de tester le bon fonctionnement des composants de la carte mère (processeur, mémoire, etc.). Ce test s'appelle le POST (Power-On Self Test). Si tout est OK, ce test se termine par un (et un seul) bip. Ceci fait, le BIOS charge ensuite le programme stocké dans le boot secteur du disque dur. Arrêt démarrage système Linux 1 Sur architecture PC, il existe deux programmes permettant de charger le noyau Linux, ou un autre système d'exploitation. LILO LILO (LInuxLOader) a été le premier logiciel permettant d'effectuer cette opération. Exemple de fichier de configuration de Lilo (/etc/lilo.conf) : boot=/dev/hda map=/boot/map install=/boot/boot.b default=linux prompt timeout=50 message=/boot/message # Premiere section : boot Windows other=/dev/hda1 label=windows table=/dev/hda # Deuxieme section: boot Linux image=/boot/vmlinuz label=linux root=/dev/hda4 append="acpi=off" read-only GRUB Aujourd'hui, on utilise le programme GRUB (GRandUnifiedBootloader) car il offre des possibilités supplémentaires. Contrairement à Lilo, Grub sait lire une partition Linux (ext2/3, XFS, reiserFS ...) afin de charger son fichier de configuration (/boot/grub/menu.lst) et le(s) noyau(x) Linux. Exemple de fichier de configuration de Grub (/boot/grub/menu.lst) default 0 timeout 30 color cyan/blue white/blue # Premiere section : Linux titleDebian GNU/Linux, kernel 2.6.18-5-686 root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 roacpi=off initrd /initrd.img-2.6.18-5-686 savedefault Arrêt démarrage système Linux 2 # Deuxieme section : Linux mode mono-utilisateur titleDebian GNU/Linux, kernel 2.6.18-5-686 (single-user mode) root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 roacpi=off single initrd /initrd.img-2.6.18-5-686 savedefault # Troisiemesection : Windows title Windows NT/2000/XP (loader) root (hd0,0) savedefault makeactive chainloader +1 L'init de la RedHat. Niveaux d'exécution System V À tout moment, votre système Linux se trouve à un niveau d'exécution donné. La distribution RedHat en définit 7 : 0 : Hors service : l'alimentation peut alors être coupée dans danger 1 : Mode mono-utilisateur (pour administration système) 2 : Mode multi-utilisateurs : fonctionnement normal sans NFS (identique au niveau 3 mais sans les fonctionnalités réseau). 3 : Mode multi-utilisateurs : fonctionnement normal pour systèmes en réseau, partageant leurs ressources avec d'autres systèmes. 4 : Inutilisé 5 : X11 6 : Mise hors service et redémarrage : sert durant le redémarrage du système à partir d'un niveau de fonctionnement (2, 3, 4, 5). Le système passera ensuite au niveau 0. La commande telinit On peut changer de niveau d'exécution grâce à la commande telinit (qui n'est qu'un lien sur init) : # telinit 2 placera le système en Mode multi-utilisateurs sans réseau. Bien entendu, seul l'administrateur système (root) peut exécuter cette commande... Arrêt démarrage système Linux 3 Mais telinit dispose de fonctionnalités supplémentaires : il permet de demander à init effectuer une relecture de /etc/inittab, ce qui est pratique après une modification de ce fichier grâce à la commande # telinit q Connaître le niveau d'exécution courant En réalité, il existe plus que 7 niveaux d'exécution : la commande man init nous apprend en effet qu'il existe aussi les niveaux 7, 8 et 9 (non documentés) et S (ou s) qui correspond au mode mono-utilisateur. La plupart des Unix utilisent une version de la commande who qui permet d'indiquer le niveau d'exécution courant : # who -r . run level 3 Oct 17 18:00 3 0 S Cette sortie indique que le 17 Octobre, le système est passé du niveau de fonctionnement S au niveau 3. Le 0 indiquent que ce passage s'est effectué du premier coup. Malheureusement, l'option -r n'est pas disponible sous linux... Aussi, il faut utiliser une autre commande pour avoir cette information : # runlevel runlevel N2 Indique que le système est au niveau 2 et qu'il n'y a pas de niveau précédent. # telinit 3 # runlevel 23 Ici, on est passé au niveau 3, le niveau précédent était le niveau 2. Arrêter ou redémarrer le système Pour arréter le systeme : Commun à tous les UNIX : shutdown Spécifique Linux et systèmes récents : halt et reboot # shutdown -h now "changement de noyau" & NB : on rajoute un & pour garder la main Il existe différentes options telles que : Arrêt démarrage système Linux 4 -h (h pour halt) : arrêt immédiat -r now (r pour reboot) : redémarrage immédiat -h +10 : arrêt différé dans 10 minutes -h 10:30 : arrêt à 10h30 -c : annule l'arrêt Arrêt démarrage système Linux 5