Vous êtes sur la page 1sur 7

1 Introduction à Linux

• 1.1 Un système d’exploitation libre et multi plates-formes

o a) Système gratuit dont les sources sont disponibles et modifiables.

Développement coopératif

Licence GPL (Gnu Public Licence)

Pour ces aspects, on peut consulter un article que j’ai écrit avec Aris Papatheodorou il y a
quelques années pour la revue Multitudes.

o b) Plates-formes supportées.

I386 : Intel/Amd

PowerPC : Apple/IBM

Sparc : Sun

Alpha : Digital

• 1.2 Un système d’exploitation issu du monde Unix

o a) Adaptation développée par Linus Torvalds pour des machines de type


I386 à partir des programmes développés par le projet Gnu.

Le système Unix à la base du développement du système Linux a vu le jour en 1969 dans


les laboratoires Bell. Il se caractérise dès l’origine par :

1. Un système de fichier arborescent et modulaire


2. Une interface unifiée vers les périphériques par l’intermédiaire du système de fichiers
3. Un interpréteur de commandes flexible et interchangeable
4. Le multi-tâches et la gestion des utilisateurs (cf. ci-dessous)

L’histoire d’Unix est très complexe. A très gros traits, on peut dire que les sources d’Unix ont
été pendant longtemps la propriété de la société AT&T mais qu’en parallèle l’université de
Berkeley a développé sa propre version.

Il y a donc deux grandes familles d’Unix, ceux dérivés de la version d’AT&T (système V) et
ceux issus de Berkeley (BSD). On parle de familles parce que des sociétés ont créé des
système Unix soit sur la base de BSD, soit sur la base du système V. Parmi les Unix
commerciaux, on peut citer AIX d’IBM, Solaris de Sun, HP-UX de Hewlett Packard - pour le
système V - et darwin d’Apple - pour les BSD.

Très vite, les versions d’Unix sont devenues incompatibles entre elles. C’est pourquoi les
acteurs du monde Unix ont créé plusieurs groupes de normalisation.
C’est à l’initiative d’un groupe d’utilisateurs qu’est née la norme POSIX qui entend
standardiser l’organisation des systèmes d’exploitation et les interfaces utilisateurs en rendant
le code source portable. Cette norme a permis aux applications de pouvoir s’installer sur
différents systèmes Unix

Aujourd’hui, les différences entre les systèmes BSD et système V subsistent et se situent
surtout au niveau du démarrage de la machine et du système d’impression. Pour les
utilisateurs, ces différences sont minimes.

Les systèmes Unix sont installés surtout sur des serveurs et sur de grosses stations de travail.
Grâce au langage de développement C (créé pour Unix) et à la compatibilité POSIX, les
systèmes et les applications Unix possèdent une très grande portabilité.

Le système Linux a été créé en 1991 par Linus Torvalds, un étudiant finlandais, qui
désirait tout simplement pouvoir exécuter chez lui, sur son propre PC, les programmes qu’il
réalisait ou utilisait dans le cadre de ses études. Comme son université était équipée
d’ordinateurs de type Unix, Linus s’est donc fixé pour objectif de créer un système Unix libre
de droits qui puisse tourner sur une architecture matérielle de type Intel (les PC), les micro-
ordinateurs les plus courants. En fait, à ce moment-là, la tâche n’était pas aussi vaste qu’il y
paraît. Le projet GNU de la FSF (Free Software Foundation) s’était déjà occupé de
redévelopper la plupart des commandes Unix ainsi qu’un certain nombre de logiciels
déterminants comme le compilateur gcc. Un Unix libre, différent du système BSD, était donc
presque réalisé mais la FSF n’avait pas correctement anticipé le formidable développement
du PC. Les programmes du GNU étaient en fait installés par des administrateurs système
soucieux de performances et de portabilité sur les minis ordinateurs tournant sous Unix.
L’idée géniale de Linus sera de se focaliser sur la conception et la réalisation d’un noyau
capable d’interagir avec les programmes du GNU en portant l’ensemble sur les ordinateurs
personnels.

Aujourd’hui le système GNU/Linux est pratiquement certifié POSIX et est utilisé à la fois sur
des serveurs et sur des clients.

Eric Levénez maintient un site qui décrit l’histoire du système Unix et de ses dérivés.

o b) Système multi-tâches et multi-utilisateurs.

