Introduction au système d’exploitation Linux

Copyleft c GUINKO Tonguim Ferdinand - IBAM - Université de Ouagadougou

17 novembre 2009

Table des matières
1 Introduction au système d’exploitation Linux 1.1 Le système d’exploitation UNIX . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.1.3 1.1.4 1.2 1.2.1 1.2.2 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caratéristiques du noyau UNIX . . . . . . . . . . . . . . . . . Evolution du système d’exploitation UNIX . . . . . . . . . . . Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2.1 1.2.2.2 1.2.3 1.2.4 1.2.5 Mode de numérotation . . . . . . . . . . . . . . . . . Principes et idéologie . . . . . . . . . . . . . . . . . 4 4 4 5 6 8 8 8 9 9 10 10 10 10 10 10 11 12 13 14 14 14 14 14 14

Le système d’exploitation LINUX . . . . . . . . . . . . . . . . . . . .

Caratéristiques du noyau LINUX . . . . . . . . . . . . . . . . Evolution du système d’exploitation LINUX . . . . . . . . . . Le système de fichiers . . . . . . . . . . . . . . . . . . . . . . 1.2.5.1 1.2.5.2 1.2.5.3 1.2.5.4 1.2.5.5 1.2.5.6 1.2.5.7 1.2.5.8 1.2.5.9 Définition . . . . . . . . . . . . . . . . . . . . . . . . Les types de systèmes de fichiers . . . . . . . . . . . Les systèmes de fichiers étendus (Ext, Ext2, Ext3) de LINUX . . . . . . . . . . . . . . . . . . . . . . . . . Les types de supports . . . . . . . . . . . . . . . . . Le numéro d’inode . . . . . . . . . . . . . . . . . . . Les types de fichiers . . . . . . . . . . . . . . . . . . Les droits d’accès . . . . . . . . . . . . . . . . . . . Les règles de nomage des fichiers . . . . . . . . . . . Les caractères spéciaux . . . . . . . . . . . . . . . .

1.2.5.10 Les jokers . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.11 Le montage d’un système de fichier . . . . . . . . . .

2

1.2.5.12 Le fichier de configuration "/etc/fstab" . . . . . . . 1.2.5.13 L’arborescence de LINUX . . . . . . . . . . . . . . . 1.2.5.14 Les fichiers spéciaux du répertoire "/proc" . . . . . 1.2.5.15 Les URL . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.16 / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.17 /boot . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.18 /bin . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.19 /dev . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.20 /etc . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.21 /home . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.22 /lib . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.23 /opt . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.24 /proc . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.25 /root . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.26 /sbin . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.27 /tmp . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.28 /var . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5.29 /usr . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.6 Les variables d’environnement par défaut . . . . . . . . . . . 1.2.6.1 1.2.6.2 1.2.6.3 1.2.6.4 1.2.6.5 1.2.6.6 1.2.6.7 1.2.6.8 1.2.7 1.2.7.1 1.2.7.2 1.2.7.3 1.2.7.4 1.2.7.5 1.2.7.6 PWD . . . . . . . . . . . . . . . . . . . . . . . . . . HOSTNAME . . . . . . . . . . . . . . . . . . . . . . USER et LOGNAME . . . . . . . . . . . . . . . . . DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . SHELL . . . . . . . . . . . . . . . . . . . . . . . . . HOME . . . . . . . . . . . . . . . . . . . . . . . . . TERM . . . . . . . . . . . . . . . . . . . . . . . . . PATH . . . . . . . . . . . . . . . . . . . . . . . . . . CD : se déplacer dans l’arborescence de répertoires . PWD : dans quel répertoire suis-je actuellement ? . . LS : lister les fichiers d’un répertoire . . . . . . . . . MORE, CAT : voir un fichier . . . . . . . . . . . . . CP : copier un fichier . . . . . . . . . . . . . . . . . RM : supprimer un fichier . . . . . . . . . . . . . . .

14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 16 16 16 17 17 17 18 18 18 18 18 20 20 20 21 21 21 21

Les commandes de base . . . . . . . . . . . . . . . . . . . . .

3

1.2.7.7 1.2.7.8 1.2.7.9 1.2.8 1.2.9

MKDIR : créer un répertoire . . . . . . . . . . . . . MV : déplacer ou renommer un fichier . . . . . . . . FIND : retrouver un fichier . . . . . . . . . . . . . .

21 21 21 21 21 21 21 21 22 22 22 22

1.2.7.10 TOP, PS : la gestion des processus . . . . . . . . . . État des processus . . . . . . . . . . . . . . . . . . . . . . . . Système d’exploitation . . . . . . . . . . . . . . . . . . . . . .

1.2.10 Processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.11 Mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.12 Liste matérielle . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.13 Liste des périphériques USB . . . . . . . . . . . . . . . . . . . 1.2.13.1 Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.13.3 Afficher un calendrier du mois en cours . . . . . . .

1.2.13.2 MAN : afficher la page d’information d’une commande 22

4

Chapitre 1

Introduction au système d’exploitation Linux
1.1
1.1.1

Le système d’exploitation UNIX
Historique

En 1965 le Massachusetts Institute of Technology 1 (MIT), et ses partenaires que sont l’American Telephone and Telegraph Company 2 (AT&T) (à l’époque, la compagnie nationale de télécommunications américaine, dont l’unité en charge de la recherche et du développement était le Bell laboratories ) et General Electric, se lance dans le projet MULTICS (pour MULTiplexed Information and Computing Service ou service multiplexé d’information et de calcul) 3 , dont l’objectif est de créer le premier système d’exploitation multi-tâches et multi-utilisateurs. Les chefs de projets étaient Ken THOMPSON 4 et Dennis RITCHIE5 de AT&T. Une première version écrite en PL/1 est proposée en 1970, avec deux originalités : un système de gestion de fichiers arborescent et un shell conçu comme processus utilisateur. Sur le principe de la multi-programmation, le système d’exploitation autorisait le chargement de plusieurs programmes en mémoire et gérait le passage de l’un à l’autre, mais cette fois-ci sans attendre le blocage d’un programme, comme ce fut le cas avec les tous premiers systèmes d’exploitation. MULTICS devint ainsi le premier système d’exploitation multitâche et multi-utilisateur, en temps partagé, pouvant fonctionner sur tout ordinateur, et assurant une portabilité des applications. En effet, sur MULTICS, chaque programme était exécuté pendant une durée de quelques millisecondes, puis le système passait au suivant. Ce temps, très court, donnait l’illusion que les programmes s’exécutaient simultanément - une illusion qui existe encore avec les systèmes d’exploitation contemporains. De
1 2

http://fr.wikipedia.org/wiki/Massachusetts_Institute_of_Technology/ http://fr.wikipedia.org/wiki/American_Telephone_&_Telegraph/ 3 http://fr.wikipedia.org/wiki/Multics/ 4 http://fr.wikipedia.org/wiki/Kenneth_Thompson 5 http://fr.wikipedia.org/wiki/Dennis_Ritchie/

