Le système d`exploitation linux

publicité
Le système d'exploitation linux
1. Introduction
Le système linux fait partie de la famille des systèmes unix, au même titre que le système MacOs X. C'est un système :
- multi-utilisateurs, plusieurs utilisateurs peuvent se connecter en même temps, soit par l'intermédiaire de consoles
virtuelles, soit à distance par l'interface réseau.
- multi-tâches, chaque programme en cours d'exécution, s'exécute au sein d'un processus. S'il est lancé deux fois, il
s'exécutera au sein de deux processus indépendants disposant chacun de leur propre zone de mémoire.
- multi-plate-forme, il existe des distributions linux pour les processeurs "familiaux" comme les intel x86 (compatibles PC à
partir du 386), les motorola 68xxx et les powerPC (macintoch), mais aussi pour les processeurs professionnels (technologie
64 bits et/ou RISC) ALPHA de compaq, SPARC de sun, RS d'ibm, MICROVAX de digital ...
2. Historique
1969. Version expérimentale de unix dans les laboratoires Bell.
1973. Réécriture de unix en C.
1978. Premières versions commerciales de unix : le "systeme V" de Bell et le "BSD" de l'université de Berkeley.
1986. Intégration de la première interface graphique pour unix (X11).
1991. Lancement du projet linux par "Linus Torwald" étudiant à l'université d'Helsinki
1994. Première version stable de linux.
1998. Sortie du noyau 2.2 de linux.
2001. Sortie du noyau 2.4 de linux.
3. Notion de noyau linux
Le noyau linux (kernel) est le coeur du système d'exploitation. C'est lui qui assure l'interfaçage entre la partie matérielle et la
partie logiciel. Le noyau linux assure toujours :
- la gestion de la mémoire.
- la gestion des processus.
- la gestion des périphériques.
- la gestion des réseaux.
Les pilotes (drivers) du matériel présents sur l'ordinateur peuvent être directement intégrés au noyau ou être ajoutés en tant que
"modules" externes.
Les noyaux livrés avec les distributions linux comportent un maximum de pilotes et sont compilés pour pouvoir fonctionner sur
le plus grand nombre d'ordinateurs possibles. Toutefois, un utilisateur de linux avancé peut (doit ??) recompiler son noyau pour
l'adapter exactement à ses besoins. Il est possible de gagner jusqu'à 100% de vitesse entre un linux basé sur un noyau
générique et un linux basé sur un noyau adapté à l'ordinateur.
4. Composants de linux
4.1. Type de partitions.
Le système linux est capable de lire, d'écrire et de s'exécuter sur un grand nombre de système de fichiers. Le tableau suivant,
présente les principaux types utilisables avec linux :@1. Représentation schématique du fonctionnement multi-utilisateurs de
linux.
Type
lecture
écriture
exécution
Commentaires
minix
oui
oui
oui
Type originel de linux. Obsolète aujourd'hui
ext2
oui
oui
oui
Extension de minix. Type par défaut pour l'installation
swap
oui
oui
non
Type particulier réservé au fichier d'échange de la mémoire
fat16
oui
oui
oui
Type DOS
fat32
oui
oui
oui
Type Windows95 et plus
ntfs
oui
non*
non
Type Windows2000 et XP. L'écriture est possible mais pas conseillée
iso9660
oui
non
non
Type des CDrom
ext3
oui
oui
oui
Version journalisée de l'ext2.
reiserFS
oui
oui
oui
Premier type journalisé pour linux. Utilisé par les linux pro
Une installation classique de linux nécessite deux partitions : une ext2 pour le système, une swap pour la mémoire virtuelle.
Linux est exécutable à partir d'une partition principale ou d'une partition logique.
4.2. Boot de linux.
Le système linux ne peut pas booter seul, il lui faut l'aide d'un ou plusieurs programmes comme lilo, grub, gag ou xosl. Cette
méthode est intéressante car elle laisse à l'utilisateur la maîtrise complète du processus de démarrage.
4.2.1. Lancement classique d'un sytème linux.
- lecture du MBR --> le programme lilo permet de spécifier la partition contenant linux et de lancer linux.
- lancement du noyau de linux.
4.2.2. Lancement conseillé d'un système linux (méthode personnelle).
- lecture du MBR --> le programme gag permet de spécifier la partition contenant linux.
- lecture du BR de la partition linux --> le programme lilo permet de lancer linux.
- lancement du noyau de linux.
4.2.3. Lancement à partir d'une disquette DOS.
- lancement d'une disquette système DOS.
- utilisation du programme DOS "loadlin" qui permet de charger un noyau présent sur la disquette : exemple "a:\loadlin
a:\bzImage root=/dev/hda5 rw".
- lancement du noyau de la disquette, à ce moment l'ordinateur n'est plus sous DOS mais sous linux, la disquette peut être
retirée.
4.3. Procédure de lancement après le boot.
Ce processus peut varier en fonction des distributions linux. Le cours s'appuie sur la distribution "slackware 8.1". Après que le
noyau linux ait été chargé en mémoire, le processus de lancement se poursuit en utilisant les scripts de configuration suivants :
- lancement du noyau linux.
- lecture du fichier principal de configuration "/etc/inittab". Ce fichier précise le niveau d'exécution courant de linux
(généralement niveau 3). Sur la slackware les niveaux d'exécution disponibles sont les suivants :
0. halt, utilisé pour arrêter l'ordinateur
1. nono-utilisateur, utilisé en cas de crash (équivalent du mode "sans échec" de windows)
3. multi-utilisateurs, pour un linux courant en mode texte.
4. graphique, pour un linux courant en mode graphique.
6. reboot, utilisé pour rebooter l'ordinateur
2 et 5 ne sont pas utilisés. Ils peuvent être reprogrammés pour des utilisations spécifiques.
- lecture du fichier d'initialisation général "/etc/rc.d/rc.S". Ce fichier assure :
- le démarrage du swap.
- le montage des partitions en fonction du fichier "/etc/fstab".
- la configuration des cartes isa plug&play en fonction du fichier "/etc/isapnp.conf".
- la synchronisation de l'horloge linux avec l'horloge du bios.
- le chargement des modules du noyau en fonction du fichier "/etc/rc.d/rc.modules".
- le démarrage du générateur de nombre aléatoire.
- lecture du fichier d'initialisation du niveau d'exécution multi-utilisateurs "/etc/rc.d/rc.M". Ce fichier assure :
- la définition du nom de la machine en fonction de "/etc/HOSTNAME".
- la configuration des réseaux en fonction de "/etc/rc.d/rc.inet1" et "/etc/rc.d/rc.inet2".
- la configuration des imprimantes en fonction de "/etc/rc.d/rc.cups".
- la gestion de l'alimentation électrique en fonction de "/etc/rd.d/rc.acpi".
- le réglage des fontes d'écran en fonction de "/etc/rc.d/font".
- le réglage du clavier en fonction de "/etc/rc.d/rc.keymap".
- le réglage de la souris en fonction de "/etc/rd.d/rc.gpm".
- le lancement des serveurs apache, samba, ...
- le lancement du fichier de configuration final "/etc/rc.d/rc.local".
- le login apparaît, la configuration du système est terminée.
4.4. Désignation des périphériques sur linux
Un périphérique est désigné sur linux par un fichier spécial du dossier des devices "/dev". Voici quelques exemples de fichiers
/dev :
Périphérique
/dev/hda1
/dev/hda2
/dev/hda5
/dev/hdb1
/dev/hdc1
/dev/sda1
/dev/scd0
/dev/fd0
/dev/lp0
/dev/null
Commentaire
Première partition principale du disque dur ide maître sur le premier port
Deuxième partition principale du disque dur ide maître sur le premier port
Première partition logique du disque dur ide maître sur le premier port
Première partition principale du disque dur ide esclave sur le premier port
Première partition principale du disque dur ide maître sur le deuxième port
Premier port usb
Disque scsi sur le port 0
Lecteur de disquette
Imprimante
Périphérique virtuel vide ==> poubelle
5. Les commandes du shell bash
Il existe plusieurs shell (interpréteur de commande) pour linux. Le plus courant aujourd'hui est le Bourne Again Shell (bash).
5.1. Commandes fondamentales (Voir TP15 Linux)
5.2. Caractères spéciaux du shell
.
..
*
$
~
Désigne le répertoire en cours d'utilisation
Désigne le répertoire parent de celui en cours d'utilisation
Caractère générique équivalent à "tous les fichiers"
Caractère précédent les variables su shell
Désigne le répertoire personnel de l'utilisateur
5.3. L'éditeur de fichier vi.
vi date des années 70, autant dire que cet éditeur est ancien, mais il est disponible sur l'ensemble des unix. vi et comprend
deux modes : un mode "commande" et un mode "insertion". Après le lancement de vi vous êtes en mode commande. Appuyez
sur la touche "Echap" puis sur "Inser", permet de passer en mode insertion.
Pour sauver un fichier : sortir d'abord du mode insertion en appuyant sur la touche "Echap" puis ":w qqchose"
Pour quitter vi sans sauvegarder : Passer en mode commande puis ":q!"
Pour quitter vi en sauvegardant : Passer en mode commande puis ":wq"
Pour supprimer une ligne : Passer ne mode commande puis "dd"
5.4. Le montage des partitions
Les partitions sont montées par linux dès le démarrage. Mais pour les périphériques mobiles, il peut être nécessaire de réaliser
un montage manuellement. Par exemple pour monter un CDROM, la méthode à suivre est la suivante :
Créer un point de montage : Créer un point de montage signifie tout simplement créer un répertoire où l'on pourra à chaque
fois qu'on le souhaite regarder le contenu d'un CD-ROM. Le plus souvent ce répertoire est créé dans le répertoire /mnt : par
exemple /mnt/cdrom.
- Monter le cdrom : Utiliser la commande "mount -t iso9660 /dev/hdc /mnt/cdrom"
- Vous n'avez plus qu'à vous déplacer dans le répertoire /mnt/cdrom et lister le contenu de ce répertoire.
-Démonter un cdrom : umount /dev/hdc : Pour changer de CD-ROM, il ne suffit pas d'appuyer sur le bouton eject du lecteur,
il faut d'une part démonter le CD-ROM en place pour ensuite le remplacer par un autre qui devra lui même être monté. Ne
restez pas dans le répertoire /mnt/cdrom pour le faire, soyez par exemple à la racine.
5.5. La connexion de plusieurs commandes : les pipes
Un "pipe" (parfois appelé "tube") n'est rien d'autre que la barre verticale que vous pouvez obtenir avec la combinaison de
touches "Altgr + 6". Un tube permet de passer le résultat d'une commande à une autre commande. Par exemple : je veux savoir
quels sont tous les processus "bash" qui fonctionnent sur le système et je veux les trier par ordre alphabétique inverse : "ps
ax|sort -n -r".
On peut dire que l'on a "connecté" deux commandes entre elles. Vous pouvez ainsi en connecter autant que vous voulez en
utilisant la syntaxe : "commande1 | commande2 | commande3 ... | commandeN"
5.6. Les redirections
"> fichier" qui permet de rediriger le résultat d'une commande vers une sortie que nous choisissons.
"< fichier" permet de spécifier une entrée standard.
">> fichier" permet comme le signe ">" de rediriger la sortie standard vers un fichier, mais si le fichier spécifié existe déjà, la
sortie sera ajoutée à ce qui existe déjà.
"<> fichier" permet de spécifier un fichier comme étant en même temps l'entrée standard et la sortie standard.
"n> fichier" permet de rediriger la sortie d'un des descripteurs de fichiers vers un fichier. Par exemple, si vous souhaitez obtenir
les erreurs standards dans un fichier vous n'aurez qu'à utiliser cette syntaxe : commande 2> erreurs
"n< fichier" permet de spécifier un fichier comme étant un des descripteurs de fichier.
">&n" permet de dupliquer la sortie standard vers un des descripteurs de fichier.
"<&n" permet de dupliquer l'entrée standard depuis un des descripteurs de fichier.
"&> fichier" permet de rediriger la sortie standard et l'erreur standard vers un seul et même fichier.
6. Arborescence d'un système linux
Le système linux est conforme à la norme "posix" ce qui implique que l'arborescence des fichiers suit le modèle suivant :
/bin contient les commandes les plus importantes disponibles pour tous les utilisateurs
/etc contient les fichiers de configuration
/usr/bin contient les commandes non vitales disponibles pour tous les utilisateurs
/usr/sbin idem /usr/bin
/mnt emplacement idéal pour placer les points de montage
/dev contient tous les fichiers device (ne rien ajouter)
/var contient les fichiers d'information système (les fichiers log par exemple)
/var/tmp contient les fichiers temporaires nécessaires à l'exécution
/var/spool contient les buffers (ne rien ajouter)
/sbin contient les commandes les plus importantes réservées aux administrateurs
/lib contient les bibliothèques partagées (dll sous windows)
/home emplacement idéal pour placer les répertoires personnels des utilisateurs
/proc emplacement réservé pour la gestion des processus (ne rien ajouter)
COMPLEMENT : LES SYSTEMES UNIX (HP, Sun Solaris …)
Unix est certainement le système d’exploitation multiutilisateurs le plus répandu dans le monde. Les standards issus du monde
Unix sont nombreux (les protocoles Internet par exemple) et tous les grands constructeurs proposent une version d’Unix.
Unix a été créé en 1969 par Ken Thompson des laboratoires Bell. D’abord défini à l’aide d’un langage assembleur, Unix a été
finalement presque entièrement réécrit en langage C au début des années 70. D’ailleurs Denis Ritchie, le créateur de ce
langage est considéré comme le co-auteur du système. Ceci a fait de Unix le premier système dont le code source était public,
ce qui a permis de le porter assez vite sur différentes machines.
Unix fonctionne sur tous les types de matériel, du micro-ordinateur (Macintosh ou PC) jusqu’au super-calculateur. Il est
disponible en de très nombreuses versions, il existe quasiment une version d’Unix par fournisseur, certaines sont propriétaires
(comme AIX d’IBM) d’autres sont quasi gratuites (comme Linux).
Il y a trois grandes familles de systèmes Unix : ceux de l’université de Berkeley (BSD 1.0 en 77, BSD 4.4 en 92), ceux de BELLLABS nommés V1 à V8 (en 86) et ceux de ATT nommés System III (83) à System V release 4 (89). Récemment, Novell
(l’éditeur du système Netware) a acheté la licence Unix d’ATT qui est devenu le produit UnixWare.
L’offre Unix sur le marché est donc pour le moins plurielle et pléthorique.
Unix est un système multiutilisateurs, multitâches et multipostes, certaines versions sont multi-processeurs. Il est structuré
autour de trois éléments :
Le noyau (Kernel) qui assure les services essentiels d’un système d'exploitation multi-utilisateurs : gestion de la mémoire et des
processus. Le shell qui est le langage de commande qui sert d’interface en mode caractères avec l’utilisateur. Enfin, le système
de fichier (File system) qui gère le stockage et la sécurité des fichiers.
Sur le plan de la gestion des réseaux, Unix est le système ouvert par excellence, sont protocole de prédilection est TCP/IP.
L’essentiel des ordinateurs qui participent au réseau Internet fonctionnent sous Unix.
Le shell est un véritable langage de programmation qui permet de créer des fichiers de commandes sophistiqués qui rendent
l’interface utilisateur parfaitement adaptable. Il existe plusieurs versions du Shell qui représentent autant de langages différents
dotés de fonctionnalités particulières : Bourne shell (sh), C shell (csh), TC shell (tcsh), Korn shell (ksh), Bourne Again SHell
(bash). L eplus souvent Shell peuvent d’ailleurs être disponibles sur un même système, chaque utilisateur choisit le sien !
Unix est présent chez presque tous les constructeurs. Ceci fait d’ailleurs sa faiblesse : la compatibilité entre les systèmes Unix
n’est jamais totale. Les méthodes et outils d’administration peuvent être différents d’un fournisseur à l’autre. Le portage d’une
application Unix vers un autre système Unix n’est jamais simple.
Téléchargement