Ces systèmes assurent une gestion asynchrone des processus qui permet d’exécuter les
processus concurremment. Pour assurer l’exécution « simultanée » de plusieurs processus ces
systèmes utilisent le temps partagé (Time Scheduling) afin d’allouer des intervalles de
temps d’utilisation CPU qui permettent d’exécuter les processus à tour de rôle en plusieurs
étapes.

Quand le temps alloué au premier processus est épuisé, celui-ci est endormi (état sleep). Le
système mémorise son état d’exécution et passe à l’exécution du processus suivant qui
reprend son exécution à l’étape précédemment mémorisée. Un tel système est un système
multi-tâches.

Ces systèmes assurent une gestion des droits d’accès qui permet à plusieurs utilisateurs de
travailler en même temps sur la même machine. Ces systèmes assurent l’authentification des
utilisateurs et contrôle l’accès aux ressources de la machine. Ces ressources peuvent être les
répertoires ou les fichiers présents dans l’arborescence de la machine, mais aussi l’espace
mémoire associé aux processus qu’exécute l’utilisateur. Un tel système est un système multi-
utilisateurs.

Les processus qui s’exécutent concurremment peuvent donc être des processus qui
appartiennent à un même utilisateur ou à plusieurs utilisateurs différents.

• 1.3 Les différentes distributions Linux

Idéalement, le système Gnu/Linux pourrait être installé « brut de décoffrage » à partir des
codes source (il faudrait néanmoins un compilateur C, une librairie C standard et un noyau de
base...). En pratique, tout le monde a recours à une distribution qui fournit à la base un
programme d’installation et un « gestionnaire de paquets » utilisé pour la mise à jour des
programmes. Ce gestionnaire de paquets permet également de vérifier les dépendances, ce
qui est nécessaire pour un système reposant sur l’utilisation de librairies dynamiques.

Slackware : C’est la distribution la plus ancienne. Elle peut être décrite comme « UNIX-
like » (littéralement : « comme UNIX ») car c’est sa politique que de n’inclure que des
applications stables et aucune interface graphique de configuration spécifique à cette
distribution seulement. Certains fans disent : « Quand vous connaissez Slackware, vous
connaissez Linux... ».

Debian : C’est la distribution officielle de la FSF. Très prisée par les linuxiens, elle est
néanmoins assez difficile à installer et à configurer pour des néophytes. Elle est à conseiller
pour les serveurs.

Suse : Cette distribution allemande est très robuste. Elle peut être utilisée pour installer des
serveurs ou des clients. Certains programmes ne sont pas libres.

Gentoo : Cette distribution a pour particularité de n’installer que peu de binaires,


l’utilisateur compilant les paquets sur sa machine. Elle est donc très pédagogique mais
réservée à des utilisateurs avertis.

Mandrake : Cette distribution française qui reposait initialement sur la distribution redHat
est aujourd’hui la distribution la plus conviviale pour les clients. Elle possède même un outil
de repartionnement intégré qui permet de retailler un système de fichiers NTFS. C’est
certainement la distribution la plus francisée.

RedHat : Cette distribution américaine était la plus diffusée dans le monde, à la fois sur les
serveurs et les machines clientes. Aujourd’hui redhat a abandonné le grand public pour se
consacrer au marché des entreprises avec une distribution extrèmement fiable,
malheureusement payante.

Fedora Core : Cette distribution prend la suite de la redhat pour le grand public. Si la
distribution de base est assez restrictive concernant les droits (pas de plugin xmms pour lire
les fichiers mp3...), elle est extensible car de nombreux sites proposent des paquets
spécialement compilés pour cette distribution. Pour cette raison, elle est à réserver à ceux qui
possèdent une bonne connexion. C’est la distribution que nous installons à l’UFR de Math-
Info.
2 Configuration multi-systèmes

Nous nous situons dans le cas d’un ordinateur doté de deux systèmes d’exploitation,
Windows 2000 et Linux.

• 2.1. Démarrage du système d’exploitation

- Chargeur primaire

Le chargeur primaire est un petit programme localisé dans la ROM de l’ordinateur qui
analyse les différents périphériques présents à la recherche d’un chargeur secondaire
correspondant au noyau du système d’exploitation à activer.

Cette analyse dépend du paramétrage du BIOS qui décrit l’ordre de recherche à respecter
entre les différents périphériques. On peut avoir par exemple : a. A CDROM C b. C Dans le
cas a. le chargeur primaire vérifie si une disquette est présente, si c’est le cas il s’attend à
trouver le chargeur secondaire sur la disquette. En cas d’absence de disquette il effectue la
même recherche sur le CDROM. En cas d’absence du CD ROM le chargeur secondaire est
recherché sur le disque dur. Dans le cas b. la recherche est effectuée uniquement sur le disque
dur. Dans la configuration mise en place en pédagogie seul le disque dur est analysé.

Pour localiser le chargeur secondaire sur le disque dur le chargeur primaire analyse la zone
d’amorce du disque (Master Boot Record).

- Chargeur secondaire

Si l’on désire que l’ordinateur soit doté de deux systèmes d’exploitation, par exemple
Windows 2000 et Linux, on crée une partition primaire réservée à l’unité C : du système
Windows 2000 et on installe dans un premier temps le système Windows 2000 sur cette
première partition du disque dur.

Lors de l’installation du système Linux au minimum deux partitions seront créées. La


première nommée racine est représentée par le caractère /. La deuxième correspond à la zone
de swap. Pour assurer le démarrage du système d’exploitation un programme d’amorçage est
installé sur le disque, soit dans la zone d’amorce du disque (MBR), soit dans la partition
racine. Lors de cette phase d’installation la présence d’un autre système d’exploitation est
détectée. La configuration du programme d’amorçage associe au système Windows 2000 la
première partition primaire qui contient le noyau de ce système et associe au système linux la
partition qui contient le noyau linux. Si on a fait le choix lors de l’installation de créer une
partition /boot, c’est celle-ci qui sera associée, sinon c’est la partition racine qui sera associée.

Le programme d’amorçage peut-être soit le programme lilo soit le programme grub.

Le chargeur primaire lors de l’analyse de la zone d’amorce du disque va lancer l’exécution du


programme d’amorçage qui joue le rôle de chargeur secondaire. C’est ce dernier qui
permettra de choisir le système d’exploitation à utiliser et qui chargera le noyau
correspondant.

• 2.2.Organisation du système GNU/Linux


Le système GNU/Linux est un système unix qui se rattache à la branche système V. Il
reprend donc les caractéristiques d’Unix que nous avons déjà évoquées. Nous allons
simplement tenter d’expliquer comment démarre le système en nous focalisant sur le noyau et
les niveaux de démarrage système V.

- Le noyau linux

Le noyau linux est le programme qui prend en charge les fonctions de base du système
d’exploitation : allocation mémoire et des processus, gestion des entrées-sorties, etc. Dans le
système Gnu/Linux, c’est ce qui est spécifique à linux.

Le noyau est scindé en deux parties spécifiques : le noyau lui-même qui est situé dans le
répertoire /boot (généralement vmlinuz-[version]) et ses modules situés dans le répertoire
/lib/modules/[version]. Les modules sont des parties ajoutées que l’on peut greffer au noyau
pendant son fonctionnement. La plupart des modules servent à gérer du matériel, un type de
système de fichiers, etc. Ces modules sont chargées dynamiquement en mémoire et se
configurent dans le fichier /etc/modules.conf (noyaux 2.4) ou /etc/modprobe.conf (noyaux
2.6).

Cette organisation est rendue nécessaire car c’est au niveau du noyau que linux gère les
périphériques (le cas des cartes graphiques est plus complexe). Si tous les pilotes des
périphériques étaient compilés dans le noyau de base, alors le noyau aurait une taille de
plusieurs dizaines de MO et ne pourrait pas être chargé par le chargeur secondaire.

Par exemple, les machines de cette salle possèdent des cartes réseau de type Realtek
Semiconductor Co., Ltd. RTL-8139/8139C (information glanée en affichant le contenu de
/proc/pci).

Pour prendre en charge la gestion de cette carte, il faut ajouter dans le fichier
/etc/modules.conf (ou /etc/modprobe.conf) la ligne suivante :

alias eth0 8139too

- Les niveaux de démarrage

Le système Gnu/linux est, comme tous les systèmes Unix, organisé en couche. La possibilité
de démarrer le système suivant différent niveaux de démarrage qui correspondent à autant de
couches système est la grande innovation de système V.

Le premier processus lancé est INIT. Ce processus va lire dans le fichier /etc/inittab le niveau
de démarrage choisi par défaut (il est possible de passer un paramètre au chargeur secondaire
pour choisir un niveau différent).

Il existe sept niveaux de démarrage sous linux :

0 .Arrêt

1 .Système mono-tâche, mono-utilisateur

2 .Système multi-tâches, multi-utilisateurs, pas de services réseau


3 .Système multi-tâches, multi-utilisateurs, services réseau activés

4 .Niveau réservé à un usage local = configurable

5 .Niveau 3 + démarrage en graphique

6 .Redémarrage de la machine

On peut dire que choisir un niveau, c’est choisir un ensemble de scripts à exécuter au
démarrage de la machine. Ces scripts sont situés dans /etc/init.d. Il existe un répertoire par
niveau dans /etc/rc.d (exemple en gestion graphique : /etc/rc.d/rc5.d) qui contient des liens
symboliques vers ces scripts. Ces liens ont pour nom K (kill) ou S (start) suivi d’un numéro
d’ordre suivi du nom du script.

Exemple :

La gestion du réseau est activée par le script /etc/init.d/network. En niveau 5, on aura dans le
répertoire rc5.d un lien symbolique ayant pour nom S10network qui pointe vers le fichier
/etc/init.d/network.

Il est possible donc d’activer ou de désactiver des services pour un niveau considéré en
ajoutant ou en supprimant des liens symboliques. Il est également possible de changer l’ordre
dans lequel ces services sont démarrer mais il vaut mieux savoir ce qu’on fait !

• 2.3.Ouverture de session sous Linux

▪ Authentification.

Toute connexion nécessite de saisir son nom de connexion, encore appelé nom de login, et le
mot de passe associé.

Pour se connecter l’utilisateur doit disposer d’un compte personnel. Ce compte décrit au
minimum les informations suivantes :

Son nom de connexion Son mot de passe Son identificateur numérique unique UID Son
identificateur numérique de groupe GID Son répertoire de travail d’origine Le nom de
l’interpréteur de commande

Le compte d’un utilisateur peut être déclaré localement sur une machine. Dans cette
hypothèse, l’utilisateur est authentifié par la machine locale : il ne peut donc se connecter que
sur cette machine. La commande qui permet de changer le mot de passe d’un utilisateur local
est la commande passwd.

Le compte d’un utilisateur peut être déclaré dans une base de comptes centralisée sur un
serveur LDAP (Lightweight Directory Acces Protocol). Dans cette hypothèse, l’utilisateur est
authentifié par le serveur LDAP : il peut donc se connecter sur l’ensemble des machines qui
utilisent le même annuaire LDAP. La commande qui permet de changer de mot de passe est
également la commande passwd. Cette commande permet de s’authentifier à l’annuaire via le
module PAM pam_ldap. Le serveur LDAP du réseau pédagogie est situé sur la machine
diamant ; il contient une extraction des étudiants de l’UFR de Mathématique et
d’Informatique depuis l’annuaire LDAP central de l’université.

Dans la configuration mise en place en pédagogie l’authentification des utilisateurs sous


windows est assuré également par le serveur LDAP de la machine diamant. Cette machine
assure les fonctionnalités de contrôleur de domaine primaire grâce au logiciel samba qui est
configuré pour laisser l’authentification au serveur LDAP.

Malheureusement, windows 2000 ne peut authentifier les utilisateurs avec le mot de passe
défini dans l’attribut userPassword de l’annuaire. Nous avons donc été obligés de rajouter
deux attributs qui gèrent spécifiquement les mots de passe windows : sambaNTPassword et
sambaLMPassword. Pour bénéficier de la synchronisation entre les deux système
d’exploitation, le changement de mot de passe sous Linux est assuré par la commande
smbpasswd.

Le système mis en place repose donc sur l’existence de trois attributs ayant trait aux mot de
passe dans l’annuaire LDAP.

▪ Accès au répertoire de base de l’utilisateur.

Lors d’une ouverture de session le système Linux donne à l’utilisateur l’accès à son répertoire
de travail d’origine. Pour permettre à un même utilisateur de se connecter sur plusieurs
machines différentes tout en disposant de ses données personnelles, les répertoires utilisateurs
sont présents sur un serveur de fichiers central. La ressource nécessaire à l’utilisateur sera
montée dans l’arborescence locale grâce au service NFS (Network File System). Le serveur
NFS du réseau pédagogie est la machine diamant.

Soit un étudiant de licence professionnelle qui a pour répertoire initial /users/lpro/dupl, il


dispose d’un espace de travail qui est physiquement présent sur le serveur diamant. Pour
disposer de cette ressource sur une machine étudiante le système doit exécuter un montage
NFS en tenant compte des informations suivantes :

Localisation de la ressource :

diamant :/users/lpro

Point de montage dans l’arborescence locale :

/users/lpro

Pour éviter de monter dans l’arborescence locale la totalité des répertoires utilisateurs, les
montages NFS sont assurés par un automonteur qui exécute les montages quand une
ressource est requise.