5

plus, ces programmes pouvaient appartenir à des utilisateurs distincts, chacun ayant l’impression que la machine travaille uniquement pour lui. Mais il fut très vite constaté que le langage PL/16 n’était pas adapté aux objectifs assignés au projet. De plus le matériel pour faire fonctionner MULTICS etait hors de prix. Devant l’échec du projet, AT&T se retire, lassé d’avoir investi 7 millions de $ sans retour. Ken THOMPSON et Dennis RITCHIE continuent seuls et réécrivent MULTICS en langage Assembleur. Sur la machine hébergeant la première version du système d’exploitation MULTICS, Ken THOMPSON crée le langage B 7 en 1971. En 1973, Dennis RITCHIE et Brian KERNIGHAN8 améliorent le langage B et créent le langage C 9 , en vue d’une réécriture du système d’exploitation MULTICS, dans le but d’en produire une version simplifiée (mono-utilisateur). Brian KERNIGHAN appela avec humour la nouvelle version du système d’exploitation UNICS (Uniplexed - à l’opposé de Multiplexed - Information and Computer Service), nom qui évolua plus tard en UNIX. L’objectif officiel assigné au projet UNIX était la réalisation d’un système de traitement de texte dédié au secrétariat. Rapidement, d’autres applications (téléphonie, prise de commandes) sont apparues. Le système UNIX s’étoffe au fur et à mesure, et devient un vrai système d’exploitation. UNIX revolutionne l’univers des systèmes d’exploitation et se révèle particuièrement simple à porter sur de nouvelles plateformes, ce qui favorise son succès.

1.1.2

Caratéristiques du noyau UNIX

UNIX est un système d’exploitation : – Multi-tâche : chaque programme était exécuté pendant une durée de quelques millisecondes, puis le système passait au suivant. Ce temps, très court, donnait l’illusion que les programmes s’exécutaient simultanément ; – Multi-utilisateur : les programmes pouvaient appartenir à des utilisateurs distincts ; plusieurs utilisateurs peuvent travailler en même temps et chaque utilisateur peut effectuer plusieurs tâches (processus) à la fois ; ainsi, chacun a l’impression que la machine travaille uniquement pour lui ; – Il propose une gestion protégée de la mémoire (MMU, pagination) : chaque programme exécuté par le système d’exploitation se voit attribuer une zone mémoire protégée, dans laquelle aucun autre programme (processus) ne peut écrire. Ce principe de protection mémoire est la caractéristique la plus cruciale pour bénéficier d’un système d’exploitation stable. Un processus est un programme s’exécutant dans un environnement spécifique (si 2 utilisateurs exécutent le même programme, il y aura bien 2 processus distincts). Avec la protection mémoire, une erreur intervenant dans un processus ne peut pas en perturber un autre. Cependant, les processus peuvent bien entendu communiquer (envoi de messages, synchronisation,
6 7

http://fr.wikipedia.org/wiki/PL/I http://fr.wikipedia.org/wiki/B_(langage) 8 http://fr.wikipedia.org/wiki/Brian_Kernighan 9 http://fr.wikipedia.org/wiki/Langage_C)

6

partage de ressources). UNIX propose : – un système de fichier arborescent : maintient une arborescence unique des fichiers. La localisation des fichiers sur plusieurs supports (par exemple plusieurs disques) est transparente pour l’utilisateur. Cette arborescence n’a aucune limite en profondeur. – des Entrées/sorties compatibles fichiers, périphériques et processus : les périphériques sont utilisés et vus comme des fichiers. Ils sont référencés dans le système de fichier et manipulés comme des fichiers classiques (lecture ou écriture d’information). Un programme écrit pour envoyer des informations dans un fichier pourra donc le faire sur un périphérique (par exemple une imprimante), et réciproquement. Les canaux de communication entre processus (pipe) s’utilisent avec les mêmes primitives. – Réduction du noyau système (ne gère que l’indispensable) : le noyau (la licence Unix comprend le noyau plus de nombreux utilitaires) ne gère que le minimum : – les processus – les ressources (mémoire, périphériques, ...) – les fichiers Tout autre traitement doit être pris en charge par un ou plusieurs processus utilisateurs. C’est par exemple le cas pour l’interpréteur de commande (shell) ou le système graphique (X11, en général). On dispose ainsi de plusieurs programmes (les shells : sh, csh, etc.) et on peut en écrire d’autres. On peut donc choisir son environnement de travail. – Interfaces au noyau (pilotes de périphériques et appels systèmes) : l’interface entre le noyau et les périphériques est assurée par l’ensemble des gestionnaires de périphérique (device drivers). L’interface entre le noyau et les programmes utilisateurs est assurée par l’ensemble des appels systèmes (system calls).

1.1.3

Evolution du système d’exploitation UNIX

En 1974 paraît le premier article décrivant Unix. Le gouvernement fédéral américian interdit aux AT&T de commercialiser le système. AT&T distribue alors son nouveau système d’exploitation sous forme de code source. Les premiers clients d’UNIX peuvent être répartis en deux groupes : les universités (Berkeley University of California 10 , Colombia University 11 , etc.) et centres de recherches américains d’une part, et les grands constructeurs de matériel informatiques (Sun Microsystems, IBM, DEC, Hewlett-Packard etc.) d’autre part. Pour les universités et centres de recherche, UNIX se révèle être un système peu onéreux (AT&T le leur vendait à un prix symbolique) et puissant. L’Université de Californie à Berkeley (UCB) se montre particulièrement intéressée par ce système d’exploitation remarquable et entreprend d’y ajouter des modifications. En effet, dès la fin de l’année 1977, des chercheurs de l’Université de Californie apportèrent de nombreuses améliorations au système UNIX fourni par AT&T et
10 11

http://en.wikipedia.org/wiki/University_of_California_Berkeley http://en.wikipedia.org/wiki/Columbia_University

7

