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.