Introduction à Linux
Par THOREZ Nicolas
I – Présentation
Linux est un noyau (kernel) de système d'exploitation. Créé en 1991 par Linus Torvalds,
ce noyau est un clone de système UNIX, possédant une compatibilité avec la norme POSIX.
Fournit sous licence GNU (GNU's Not Unix), projet crée et dirigé par Richard Stallman, Linux est
libre, ce qui permet à n'importe quel personne de modifier les sources et de créer un noyau
selon ces désirs ou besoins. Toute l'histoire de Linux, ses sources et dernières versions sont
disponibles sur le site www.kernel.org .
Linux se caractérise par par une gestion de système multitâche et multi-utilisateurs.
Cependant, tout comme d'autres noyaux libres (BSD, Hurd, Mach, FreeBeOS, …), Linux n'est
qu'une partie d'un système d'exploitation. Afin d'être pleinement opérant, il nécessite des
pilotes pour interagir avec les périphériques et des applications de bases afin d'interagir avec
l'opérateur. Le système d'exploitation correspond à l'association Application-Noyau-Pilotes.
Parmi les distributions Linux (OS embarquant un noyau Linux), nous trouvons :
Debian
Ubuntu
Knoppix
Gentoo
Slackware
Red Hat
CentOS
Fedora
SuSE
OpenSuSE
LFS (Linux From Scratch)
Mandriva
Nous trouverons aussi des OS Linux, spécialisé dans certaines tâches, tels que :
IPCop (Routeur)
Vyatta (Routeur)
m0n0wall (Routeur)
untangled (Routeur)
FreeNAS (NAS)
SME-Server (Serveur SME)
Dans la suite de ce document, nous utiliserons Debian comme OS. Les principes de
Linux, qui seront donnés par la suite, restent valables mais certains comportement et certaines
commandes peuvent variés selon les OS Linux. Il est donc recommandé d'étudier la
documentations livrées avec l'OS afin de connaître ses spécifications et particularités.
II – FHS (File Hierarchy Standard)
Les répertoires d'un système Linux sont toujours organisés de la même manière selon
un système appelé FHS ou norme de hiérarchie de fichiers.
1- Rôles des répertoires systèmes
On trouve :
Répertoires Fonctions
/ Racine du système
/bin Commandes utilisateurs de base
/boot Fichiers de démarrage
/dev Disques et périphériques
/etc Configuration spécifique du système hôte
/home Répertoire des utilisateurs
/lib Modules du noyau et bibliothèques partagées
/media Point de montage des supports amovibles
/mnt Point de montage des fichiers systèmes
temporaires
/opt Paquets d'applications additionnelles
/root Dossier de l'administrateur
/sbin Fichiers et commandes systèmes pour root
/srv Dossier des services
/tmp Fichiers temporaires
/usr Fichiers partagés en lecture seule
2- /bin et /sbin
/bin contient les commandes pour utiliser le système en tant qu'utilisateur. /sbin
contient les commandes de démarrage, de restauration, et de réparation en plus des
commandes d'utilisation accessibles uniquement à l'administrateur.
III – La console
En tant que système multi-utilisateur, il existe 2 types d'utilisateurs : l'utilisateur
standard, avec des droits limités, et l'administrateur ou root, avec les pleins pouvoirs. Afin de
différencier ces 2 types d'utilisateurs, l'usage veut que l'utilisateur standard soit symbolisé pas
$ et l'administrateur par #. Cette convention se retrouve dans le prompt (entête) de la ligne de
commande de la console.
Suite au démarrage du système, on se connecte à la console via un compte utilisateur. Il
est déconseillé de se connecter directement avec le compte root. La console ainsi présentée
représente un écran texte branché sur une prise VGA. Elle exécute un shell, lien entre le kernel
et l'utilisateur. Celui de Debian s'appelle BASH (Bourne Another Shell). La console comporte 6
écrans différents appelés TTY. On bascule de l'un à l'autre grâce à la combinaison de touche
Alt+Fx Fx représente les touches de foncions de 1 à 6 (Alt+F2 par exemple). Il existe un
7ème écran (F7) correspondant à la console graphique. Le basculement de l'interface
graphique vers l'interface texte se fait grâce à la combinaison de touche Ctrl+Alt+F1. Au
niveau du prompt de la console, l'opérateur peut entrer des commandes suivies de leurs
options et/ou arguments. Ces commandes comme tout l'environnement Linux est sensible à la
casse, format des caractères. Ainsi papa est différent de PAPA lui-même différent de PaPa.
La complétion automatique
Cette sensibilité à la casse rend compliqué l'entrée de commandes dans le shell. Afin de
faciliter ces entrées, un mécanisme de complétion automatique est disponible. La complétion
automatique, activé par la pression de la touche de tabulation (TAB), va chercher les
possibilités de complétion et complète la commandes / le chemin / le nom de fichier
partiellement entrée dans la console. Dans le cas de possibilités multiples, une autre pression
de TAB permet d'afficher toutes les possibilités disponibles. Les secteurs de recherches de la
complétion automatique sont la variable $PATH, pour les commandes, et le répertoire courant
(en prenant en compte le chemin partiellement entré, le cas échéant) pour les répertoires, les
fichiers et les commandes non intégrées au shell.
Les variables
Les variables sont des fichiers systèmes qui contiennent différentes données utilisées
par le système ou n'importe quelle commande y faisant appel. Elles sont caractérisées par :
Noms en majuscules
Nom toujours précédé par $
Les caractères spéciaux
De plus certains caractères ont une fonction particulière dans un système Linux, il
convient de les éviter :
&
|
(
)
;
'
$
\
espace
tabulation
<
>
''
Parmi ces caractères, certains ont une signification directe dans le shell tels que :
&& Équivalent du booléen AND
|| Équivalent du booléen OR
'x' Exécution de x par les commandes avant une
interprétation par le shell
''x'' Interprétation de x par le shell avant une
exécution par les commandes
1- Les redirections
Le schéma standard d'une interprétation est :
Commande
Stdin(0)
Stderr(2)
Stdout(1)
Stdin correspond à l'entrée standard d'une commande (options/arguments)
Stdout correspond au résultat normal de la commande
Stderr correspond au résultat de la commande en cas d'erreur (souvent un message
d'erreur)
1.1- redirection de Stdout
La redirection de Stdout permet entre autre de renvoyer le résultat d'une commande
vers un fichier (sauvegarde d'une liste par exemple). On trouvera cette redirection sous deux
formes :
commande > fichier
Création de fichier et écrasement si fichier existant
commande >> fichier
Création de fichier ou ajout à l'intérieur si fichier existant
1.2- redirection de Stdin
La redirection de Stdin permet d'utiliser le contenu d'un fichier comme argument d'une
commande.
commande < fichier
1.3- redirection de Stdout
La redirection de Stdout permet de conserver un journal d'erreurs (log) ou de supprimer
l'affichage des erreurs à l'écran (et parfois le gel de la console qui en résulte)
commande 2> fichier
envoie l'erreur vers un log
commande 2> /dev/null
envoie l'erreur vers un ''trou noir''
Il est possible d'enchaîner les redirections de Stdout et Stderr.
2- les pipes (|)
Le pipes permet l'intégration d'une redirection de Stdout dans une redirection de Stdin
(le résultat d'une commande est interprété par une autre commande).
IV – Configuration
1- le boot
Le fichier /boot/grub/menu.lst contient la configuration utilisé par le lanceur (GRUB) afin
de démarrer l'OS. Les modifications de ce fichier permettent de lancer différents noyaux,
améliorer l'affichage de la console, etc.... L'ajout de vga=773 à la fin de la ligne kernel permet
d'afficher la console en 1024x768 16 bits.
2- la carte réseau
L'état de la carte réseau peut être consulté grâce à la commande # ifconfig. Le fichier
de configuration des interfaces réseaux est /etc/network/interfaces. On y trouve une interface
nommée loopback (c'est le réseau ou boucle interne) et toutes les interfaces réseaux
physiques ainsi que leurs alias.
La structure d'une configuration d'interface est toujours la même :
type d'activation de l'interface
méthode d'adressage
informations obligatoires et optionnelles
Le type d'activation est soit auto pour automatique soit allow-hotplug pour une activation lors
de la connexion d'un câble au périphérique. Le type est toujours suivi par le nom de l'interface
(lo pour loopback, eth0 pour la première interface réseau...).
La méthode d'adressage indique le nom de l'interface ciblée, le réseau à utilisé et la
configuration de l'adresse IP. Par exemple : iface eth0 inet dhcp. DHCP indique que l'interface
recevra une adresse IP via un serveur DHCP. L'option static à la place de dhcp permet de fixer
l'adresse. Des informations optionnelles sont alors demandées.
Parmis informations obligatoires (uniquement dans le cas static), on trouve :
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
On trouve les informations optionnelles à la suite et sous le même format. Elles concernent
l'adresse de broadcast, etc...
Les serveurs DNS de références sont renseignés dans le fichier /etc/resolv.conf. Dans ce fichier,
on trouvera obligatoirement une ligne domain, donnant le nom du domaine auquel appartient
la machine, la ligne search, indiquant la zone de recherche si un nom n'est pas un FQDN, et au
moins l'adresse d'un serveur DNS de référence sous la forme nameserver xxx.xxx.xxx.xxx.
A noter que pour valider toutes modifications sur ces fichiers de configuration, le redémarrage
du service réseau est nécéssaire :
# /etc/init.d/networking restart
3- Montage automatique
Au démarrage, certains périphériques de stockage tels que les disques durs ou les clés
USB sont automatiquement montées. Le système lit le fichier /etc/fstab afin de connaître quels
périphérique monter et où le monter.
4- Gestion des paquets
On appelle paquet, un groupe de données donnant de nouvelles fonctionnalités à l'OS.
Le gestionnaire de paquet est la commande aptitude. Aptitude interroge la base de données
des dépôts Debian afin de mettre à jour sa liste de paquets disponibles. Cette interrogation est
effectuée par la commande :
# aptitude update
Une fois la mise à jour de la base de données effectuée, aptitude peut mettre à jour tous les
paquets déjà installés via la commande :
# aptitude safe-upgrade
Après cela, aptitude prend en charge l'installation de nouveaux paquets. On peut rechercher
des paquets :
# aptitude search nom_du_paquet
ou en installer :
1 / 6 100%