[ht !] width=15cm]images/historiqueDunix1.png Fig. 1.1 – Chronologie et filliation des différents UNIX et apparentés (http://fr. wikipedia.org/) le distribuèrent sous le nom de Berkeley Software Distribution (BSD 12 ). Les différents clients de AT&T étant libre de développer des nouveautés, très vite apparaissent des familles différentes d’UNIX. A la fin des années 1970, trois branches de développement des sources virent le jour : – La branche de recherche de AT&T qui développa, toujours aux laboratoires Bell, jusqu’en 1990, les 8e, 9e et 10e éditions du système UNIX. – La branche commerciale de AT&T qui développa System III, puis quatre éditions de System V (System V, SVR2, SVR3, SVR4) ; – Berkeley Software Distribution développé par l’Université de Californie, jusqu’en 1994. Ces branches se sont mutuellement empruntées du code et/ou des concepts. Ainsi : – La 8e édition est issue de la version 4.1 BSD ; – La version SVR3 a emprunté le concept des STREAMS à la 8e édition ; – La version SVR4 a intégré beaucoup de code de la version 4.3 BSD ; – La version 4.4 BSD comporte une très petite quantité de code de la version SVR4. En 1979 avec sa version 7 UNIX commence à se vendre. Les différentes distributions d’Unix peuvent alors se regrouper en familles : – Les UNIX-based construits à partir des sources ; – Les UNIX-like (ou unixoïdes) entièrement réécrits, ne devant aucune royalties à AT&T et autres ; – L’UNIX de Berkeley ; – Et enfin l’UNIX original de AT&T. L’incompatibilité grandissante entre les nombreuses variantes d’UNIX proposées par les différents éditeurs pour les différentes machines a fini par porter atteinte à la popularité d’UNIX. De nos jours, les systèmes UNIX propriétaires, longtemps majoritaires dans l’industrie et l’éducation, sont de moins en moins utilisés. En revanche, trois systèmes de type UNIX basés sur BSD (FreeBSD (13 ), NetBSD (14 ) et OpenBSD (15 )) d’une part, et le système GNU/Linux, compatible UNIX, d’autre part, ainsi que Mac OS X (basé sur Darwin 16 ), occupent une part de marché de plus en plus importante. En 1985, suite à l’interdiction faite par AT&T d’utiliser UNIX à des fins pédagogiques, le professeur Andrew Stuart TANENBAUM 17 décide de developper,
BSD fut par exemple le premier système UNIX à exploiter pleinement le mécanisme de mémoire virtuelle paginée du VAX 11/780 13 http://www.freebsd.org/ 14 http://www.netbsd.org/ 15 http://www.openbsd.org/ 16 http://developer.apple.com/darwin 17 http ://fr.wikipedia.org/wiki/AndrewT anenbaum
12

8

[ht !] width=16cm]images/historiqueDunix2.png Fig. 1.2 – Historique des principaux systèmes de type UNIX (http://fr. wikipedia.org/) pour ses enseignements, le système d’exploitation MINIX 18 . MINIX est un clone libre d’UNIX, dont le noyau est basé sur une architecture de type micro-noyaux et s’inscrit dans la famille des UNIX-like. MINIX eut un certain succès dans le milieu des étudiants en informatique, car il était léger (une partition de 20 Mo suffit pour l’installer, ainsi que 512 Ko à 2 Mo de mémoire vive), facile à lire et à comprendre. En effet, Andrew TANENBAUM a préféré privilégier la simplicité par rapport à la performance, et à été volontairement réduit afin qu’il puisse être compris entièrement par ses étudiants en un semestre. Mais certains utilisateurs de MINIX, qui l’appréciaient pour ses vertus pédagogiques, déploraient ces limitations techniques astreintes par son auteur Andrew Stuart TANENBAUM. Au nombre de ceux-ci, figurait Linus Benedict TORVALDS (19 ), à l’époque étudiant finlandais, dont les limitations techniques de MINIX l’incitèrent à développer un nouveau système d’exploitation, à partir de MINIX, en 1991, qu’il appela d’abord Freax. Le projet trouve son nom définitif grâce à Ari LEMMKE 20 , administrateur du serveur FTP 21 , qui hébergea le travail de Linus Benedict TORVALDS, dans un répertoire nommé LINUX (22 ), pour le rendre public au téléchargement. LINUX est un accronyme formé du prénom Linus et du nom UNIX (Linus’ UNIX, l’UNIX de Linus). LINUX fut donc directement inspiré de MINIX, mais n’en contient aucune source.

1.1.4

Pour aller plus loin

– Histoire détaillée d’UNIX : http://cm.bell-labs.com/cm/cs/who/dmr/ – Première édtion du manuel d’UNIX : http://cm.bell-labs.com/cm/cs/who/ dmr/1stEdman.html

1.2
1.2.1

Le système d’exploitation LINUX
Généralités

Le système d’exploitation LINUX est affilié aux systèmes d’exploitations unixoïdes ; mais au sens strict du terme unixoïdes, LINUX n’est pas un système d’exploitation de type UNIX puisqu’il ne contient pas de ligne de code provenant des sources de ATT ou de quelque autre source propriétaire. Le développement de LINUX a été inspiré de MINIX, qui lui même est un clône d’UNIX sans en contenir une seule
18 19 20

http://www.minix3.org/ http://fr.wikipedia.org/wiki/Linus_Torvalds

ftp://ftp.funet.fi/ http://fr.wikipedia.org/wiki/Linux/,http://fr.wikipedia.org/wiki/Distribution_ Linux/
22

21

9

ligne de code. La conception de LINUX par Linus Torvalds fut fortement influencée par la philosophie de conception de MINIX. LINUX est librement diffusable selon les termes de la GNU 23 Public License 24 . LINUX, de façon stricte n’est que le noyau, le cœur du système d’exploitation GNU/Linux : GNU/LINUX comprend donc le noyau et les outils basiques fournis par le projet GNU. Néanmoins, GNU/LINUX a en commun avec UNIX une bonne partie de son fonctionnement et de son comportement.

1.2.2

Historique

Au départ, Linus TORVALDS commence par développer, à titre ludique, en assembleur, un simple émulateur de terminal, qu’il utilise pour se connecter via modem au serveur informatique de son université. Linus désire alors surtout comprendre le fonctionnement de son ordinateur, un compatible PC basé sur un microprocesseur Intel 80386. Après l’ajout de diverses fonctionnalités dont un système de fichiers compatible avec celui de Minix, Linus réécrit son système en langage C et oriente son projet vers quelque chose de plus ambitieux : un noyau aux normes POSIX 25 . Le 5 octobre 1991, Linus annonça sur le forum Usenet la disponibilité d’une ébauche de son système d’exploitation ; il lance un appel à contribution, et permet un libre accès au code source. Des milliers de bénévoles à travers le monde s’intéressent au projet. Aujourd’hui, les principaux contributeurs sont aujourd’hui un ensemble d’entreprises, souvent concurrentes, comme Fedora, Mandriva, Novell, IBM ou Intel. La licence du noyau Linux est la licence publique générale GNU dans sa version 2. Cette licence est libre, ce qui permet d’utiliser, copier et modifier le code source selon ses envies ou ses besoins. Ainsi, quiconque a les connaissances nécessaires peut participer aux tests et à l’évolution du noyau. 1.2.2.1 Mode de numérotation

Les numéros de version du noyau sont composés de trois chiffres : le premier est le numéro majeur, le second le numéro mineur. Avant l’apparition des versions 2.6.x, les numéros mineurs pairs indiquaient une version stable et les numéros mineurs impairs une version de développement. Ainsi, les versions 2.2, 2.4 sont stables, les versions 2.3 et 2.5 sont des versions de développement. Cependant, depuis la version 2.6 du noyau, ce modèle de numérotation stable/développement a été abandonné et il n’y a donc plus de signification particulière aux numéros mineurs pairs ou impairs. Le troisième chiffre indique une révision, ce qui correspond à des corrections de bogues, de sécurité ou un ajout de fonctionnalité, par exemple 2.2.26, 2.4.30 ou 2.6.11.
23 24

Gnu’s Not Unix : Gnu N’est pas Unix http://www.gnu.org/home.fr.html/ 25 http://fr.wikipedia.org/wiki/POSIX

10

1.2.2.2

Principes et idéologie

1.2.3 1.2.4 1.2.5
1.2.5.1

Caratéristiques du noyau LINUX Evolution du système d’exploitation LINUX Le système de fichiers
Définition

Le système de fichiers correspond au type de formatage qui va être appliqué à une partition. Un système de fichiers est une façon d’organiser et de stocker une arborescence sur un support (disque, cd ...). Chaque type de système d’exploitation a développé sa propre organisation. Par exemple, le système d’exploitation MS Windows a utilisé successivement les systèmes de gestion de fichiers FAT, FAT32 puis NTFS. Plusieurs systèmes de fichiers peuvent cohabiter les différentes partitions d’un même disque. Le système de fichiers de Linux est tout entier organisé à l’intérieur d’une seule arborescence. Le système de fichiers de Linux est à géométrie variables, il est compatible avec la plupart des systèmes de fichiers éxistant dans le monde (et entre autre les systèmes FAT, FAT 32 ou NTFS de Windows de Microsoft), il peut gérer la plupart des support physiques, et il peut s’agrandir à tout moment (l’administrateur du système peut créer un nouveau point de montage n’importe où dans l’arborescence). 1.2.5.2 Les types de systèmes de fichiers

Les systèmes de fichiers UNIX – MINIX pour UNIX – SYS V pour UNIX Système V – UFS pour UNIX BSD – UMSDOS pour Unix sur une partition MSDOS – EXT pour l’ancien LINUX native – EXT2FS ou EFS pour LINUX native – EXT3FS pour LINUX native 3 génération avec la journalisation des fichiers – REISERFS Les systèmes de fichiers Microsoft – MSDOS ou FAT pour la FAT 16 de DOS et de Windows 95 – VFAT pour la FAT 32 de Windows 95/98 – NTFS pour Windows NT – JOLIET pour le CDROM à nom long de Microsoft Les autres systèmes de fichiers – HPFS pour OS/2 – HFS pour MAC OS et APPLE MACINTOSH – ISO 9660 pour les CDROM UNIX – XIAFS

11

Les systèmes de fichiers réseaux – CODA pour les réseaux Unix – NFS pour Network File System des réseaux Linux – SMB pour les réseaux Windows de Micorosoft – NCP pour les réseaux Netware de Novell 1.2.5.3 Les systèmes de fichiers étendus (Ext, Ext2, Ext3) de LINUX

Le système de fichiers étendus ExtFS 26 , le second système de fichiers étendus Ext2FS 27 et le troisième système de fichiers étendus Ext3FS 28 furent conçus et développés pour LINUX par Rémy CARD, Laboratoire MASI-Institut Blaise Pascal, Theodore TS’O, MIT, et Stephen TWEEDIE, University of Edinburgh. ExtFS C’est un ancien système de fichiers utilisé dans les premiers systèmes Linux. Ext2FS Le deuxième système de fichiers est probablement le système de fichiers le plus largement répandu dans la communauté LINUX. Il fournit une sémantique UNIX standard et des fonctionnalités avancées. Qui plus est, grâce aux optimisations incluses dans le code du noyau, il est robuste et offre d’excellentes performances. Puisque Ext2FS fut conçu de manière évolutive, il prévoit l’ajout de nouvelles capacités. Certaines personnes sont en train de développer des extensions au système actuel : listes de contrôle d’accès se conformant à la sémantique Posix, undelete, et compression de fichier à la volée. Ext2FS fut d’abord développé et intégré au noyau Linux et est maintenant activement porté sur d’autres systèmes d’exploitation. Un serveur Ext2FS tournant sur le système GNU Hurd a été développé. Des gens sont aussi en train de travailler sur un portage de Ext2FS pour le serveur LITES, tournant sur le micro-noyau Mach et sur le système d’exploitation VSTa. Dernier point, mais non des moindres, Ext2FS est une partie importante du système d’exploitation Masix, actuellement en cours de développement par l’un des auteurs. Motivations Le second système de fichiers étendu fut conçu et implémenté pour résoudre certains problèmes présents dans le premier système de fichiers étendu. Notre but était de fournir un système de fichiers puissant, qui utilise la sémantique des fichiers Unix et offre des fonctionnalités avancées. Bien sûr, nous voulions que Ext2FS aie d’excellentes performances. Nous voulions aussi un système de fichiers très robuste dans le but de réduire les risques de perte de données lors d’usage intensif. Finalement, et non des moindres, Ext2FS a dû prévoir de la place pour les extensions, permettant ainsi aux utilisateurs
26

http://web.mit.edu/tytso/www/linux/ext2.html,http://uranus.it.swin.edu.au/~jn/ explore2fs/es2fs.htm
28

27

12

de bénéficier de nouvelles fonctionnalités sans avoir à reformater leur système de fichiers. Les fonctionnalités standard d’Ext2FS Ext2FS supporte les types de fichiers standards Unix suivants : fichiers réguliers, répertoires, fichiers périphériques spéciaux et liens symboliques. Ext2FS est capable de gérer les systèmes de fichiers créés sur de très grandes partitions. Tandis que le code originel du noyau restreint sa taille maximale à 2 Go, les travaux récents dans la couche VFS ont repoussé cette limite à 4 TB. Ainsi, il est maintenant possible d’utiliser de gros disques sans avoir besoin de créer de nombreuses partitions. Ext2FS gère les noms de fichiers longs. Il utilise des entrées de répertoire de taille variable. La taille maximale d’un nom de fichier est de 255 caractères. Cette limite peut être étendue à 1012 si nécessaire. Ext2FS réserve certains blocs pour le super utilisateur (root). Normalement, 5% des blocs sont réservés. Cela permet à l’administrateur de rattraper facilement des situations où un processus utilisateur remplit le système de fichiers. Les autres caractéristiques du système de fichiers Ext2FS : : Le système de fichier Ext2FS (extented N2 File System) utilise des tables de hash code pour retrouver rapidement des i-nodes. – La taille maximale des partitions est de Giga Octets à 4 Tera Octets – La taille maximale des fichiers est de 16 Giga Octets – Un accès direct à 12 blocs logiques – La conservation de la date de suppression pour récuperer des fichiers – L’identification de version pour les serveurs de fichiers distants NFS – La fragmentation de blocs logiques afin d’optimiser l’exploitation de l’espace mémoire de stockage – La synchronisation automatique des données systèmes – La réservation de zones du système de fichiers pour le super-utilisateur – La longueur maximale des noms de fichier long jusqu’à 255 caractères (255 octets) – L’utilisation de tables de "hash code" pour retrouver rapidement des i-nodes Ext3FS Ext3FS supporte les mêmes fonctionnalités qu’Ext2FS, mais inclut en plus la journalisation 29 . En somme, Ext3 est Ext2 avec un journal. 1.2.5.4 Les types de supports

– IDE : /dev/hdb8 correspond au deuxième disque dur IDE et à la 8 partition logique ; – SCSI et ZIP IDE : /dev/sda1 correspond au premier disque dur SCSI et à la première partition ;
29 La journalisation d’un système de fichiers est une fonctionalité qui permet de tracer les opérations d’écriture tant qu’elles ne sont pas terminées et cela en vue de garantir l’intégrité des données, et de pouvoir les récupérer plus rapidement, en cas d’arrêt brutal (coupure d’alimentation, plantage du système, etc.), alors que les partitions n’ont pas été correctement synchronisées et démontées

13

– FLOPPY : /dev/fd0 correspond au premier lecteur de disquette A : $. Le nombre de blocs d’une disquette de 31/2 pouceshighdensityestde1440.Ladisquettedoittref ormattea – CDROM : /dev/cdrom. Il existe un lien symbolique entre le fichier /dev/cdrom et le nom du périphérique /dev/cdrom0. Les lecteurs de cartouches amovibles sont montés comme des disques durs externes. Il faut d’abord partitionner le lecteur avec fdisk, puis créer une table de partition et installer un système de fichier avec mk2fs, ensuite il faut créer le point de montage avec mkdir et monter les partitions avec mount, enfin ajouter une ligne dans le fichier /etc/fstab pour que le périphérique soit monté à chaque démarrage. 1.2.5.5 Le numéro d’inode

Sous LINUX/UNIX, chaque fichier est décrit par des métadonnées conservées dans l’inode (contraction de index et node ; en français : nœud d’index). Le contenu du fichier quant à lui est écrit dans un ou plusieurs blocs du support de stockage, selon la taille du fichier. Un inode est une structure de données, d’un système de gestion de fichiers de LINUX ou d’un système d’exploitation de type UNIX-like qui stocke toutes les informations concernant un fichier, à l’exception de nom et des données contenues dans ce fichier. Les métadonnées les plus courantes sous UNIX sont : – Les droits d’accès en lecture, écriture et exécution selon l’utilisateur, le groupe, ou les autres ; – Les dates de dernier accès, de modification des métadonnées (inode), de modification des données (block) ; – Les propriétaire et groupe propriétaire du fichier ; – La taille du fichier ; – Le nombre de blocs utilisés par le fichier ; – Le type de fichier : fichier simple, lien symbolique, répertoire, périphérique, etc ; – La taille des blocs physiques ; – La taille des blocs logiques (unité d’allocation) ; – Le nom du support physique /dev/hda1 pour le premier disque dur IDE ; – Le commutateur décrivant l’état de la structure ; – Le nom de la structure / pour la racine root) ; – Le nombre possible d’i-nodes ; – Le nombre réel d’autres inodes (liens) pointant vers le fichier ; – Le pointeur vers le premier i-node libre ; – Le pointeur vers le premier bloc de donnée libre. Sur la plupart des systèmes UNIX, la commande stat permet d’afficher l’intégralité du contenu de l’inode. 1.2.5.6 Les types de fichiers

Selon leur catégorie – fichiers normaux : – texte : courrier, sources des programmes, scripts, configuration ... – exécutables : programmes en code binaire ; 14

– fichiers répertoires : ce sont des fichiers conteneurs qui contiennent des références à d’autres fichiers. Ils constituent la véritable charpente de l’arborescence, et permettent d’organiser les fichiers par catégories ; – fichiers spéciaux : situés dans /dev, ce sont les points d’accès préparés par le système aux périphériques. Le montage va réaliser une correspondance de ces fichiers spéciaux vers leur répertoire "point de montage". Par exemple, le fichier /dev/hda permet l’accès et le chargement du 1er disque IDE ; – fichiers liens symboliques : ce sont des fichiers qui ne contiennent qu’une référence (un pointeur) à un autre fichier. Cela permet d’utiliser un même fichier sous plusieurs noms sans avoir à le dupliquer sur le disque. Selon leur type – Les fichiers – Les répertoires d – Les périphériques (Major device Number, Minor device number) – Les périphériques bloc b. Les périphériques blocs (comme les disques durs, les lecteurs de CDROM) gère une certaine quantité d’octet à la fois, par groupe de bloc ; – Les périphériques caractère c. Les périphériques caractères (comme la souris, le clavier, le port série, le port parallèle) gère un caractère transmis à la fois ; – Les canaux de communication FIFO des pipes p – Les sockets s – Les liens l 1.2.5.7 Les droits d’accès

Les droits d’accès ou permissions permettent de restreindre à certains utilisateurs ou à certains groupes d’utilisateurs l’accès à certains fichiers ou à certains répertoires. Il y a trois types de droits d’accès : – Read r pour l’accès en lecture au fichier (permet l’impression, l’affichage et la copie d’un fichier, et permet la traversée du répertoire ou l’affichage des fichiers d’un répertoire) ; – Write w pour l’accès en écriture au fichier (permet la modification d’un fichier, et permet l’effacement d’un fichier ou l’enregistrement d’un fichier dans un répertoire) ; – Execute x pour la possibilité d’exécuter le fichier (permet l’execution d’un programme, d’un executable, et permet d’accéder aux informations de gestions des fichiers du répertoire, comme l’inode, la table des droits,...). Pour chaque fichier, les droits d’accès sont fixés pour trois catégories d’utilisateurs : – user u : le propriétaire du fichier ; – group g : le groupe propriétaire du fichier ; – other o : les autres utilisateurs ; – all a : tous les utilisateurs. Pour afficher les droits de tous les fichiers du répertoire courant : ls − la

15

Les droits d’accès peuvent également s’exprimer sous leur forme octale , c’est à dire à l’aide de chiffre de 0 à 7 (il y a donc huit possibilités, lesquelles peuvent être fixées avec seulement 3 bits). A chacun des droits (r, w, x) correspond une valeur octale (4, 2, 1), les valeurs octales sont cumulées pour chaque type d’utilisateur (u, g, o). Pour chaque type d’utilisateur (u, g, o), la valeur en octale peut prendre les valeurs 0, 1, 2, 3, 4, 5, 6 et 7. Par exemple, la combinaison de tous les droits cumulés pour les trois types d’utilisateurs (rwx rwx rwx) est équivalente à la valeur octale 777. – 0 signifie aucun droit – 1 correspond au droit executable (–x) – 2 correspond au droit d’écriture (-w-) – 3 correspond aux droits cumulés d’execution et d’écriture (-wx) – 4 correspond au droit de lecture (r–) – 5 correspond aux droits cumulés de lecture et d’execution (r-x) – 6 correspond aux droits cumulés de lecture et d’écriture (rw-) – 7 correspond aux droits cumulés de lecture, d’écriture et d’execution (rwx) Exemple : – 666 donne le droit à tous en lecture et en écriture – 777 donne tous les droits à tous – 700 donne tous les droits au propriétaire de fichier Le nombre d’octale peut être de quatre chiffres quand le super utilisateur fixe les droits spéciaux ("s" et "t"). Les droits spéciaux SUID et SGID remplacent le droit d’executer (x) pour un utilisateur ou un groupe, et permettent à l’utilisateur ou au groupe de devenir le propriétaire d’un fichier executable le temps de son execution. Ainsi, le fichier /usr/bin/passwd est un fichier executable qui appartient à root, mais le droit (s) permet à tous les utilisateurs de lancer ce programme avec le droit root le temps de son execution, et ainsi de pouvoir changer eux même leur propre mot de passe. Le droit (t) ou ’sticky bit’ remplace le droit d’execution (x) d’un fichier executable, et force celui-ci a rester en mémoire une fois qu’il a été chargé. Seuls le super-utilisateur (root) et le propriétaire d’un fichier peuvent en changer les droits. Un utilisateur devient propriétaire d’un fichier en le créant ou en le copiant (s’il a les droits pour le faire). Les droits d’un fichier peuvent être modifier avec la commande "chmod". 1.2.5.8 L’arborescence de LINUX

/ Le répertoire racine contient tous les sous répertoire. /boot Au démarrage du système, le programme d’amorçage examinera, entre autres, le répertoire /boot. Parmi les objets recherchés figure le fichier map, par lequel GRUB (le gestionnaire d’amorçage de Linux) déterminera l’emplacement du noyau sur le disque dur. Sans cette information, GRUB ne peut pas le charger en mémoire vive.

16

/bin Le répertoire binaries contient les commandes les plus importantes. /dev Le répertoire device ne contient pas de fichiers dans le sens classique du mot. Il contient des fichiers de périphériques par lesquels vous communiquez avec les appareils raccordés à l’ordinateur. Aucun utilisateur, pas même le root, ne peut s’adresser directement au matériel. Les fichiers de périphériques constituent des interfaces avec les pilotes de périphériques et n’ont donc pas de contenu. /etc Seuls les fichiers de configuration doivent se trouver là : passwd, group, hosts, etc. Notez le répertoire /etc/X11 qui est le répertoire de l’interface graphique. Xfree y dépose ses informations de configuration. Les administrateurs ont intérêt à noter le répertoire /etc/skel dont les fichiers se copieront dans le répertoire personnel des nouveaux utilisateurs. /home Le répertoire personnel des utilisateurs figurera souvent sous le répertoire /home/VotreNom. L’avantage est que l’utilisateur pourra bénéficier de son propre système de fichiers. Le deuxième avantage est qu’à partir du répertoire personnel, peu de droits en écriture seront distribués. On pourra même définir des quotas de mémoire. /lib Répertoire des bibliothèques partagées. /opt Répertoire des programmes complémentaires qui ne font pas partie intégrante de Linux. /proc Le répertoire des pseudo-systèmes de fichiers. Les fichiers n’occupent aucune place sur le disque dur. Ces fichiers ne sont que des constructions logiques, ils pointent vers des programmes en mémoire vive qui lisent directement des informations système central, sans les déposer sur le disque dur. /root Le répertoire de l’administrateur. Il ne faut pas confondre le root, le répertoire /, et le répertoire /root. /sbin C’est le répertoire des commandes d’administration. Au démarrage de Linux, de nombreux programmes et fichiers d’administrations sont cherchés, lu et exploités, ce qui aboutit à l’affichage final de la bannière login. En plus du noyau du système /vmlinuz, les fichiers les plus importants pour démarrer Linux figurent dans les répertoires /etc et /sbin. Nous pouvons distinguer trois domaines clés : Les commandes systèmes générales Tels que : init, swapon, swapoff, mkswap, getty. Les commandes de démarrage et d’arrêt du système Tel que : shutdown, fastboot, fasthalt, reboot. Les commande gérant l’espace du disque dur Tel que : fsck, e2fsck, mkfs, mkefs et fdisk. 17

/tmp Le répertoire des fichiers temporaires peut aussi être créé en RAM. Il est accessible par tous en modes lecture et écriture. /var C’est le répertoire des données variables dans lequel Linux dépose des données variables, se modifiant rapidement ou fréquemment. L’utilisateur peut y écrire. Les fichiers temporaires d’impressions peuvent s’y retrouver. /usr Le répertoire des données sensible est un répertoire qui contient une série de répertoire dans lesquels Linux conserve des données très importantes. Notez la présence de : /usr/doc qui contient la documentation de Linux et /usr/games contient des jeux... Le montage d’un système de fichier Tous les supports de données (les disques durs locaux ou réseaux, les lecteurs de disquette, de CDROM) doivent être "montés" afin que les données qu’elles stockent soient accessibles pour les utilisateurs d’un système Linux. Pour lire les données d’un CDROM ou d’une disquette, il faut monter le périphérique correspondant. De même pour retirer un CDROM ou une disquette de son lecteur, il faut au préalable démonter le périphérique correspondant. Tous les systèmes de fichiers montés font parties d’une arborescence unique (/ ). Monter un périphérique revient à rajouter dans l’arborescence une branche. Une fois le support monté, les données de celui-ci sont accéssibles à partir du point de montage choisi pour le support. Le point de montage ("mount point") est le répertoire de la structure de fichier (n’importe lequels des répertoires de l’arborescence) à partir duquel sera monté le support. Pour monter un système de fichier, il faut préciser : – Le type de système de fichier (ext2, VFAT, iso9660, nfs, ...) ; – Le support physique (/dev/hda1, /dev/fd0, /dev/sdb1, adresse réseau, ...) ; – Le point de montage ; Les paramètres de montage d’un système de fichier s’enregistrent dans les fichiers /etc/fstab (file system table) et /etc/mtab (mount table). Le montage d’un système de fichier est réalisé par le super-utilisateur (root), mais l’option "users" du fichier /etc/fstab permet aux utilisateur de monter eux même un système de fichier. L’option "supermount" permet de monter automatiquement un système de fichier dès qu’une demande lui est envoyée. L’option defaults est équivalent à la somme des options auto, rw, exec et nouser. Par défaut, les systèmes de fichiers sont montés en mode asynchrone, c’est à dire que les données sont mises en tampon temporairement. Les données ne sont pas écrites immédiatement sur le support, il y a toujours une différence entre l’état du support et l’état supposé par le système. C’est pourquoi, il ne faut jamais éteindre brutalement un système LINUX, sous peine de perdre les données qui sont encore dans le tampon mais pas encore sur le support. Ainsi, sortir une disquette brutalement de son lecteur peut entrainer la perte de données. Il est préférable de "démonter" avec la commande "umount" un lecteur de CDROM ou un lecteur de disquette avant d’en sortir le CDROM ou la disquette. Une option permet de monter un support en mode synchrone. 18

Pour monter un volume Windows (vfat) sur la première partition (hda1) : – mkdir /mnt/windows – mount -t vfat /dev/hda1 /mnt/windows Pour monter une disquette : – mkfs -t ext2 /dev/fd0 1440 – mount /dev/fd0 – cd /mnt/floppy 1.2.5.9 Le fichier de configuration "/etc/fstab"

Le fichier fstab (file systems table) est la table des différents systèmes de fichiers sur un ordinateur sous Unix/linux : il contient la liste de tous les disques utilisés et des partitions de ces disques. Pour chaque partition, il indique comment elle sera utilisée et intégrée à l’arborescence du système de fichiers global (c’est-à-dire le point de montage). 1.2.5.10 Les fichiers spéciaux du répertoire "/proc"

Sur les systèmes du type Unix, procfs (process file system, système de fichiers processus en anglais) est un pseudo-système de fichiers (pseudo car dynamiquement généré au démarrage) utilisé pour accéder aux informations du noyau sur les processus. Le système de fichiers est souvent monté sur le répertoire /proc.

1.2.6

Les variables d’environnement par défaut

Exemple : [tonguim@guinkotf]$ env ORBIT_SOCKETDIR=/tmp/orbit-tonguim SSH_AGENT_PID=3787 GPG_AGENT_INFO=/tmp/seahorse-XVFWTX/S.gpg-agent :3811 :1 TERM=xterm SHELL=/bin/bash XDG_SESSION_COOKIE=9ea4ba623bf49848bfd71c094a9fe5c3-1258307868.7230861481105114 GTK_RC_FILES=/etc/gtk/gtkrc :/home/tonguim/.gtkrc-1.2-gnome2 WINDOWID=58720309 GTK_MODULES=canberra-gtk-module USER=tonguim LS_COLORS=no=00 :fi=00 :di=01 ;34 :ln=01 ;36 :pi=40 ;33 :so=01 ;35 :do=01 ; 35 :bd=40 ;33 ;01 :cd=40 ;33 ;01 :or=40 ;31 ;01 :su=37 ;41 :sg=30 ;43 :tw=30 ;42 :ow=34 ; 42 :st=37 ;44 :ex=01 ;32 :*.tar=01 ;31 :*.tgz=01 ;31 :*.svgz=01 ;31 :*.arj=01 ; 31 :*.taz=01 ;31 :*.lzh=01 ;31 :*.lzma=01 ;31 :*.zip=01 ;31 :*.z=01 ;31 :*.Z=01 ; 31 :*.dz=01 ;31 :*.gz=01 ;31 :*.bz2=01 ;31 :*.bz=01 ;31 :*.tbz2=01 ;31 :*.tz=01 ; 31 :*.deb=01 ;31 :*.rpm=01 ;31 :*.jar=01 ;31 :*.rar=01 ;31 :*.ace=01 ;31 :*.zoo=01 ; 31 :*.cpio=01 ;31 :*.7z=01 ;31 :*.rz=01 ;31 :*.jpg=01 ;35 :*.jpeg=01 ;35 :*.gif=01 ; 19

35 :*.bmp=01 ;35 :*.pbm=01 ;35 :*.pgm=01 ;35 :*.ppm=01 ;35 :*.tga=01 ;35 :*.xbm=01 ; 35 :*.xpm=01 ;35 :*.tif=01 ;35 :*.tiff=01 ;35 :*.png=01 ;35 :*.svg=01 ;35 :*.mng=01 ; 35 :*.pcx=01 ;35 :*.mov=01 ;35 :*.mpg=01 ;35 :*.mpeg=01 ;35 :*.m2v=01 ;35 :*.mkv=01 ; 35 :*.ogm=01 ;35 :*.mp4=01 ;35 :*.m4v=01 ;35 :*.mp4v=01 ;35 :*.vob=01 ;35 :*.qt=01 ; 35 :*.nuv=01 ;35 :*.wmv=01 ;35 :*.asf=01 ;35 :*.rm=01 ;35 :*.rmvb=01 ;35 :*.flc=01 ; 35 :*.avi=01 ;35 :*.fli=01 ;35 :*.gl=01 ;35 :*.dl=01 ;35 :*.xcf=01 ;35 :*.xwd=01 ; 35 :*.yuv=01 ;35 :*.aac=00 ;36 :*.au=00 ;36 :*.flac=00 ;36 :*.mid=00 ;36 :*.midi=00 ; 36 :*.mka=00 ;36 :*.mp3=00 ;36 :*.mpc=00 ;36 :*.ogg=00 ;36 :*.ra=00 ;36 :*.wav=00 ;36 : GNOME_KEYRING_SOCKET=/tmp/keyring-njKOGJ/socket SSH_AUTH_SOCK=/tmp/keyring-njKOGJ/socket.ssh SESSION_MANAGER=local/guinkotf :/tmp/.ICE-unix/3654 USERNAME=tonguim DESKTOP_SESSION=default PATH=/usr/local/sbin :/usr/local/bin :/usr/sbin :/usr/bin :/sbin :/bin :/usr/games GDM_XSERVER_LOCATION=local PWD=/home/tonguim/Desktop/cours/cours_ibam/se LANG=en_US.UTF-8 GNOME_KEYRING_PID=3641 GDM_LANG=en_US.UTF-8 GDMSESSION=default HISTCONTROL=ignoreboth SHLVL=1 HOME=/home/tonguim GNOME_DESKTOP_SESSION_ID=this-is-deprecated LOGNAME=tonguim XDG_DATA_DIRS=/usr/local/share/ :/usr/share/ :/usr/share/gdm/ DBUS_SESSION_BUS_ADDRESS=unix :abstract=/tmp/dbus-CJOSkKwfFr, guid=5221b1947803e5a5197c3b9f4b00411d LESSOPEN=| /usr/bin/lesspipe %s WINDOWPATH=7 DISPLAY= :0.0 LESSCLOSE=/usr/bin/lesspipe %s %s XAUTHORITY=/home/tonguim/.Xauthority COLORTERM=gnome-terminal _=/usr/bin/env OLDPWD=/home/tonguim [tonguim@guinkotf]$ Les variables essentielles à connaître sont : 1.2.6.1 PWD

Elle contient le nom du répertoire courant. Donc si l’on change de répertoire, la variable sera mise à jour automatiquement.

20

1.2.6.2

HOSTNAME

Elle contient le nom de la machine Linux, soit celui qui a été défini lors de l’installation du système. 1.2.6.3 USER et LOGNAME

Elles contiennent le nom d’usager du compte dans lequel vous travaillez. 1.2.6.4 DISPLAY

Cette variable permet de définir vers quelle destination on veut afficher des fenêtres X11. Par défaut, on aura :0, soit à la console. Par contre, si l’on est branché à distance sur une machine Unix et que l’on veut faire afficher une fenêtre sur une machine locale, on fixera cette variable comme suit : [tonguim@guinkotf]$ DISPLAY=univ-ouaga.bf :0 [tonguim@guinkotf]$ export DISPLAY [tonguim@guinkotf]$ Donc, on fixe la variable DISPLAY et la commande export force la coquille à la rendre active immédiatement pour tous les autres scripts qui s’exécuteront et aux coquilles enfants. 1.2.6.5 SHELL

Elle contient le nom avec chemin d’accès de la coquille ("shell") courante. Dans le cas ci-dessus, on utilise /bin/bash. 1.2.6.6 HOME

Elle contient le nom du répertoire de travail par défaut lorsque vous entrez dans votre compte Linux. 1.2.6.7 TERM

Elle contient le type de terminal défini. Vous n’avez pas à fixer cette variable sauf si vous travaillez à distance et que vous utilisez telnet ou ssh. Il faut alors fixer la variable TERM pour "émuler" un terminal VT100. On le fait comme suit (cas d’une coquille bash) : [tonguim@guinkotf]$ TERM=vt100 [tonguim@guinkotf]$ export TERM [tonguim@guinkotf]$ Donc on fixe la variable TERM et la commande export force la coquille à la rendre active immédiatement pour tous les autres scripts qui s’exécuteront et aux coquilles enfants. 21

1.2.6.8

PATH

Elle contient les chemins d’accès définis. Donc lorsque vous exécutez une commande, cette variable est consultée comme suit : On vérifie si la commande existe dans le répertoire /bin. Ici le est remplacé par le contenu de la variable HOME. Si la commande ne se trouve pas dans le répertoire /bin, la coquille va vérifier dans /bin, sinon, dans /usr/bin, ..., jusque dans /usr/local/bin. Si la commande ne peut être localisée, on aura le message d’erreur suivant : command not found Ceci arrive souvent si vous avez fait un script Perl, par exemple, dans le répertoire courant dans lequel vous vous retrouvez. Il faut alors spécifier avant la commande ./. Exemple : [tonguim@guinkotf ]$ info_fichier bash : info_fichier : command not found [tonguim@guinkotf ]$ ./infof ichier − ktravail.no1.txt Inf ormationsurlef ichier : N omduf ichier : travail.no1.txt T aille : 2Ko. P roprietaire : berube(249) Groupe : hacker(249) Datededernieremodif ication : 2001 − 07 − 23a07 : 48 [tonguim@guinkotf ]$ Donc on voit que si l’on ne spécifie pas ./inf of ichier, on a le message d’erreur commandnotf ound. Si l’on veut éviter ce genre de problème, on peut modifier le fichier .bashrc en ajoutant à la fin de ce fichier, à moins que vous l’ayez déjà fait, ceci : PATH=$PATH :. export PATH On peut évidemment modifier cette variable dans la coquille bash courante, mais il faut le faire à chaque fois qu’une nouvelle coquille est appelée. Enfin, avec la coquille bash, on peut définir ses propres variables. Par exemple, pour définir la variable tarte dont le contenu sera pommes, on fait ceci : [tonguim@guinkotf ]$ fruit="Mangues" [tonguim@guinkotf ]$ export fruit [tonguim@guinkotf ]$

22

Il est très important de ne pas laisser d’espace entre fruit, = et le double apostrophe ”. En effet, si par exemple, on fait ceci : [tonguim@guinkotf]$ fruit = "Mangues" La coquille va croire que l’on veut exécuter la commande fruit et l’on aura ceci : bash : f ruit : commandnotf ound La commande export permet de spécifier à la coquille que l’on veut que la variable tarte soit visible dans tous les scripts bash qui seront exécutés dans la coquille courante. Pour illustrer ceci, voici un exemple simple. Supposons que l’on a le script bash suivant : [tonguim@guinkotf ]$ cat /tmp/script.bash ! /bin/bash echo "La variable planche contient ceci : $planche." [tonguim@guinkotf ]$ Donc on fixe la variable planche à Bété, mais on ne fera pas la commande export juste après l’avoir définie. On va plutôt exécuter le script script.bash sans le faire. On aura ceci : [tonguim@guinkotf ]$ planche="Bété" [tonguim@guinkotf ]$ /tmp/script.bash La variable planche contient ceci : . [tonguim@guinkotf ]$ Maintenant, faisons un export de la variable et réexécutons le script. On aura alors ceci : [tonguim@guinkotf ]$ export planche [tonguim@guinkotf ]$ /tmp/script.bash La variable planche contient ceci : Bété. [tonguim@guinkotf ]$ On voit donc que le script bash a hérité du contenu de la variable planche. Ceci complète donc un petit survol de la coquille bash.

23

1.2.7
1.2.7.1

Les commandes de base
CD : se déplacer dans l’arborescence de répertoires

$ cd fichier 1.2.7.2 $ pwd 1.2.7.3 $ ls $ ls -l 1.2.7.4 MORE, CAT : voir un fichier LS : lister les fichiers d’un répertoire PWD : dans quel répertoire suis-je actuellement ?

$ more fichier $ cat fichier 1.2.7.5 CP : copier un fichier

$ cp fichiers ourcef ichierd estination 1.2.7.6 RM : supprimer un fichier

$ rm fichier 1.2.7.7 MKDIR : créer un répertoire

$ mkdir répertoire 1.2.7.8 MV : déplacer ou renommer un fichier

$ mv -i /chemin/fichier /chemin 1.2.7.9 FIND : retrouver un fichier

$ find /chemin -name ’ab*’ -print 1.2.7.10 TOP, PS : la gestion des processus

$ activité du système : top

1.2.8
$ ps -ef

État des processus

1.2.9

Système d’exploitation

$ uname -o

24

1.2.10

Processeur

– Type de processeur : $ uname -p – Informations détaillées : $ cat /proc/cpuinfo – Charge moyenne du processeur : $ cat /proc/loadavg

1.2.11

Mémoire

– Informations détaillées : $ cat /proc/meminfo – Afficher l’état : $ free -m

1.2.12

Liste matérielle

– lshw – lshw -html > fichier.html – lshal

1.2.13
$ lsusb 1.2.13.1

Liste des périphériques USB

Noyau

$ uname -r 1.2.13.2 MAN : afficher la page d’information d’une commande

$ man commande 1.2.13.3 Afficher un calendrier du mois en cours

– Du mois en cours : $ cal – Annuel : $ cal 2008

25

Sign up to vote on this title
UsefulNot useful