Introduction à Linux

publicité
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 où 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 :
Stdin(0)
Stdout(1)
Commande
Stderr(2)
•
•
•
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
netmask
gateway
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
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 :
# aptitude install nom_du_paquet
Aptitude gère aussi la désinstallation des paquets via la commande :
# aptitude purge nom_du_paquet
Une fois un paquet installé, supprimé ou mis à jour, aptitude met à jour sa base de données
locale. Cette base de données est consultable avec la commande dpkg :
usage : # dpkg -option
options :
l paquet
S fichier
L paquet
donne des informations sur le paquet
indique dans quel paquet se trouve le fichier
donne la liste des fichiers contenu dans le paquet
La configuration de aptitude se trouve dans /etc/apt/sources.list. On y trouve des
renseignements sur les sources de aptitude sous la forme :
deb chemin version_de_debian type_de paquet
ex: deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
5- Interface graphique
L'interface graphique est gérée par les paquets xorg et xorg-server. Ils activent un mode
de fenêtrage appelé X11, c'est un window manager. Le fichier de configuration de xorg est
/etc/X11/xorg.conf. La commande X permet de tester l'environnement graphique en vue de
l'accueil d'un desktop manager, bureau graphique à proprement parlé (Ctrl+Alt+BackSpace
pour sortir). La modification, comme suit, de la section "Screen" du fichier xorg.conf permet
d'améliorer l'affichage :
Section "Screen"
Identifier
"Default Screen"
Monitor
"Configured Monitor"
DefaultDepth
16
SubSection "Display"
Depth
16
Modes
"1280x1024"
EndSubSection
EndSection
Une fois un desktop manager installé, la commande startx permet de lancer l'environnement
graphique.
Téléchargement