Support de cours BTS2GNU/LINUX Essaadi Driss Support de cours Introduction Rapp

Support de cours BTS2GNU/LINUX Essaadi Driss Support de cours Introduction Rappels : 1. Le chargement du noyau Linux 2. Shell Script Partie 1 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. Sur architecture PC, il existe deux programmes permettant de charger le noyau Linux, ou un autre système d'exploitation. LILO LILO (LInux LOader) 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 # Troisieme section: boot Linux - mode mono-utilisateur image=/boot/vmlinuz label=linux_single_user root=/dev/hda4 append="single acpi=off" read-only Ce fichier se compose de paramètres communs (disque dur de boot, timeout ...) et de sections pour chaque système d'exploitation à booter. Chaque fois que l'on modifie ce fichier, il faut exécuter la commande lilo afin de re-écrire dans le boot secteur l'emplacement exact du noyau sur le disque dur. # lilo Added windows Added linux Added linux_single_user Support de cours BTS2GNU/LINUX Essaadi Driss GRUB Aujourd'hui, on utilise le programme GRUB (GRand Unified Bootloader) 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 title Debian GNU/Linux, kernel 2.6.18-5-686 root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 ro acpi=off initrd /initrd.img-2.6.18-5-686 savedefault # Deuxieme section : Linux mode mono-utilisateur title Debian GNU/Linux, kernel 2.6.18-5-686 (single-user mode) root (hd1,0) kernel /vmlinuz-2.6.18-5-686 root=/dev/sdb2 ro acpi=off single initrd /initrd.img-2.6.18-5-686 savedefault # Troisieme section : Windows title Windows NT/2000/XP (loader) root (hd0,0) savedefault makeactive chainloader +1 A la différence de Lilo, il n'est pas nécessaire d'exécuter une commande particulière lorsque l'on modifie ce fichier. les messages du noyau Linux Une fois chargé en mémoire, le noyau va se charger de détecter et d'initialiser les composants de la carte mère et les périphériques présents. Ces messages sont affichés sur l'écran lors du démarrage. La commande dmesg permet de consulter ces messages ultérieurement. Exemples : # dmesg Linux version 2.6.18-5-686 (Debian 2.6.18.dfsg.1-13) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Fri Jun 1 00: 47:00 UTC 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000008f000 (usable) ... A noter que la commande dmesg affiche tous les messages détectés durant le boot, ainsi que les messages du noyau affichés par la suite (cad durant le fonctionnement du système). Dans certains cas, l'affichage de la commande dmesg peut être tronqué (notamment les messages affichés durant le boot). Dans ce cas, on peut consulter le fichier /var/log/dmesg qui ne contient que les messages du boot. Le processus init Une fois que le noyau a détecté l'ensemble des composants de l'ordinateur, il lance le processus du système : init. Le processus init a comme particularité d'avoir le PID (Process IDentifiant) n°1 (c'est le premier processus), et de fait, il est le père de tous les autres. Le processus dispose d'un fichier de configuration, c'est le fichier /etc/inittab. La syntaxe de ce fichier est la suivante : code:niveau:action:commande Support de cours BTS2GNU/LINUX Essaadi Driss Exemple de fichier /etc/inittab : # Indique le runlevel par défaut (ici le 2) id:2:initdefault: # Script d'initiation du boot du système si::sysinit:/etc/init.d/rcS # mode mono-utilisateur ~~:S:wait:/sbin/sulogin # runlevel 0 : arret du système l0:0:wait:/etc/init.d/rc 0 # runlevel 1 : mono-utilisateur l1:1:wait:/etc/init.d/rc 1 # runlevel 2 : runlevel par défaut sur Debian l2:2:wait:/etc/init.d/rc 2 # runlevel 3, 4 et 5 : autres runlevels disponible l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 # runlevel 6 : redémarrage du système l6:6:wait:/etc/init.d/rc 6 # mode emergency z6:6:respawn:/sbin/sulogin # lance le reboot quand on appuie sur CTRL-ALT-DEL ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Démarre les tty en mode console 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 Les runlevels et les scripts de démarrage Une fois que le système a effectué le runlevel S (initialisation minimale, comme par exemple vérifier l'intégrité des systèmes de fichiers), il va dans le runlevel 2 (Debian). Les niveaux de Runlevel  S : Initialisation commune à tous les runlevels  0 : Arrêt de la machine  1 : Single-User  2,3,4,5 : Fonctionnement normal  6 : Reboot de la machine Commandes pour manipuler les runlevel La commande runlevel permet de connaître le runlevel dans lequel on est : # runlevel N 2 Dans cet exemple, on est dans le runlevel n°2 (fonctionnement sous Debian). Le N nous indique le runlevel précédent (N (No) : pas de runlevel précédent) La commande init ou la commande telinit permet de changer de runlevel. Exemple : # init 6 Arrêter ou redémarrer le système Pour arrêter le système :  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 :  -h (h pour halt) : arrêt immédiat  -r now (r pour reboot) : redémarrage immédiat Support de cours BTS2GNU/LINUX Essaadi Driss  -h +10 : arrêt différé dans 10 minutes  -h 10:30 : arrêt à 10h30  -c : annule l'arrêt Sommaire du démarrage. Image complète du processus de démarrage d'un système UNIX: 1. le premier secteur est chargé en mémoire RAM et exécuté -l'invite LILO:GRUB apparaît, 2. le noyau est chargé depuis la liste de secteurs, 3. le noyau est exécuté et décompressé, 4. le noyau initialise les périphériques matériels, 5. le noyau monte le système de fichier racine, disons /dev/hda1, 6. le noyau exécute /sbin/init avec un PID=1, 7. init excécute tous les scripts du niveau d'exécution par défaut défini dans /etc/inittab, 8. init engendre les programmes getty sur chaque terminal. 9. getty affiche l'invite de connexion, 10.getty exécute /bin/login pour authentifier l'utilisateur, 11.le programme login lance un shell. Partie 2 Rappel Shell Scipt  Exercices d’introduction Existance d’un fichier #!/bin/sh echo -n "Entrez un nom de fichier: " read file if [ -e "$file" ]; then echo "Le fichier existe!" else echo "Le fichier n'existe pas, du moins n'est pas dans le répertoire d'exécution du script" fi exit 0 Les opérateurs logiques Il y a en 3 :  le et logique : -a ou &&  le ou logique : -o ou || Support de cours BTS2GNU/LINUX Essaadi Driss  le non logique : ! La structure : `if` Pour pouvoir voir la valeur d'une variable il faut faire précéder son nom du caractère « $ ». #!/bin/sh echo -n "Voulez-vous voir la liste des fichiers Y/N : " read ouinon if [ "$ouinon" = "y" ] || [ "$ouinon" = "Y" ]; then echo "Liste des fichiers :" ls -la elif [ "$ouinon" = "n" ] || [ "$ouinon" = "N" ]; then echo "Ok, bye! " else echo "Il faut taper Y ou N!! Pas $ouinon" fi La structure `while` La commande while exécute ce qu'il y a dans son bloc tant que la condition est respectée : #!/bin/sh cmpt=1 cm=3 echo -n "Mot de passe : " read mdp while [ "$mdp" != "ubuntu" ] && [ "$cmpt" != 4 ] do echo -n "Mauvais mot de passe, plus que "$cm" chance(s): " read mdp cmpt=$(($cmpt+1)) cm=$(($cm-1)) done echo "Non mais, le brute-force est interdit en France !!" exit 0 La structure `case` simples : case variable in Support de cours BTS2GNU/LINUX Essaadi Driss modèle [ | modèle] ...) instructions;; modèle [ | modèle] ...) instructions;; ... esac Pour vous donner une idée précise de ce que peuvent réaliser toutes ces instructions, voici un petit script censé refaire un prompt avec quelques commandes basiques : #!/bin/bash clear echo echo "#################### Script ############################" echo echo "#############################" echo -n "LOGIN: " read login echo -n "Hôte: " read hote echo "#############################" echo echo "### Pour l'aide tapez help ###" echo while [ 1 ]; do # permet une boucle infinie echo -n ""$login"@"$hote"$ " # qui s'arrête avec break read reps case $reps in help | hlp ) echo "A propos de TS --> about" echo "ls --> liste les fichiers" echo "rm --> détruit un fichier (guidé)" echo "rmd --> efface un dossier (guidé)" echo "noyau --> version du noyau Linux" echo "connect --> savoir qui s'est connecté dernièrement";; Support de cours BTS2GNU/LINUX Essaadi Driss ls ) ls -la;; rm ) echo -n "Quel fichier voulez-vous effacer : " read eff rm -f $eff;; rmd | rmdir ) echo -n "Quel répertoire uploads/Industriel/ support-de-cours-s53-s54 2 .pdf

  • 12
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager