Systèmes informatiques
Fermer ×

Le système Linux

Structure générale

Les couches logicielles

  • Le système d'exploitation
  • La première interface utilisateur est la console, qui permet de gérer le système a l'aide de commandes de gestion du disque et des fichiers, de configuration et paramétrage du système d'exploitation. La console permet également de lancer des applications consoles, c'est à dire des applications qui utilisent l'entrée et la sortie standard qui est du texte. A l'origine la console était la seule interface. On trouvait des applications comme la calculatrice, des éditeurs de texte comme le célèbre vi qui permettait d'écrire les codes sources des programmes, ou les codes du système de formatage de texte groff ou encore les codes du traitement de texte latex qui est toujours utilisé. On trouvait également des logiciels réseaux comme ftp (File Transfert Protocole) pour le transfert de fichiers, lynx pour la navigation web en mode texte uniquement ou links pour la navigation web en mode texte ou graphique (version 2), mail pour le courrier électronique, telnet pour la connexion en console à distance.
  • L'interface graphique est la couche basse du système graphique et basé sur le système unixXWindow. On trouve différentes versions libres comme XFree86 puis Xorg ou encore Wayland.
  • Le gestionnaire de fenêtre ou l'environnement de bureau qui donne l'apparence de l'interface graphique. Il en existe plusieurs dont : gnome, KDE, , Enlightenment, MATE, LXDE, Xfce. Ces derniers environnements nécessitent moins de ressources matérielles.

Architecture du système d'exploitation

  • Le noyau (kernel) créé par Linus Torwalds : gestion de la mémoire, des processus, des drivers de périphériques sous forme de modules ou bien intégrés au noyau.
  • Le système de fichiers
    • la bibliothèque glibc : contient les fonctions de base utilisées par les applications
    • les applications qui peuvent être des commandes standards, ou bien des programmes développés.
  • Le système de démarrage (bootstrap)
    • grub : dans le MBR du disque dur
    • syslinux : live CD, live USB, système FAT
    • Loadlin : permet de charger un noyau linux à partir d’une image et d’installer la partition principale du système de fichier.

Le noyau

Structure générale

Il est représenté par le fichier compressé /boot/vmlinuz-5.10.0-21-amd64 (5.10.0 est la version du noyau, 21 est l’extra version utilisée par les distributions, amd64 pour une machine 64 bits) qui est décompressé et chargé en mémoire au démarrage. Il utilise le fichier system.map qui contient les points d’entrées des modules mémoires (adresses des programmes).

Pour gérer un périphérique, il y a deux possibilités :

La commande uname -a permet d'avoir les informations sur le système d'exploitation (linux), la distribution linux (debian, ubuntu, ...) , la version du noyau, le type de machine (32 ou 64 bits), ... .

Les modules du noyau

Les modules sont en général les pilotes de périphériques, mais peuvent être aussi des programmes de plus haut niveau comme la gestion des disques SCSI, ou la gestion de la mémoire.

Les fichiers modules sont enregistrés dans le répertoire /lib/modules/5.10.0-21-amd64/ qui est la racine de l'arborescente complète, le sous-répertoire kernel contient tous les modules et drivers du système d’exploitation. L’extension des modules est .ko.gz car les modules sont compressés.

Le fichier modules.dep contient la liste des modules disponibles dans l’arborescence, ce fichier est mis à jour avec la commande /sbin/depmod -a à chaque fois que de nouveau modules ou drivers sont installés dans cette arborescence.

Les informations relatives à un module se font avec la commande /sbin/modinfo, la liste des modules et drivers chargés en mémoire est obtenue avec la commande lsmod. L'installation (ou chargement) d’un module en mémoire se fait en mode root avec la commande insmod suivi du nom du module (insmod ne gère pas les dépendances). La désinstallation (suppression) d’un module en mémoire dans le noyau se fait avec la commande rmmod suivi du nom du module sans l’extension. Pour installer un module en mémoire avec ses dépendances, on préférera la commande modprobe, et avec ’option -r pour désinstaller le module.

En dehors de modfinfo et lsmod, les autres commandes ne peuvent exécutées qu'en mode root (super utilisateur).

Pour installer les modules au démarrage, il existe des fichiers de configuration :

Cette liste de fichiers dépend de la distribution.

L'accès utilisateur (non root) aux informations du noyau se fait en accédant à deux inodes situés dans le système de fichiers, créés à chaque démarrage et mis à jour à chaque changement matériel : /proc et /sys.

Exemples :

L'affichage du contenu de /proc/meminfo donne les détails de l'utilisation de la mémoire RAM.
L'affichage du contenu de /proc/modules donne les informations sur les modules chargés en mémoire.
L'affichage du contenu de /proc/cpiinfo donne les informations sur le processeur, en détaillant chaque coeur.

Les pilotes de périphériques

Ils peuvent être intégrés au noyau, mais cela nécessite de compiler le noyau, que ce module ne soit distribué sous licence propriétaire

Ils peuvent être des modules indépendants qui nécessite une compilation séparée, et qui permettent un chargement en fonction du matériel, ce qui est plus souple. Cela permet également un chargement dynamique lors de la détection du matériel.

La détection du matériel est réalisé par un processus de détection nommé udev. Le choix du driver adapté au matériel est configuré dans des fichiers de règles situés dans le répertoire : /etc/udev/rules.d. Les règles sont appliquées dans l’ordre lexicographique des noms des fichiers de règles.

La commande /sbin/hwinfo permet d'obtenir des informations sur les cartes périphériques ainsi que les drivers utilisés.

Le système de fichier

Organisation standardisée

D’après le Standard d’organisation du système de fichiers (FHS Filesystem Hierarchy Standard), la racine du système de fichiers linux comprend les répertoires suivants :

Les autres répertoires comme /root qui correspond au répertoire de travail du super-utilisateur root, ou /home qui contient les répertoires de travail des utilisateurs ne sont pas obligatoire pais très souvent présents.

Le répertoire /usr/lib contient les librairies des commandes du répertoire /usr/bin et /usr/sbin.

Le fichier /etc/ld.so.conf contient la liste des répertoires qui contiennent des librairies partagées. Il est mis à jour par la commande ldconfig en mode root. La commande ldd permet de connaître les librairies partagées nécessaire au bon fonctionnement d'un programme ou d'une commande.

Le répertoire /var contient les sous-répertoires :

et le fichier messages qui contient toutes les informations d’exécution des processus qui utilisent ce fichier.

Le répertoire /dev contient les inodes qui sont associés aux pilotes des périphériques. Ils sont caractérisés par deux nombres :

Exemple avec les pilotes du disque dur :

L'unité de disque dur

Elle composée du MBR (Master Boot record) contient le MBC (Master Boot Code) qui exécute le programme d’amorçage d’une des partitions primaires et la table des partitions (4 partitions primaires max imposées par le BIOS pour Basic Input/Output System), puis des partitions :

La configuration système

Le clavier

Le clavier n'envoie pas le code du caractère mais un code qui correspond à la position de la touche sur le clavier, le code du caractère est obtenu par une table de correspondance. Ce qui permet d'utiliser des claviers différents comme les claviers : AZERTY, QWERTY.

La configuration du clavier peut être obtenue avec la commande localectl ou bien en affichant le contenu du fichier /etc/default/keyboard.

Le système d'authentification

La liste de tous les utilisateurs, incluant les applications du système, est enregistrée dans le fichier /etc/passwd. Les mots de passe cryptés sont enregistrés dans le fichier /etc/shadow qui n'est accessible qu'en mode root.

L'interface graphique

L’interface graphique des systèmes linux est Xfree, Xorg, Wayland. Le client X est sur la machine distante et le serveur X est sur l’ordinateur local qui sert de terminal graphique. La communication entre le client et le serveur utilise des sockets qui peuvent être unix ou TCP/IP. Pour des questions de sécurité, ce sont les sockets unix qui sont utilisés, car en mode TCP/IP, il est possible de se connecter à distance en mode graphique sur un ordinateur avec la commande :
X :display -query machinedistante

Si les sockets TCP/IP ne sont pas disponibles, ce qui est pratiquement toujours le cas, il est possible d'exécuter les applications graphiques sur un ordinateur distant en utilisant ssh avec l'option -X :
ssh -X login@machinedistante
Dans ce cas on travaille sur l'ordinateur distant et non sur l'ordinateur local.

L'interface réseau

Le driver de la carte réseau est dépendant de la carte. La plupart des cartes réseaux sont supportées par linux.

Les identifiant de la carte réseaux étaient eth0, eth1, ... pour les interfaces réseaux par câble (ethernet) et wlan0, ... pour les interfaces réseaux wifi. Aujourd'hui, on trouve plutôt enp0s3, enp44s3, ... pour les interfaces réseaux ethernet et wlp43s3, ... pour les interfaces wifi. Cette nouvelle notation respecte une syntaxe précise :

Les informations sur les différentes interfaces réseaux s'obtenaient avec /sbin/ifconfig, maintenant il faut installer le paquetage net-tools pour utiliser cette commande, sinon il faut utiliser ip address, pour obtenir le type d'information.

La configuration se fait en mode root, en mode utilisateur, ces commandes permettent uniquement d'obtenir les informations sur la configuration réseau.

Les bus de communication

Le bus PCI

Le bus PCI est un bus de communication qui relie le processeur avec les cartes périphériques comme la carte graphique, les cartes réseaux, la carte son, ...

Le débit disponible est de 133Mo/s, 266Mo/s ou encore de 533Mo/s.

La connexion des cartes sur le bus PCI est identifié par un numéro de bus, un numéro de slot et un numéro de fonction sous la forme :
bus:slot.fontion.

Extrait des informations obtenues sur le bus PCI avec la commande lspci -n

00:00.0 0600: 8086:1237 (rev 02)
00:01.1 0101: 8086:7111 (rev 01)
00:03.0 0200: 8086:100e (rev 02)
00:05.0 0401: 8086:2415 (rev 01)
00:07.0 0680: 8086:7113 (rev 08)
00:0d.0 0106: 8086:2829 (rev 02)
		

Toutes les cartes sont sur le bus 0, chaque carte occupe un slot différent. Les identifiants (exprimés en hexadécimal) qui suivent sont : l'identifiant du vendeur de la carte suivi de l'identifiant du produit de la carte, la valeur 8086 correspond à Intel. En plus de la description de la carte, ces identifiants sont très utiles pour trouver le driver de la carte périphérique.

Le bus USB

Le branchement d’un périphérique USB est détecté automatiquement. La liste des périphériques reconnus par linux est sur www.linux-usb.org. Les interfaces connectées sur le bus USB sont identifiées avec un numéro de bus et un numéro de périphérique.

Extrait des informations obtenues avec la commande lsusb

Bus 002 Device 001: ID 1d6b:0003
Bus 001 Device 003: ID 0c45:671b
Bus 001 Device 001: ID 1d6b:0002
		

Comme pour les périphériques PCI, les périphériques sont identifiés avec un identifiant de vendeur et un identifiant de produit. Cet identifiant peut aider à trouver le driver du périphérique.

Emulation et installation

Il est possible d'acheter des ordinateurs avec linux préinstallés, on trouve la liste des vendeurs sur certains site des distributions, comme par exemple la distribution Ubuntu qui propose une liste de vendeurs d'ordinateurs avec ubuntu préinstallé

Pour ceux qui veulent essayer ou utiliser linux sans changer le système d'exploitation déjà installé, il est possible d'utiliser une machine virtuelle avec des logiciels comme qemu ou VirtualBox en sachant que les deux émulateurs ne fonctionnent pas toujours correctement s'ils sont installés sur le même ordinateur, il est préférable de choisir un des deux.

Il faut également savoir que VirtualBox ne peut émuler que les processeurs utilisés sur les PC, alors que qemu peut émuler d'autres processeurs.

Notez que je décline toutes responsabilités quant aux conséquences que pourraient avoir l'application des méthodes et conseils suivants. Ceux-ci pourraient être erronés ou obsolètes.

Machine virtuelle avec VirtualBox

Il faut, bien évidement, installer VirtualBox en téléchargeant l'installateur pour le système d'exploitation installé sur la machine.

Pour une utilisation complète de la machine virtuelle, il est conseillé de prévoir le pack d'extension (extension pack) ainsi que les Guest Additions.

Après avoir installé VirtualBox, on va maintenant installer linux comme VM dans VirtualBox. Avant de commencer, il faut savoir que l'ordinateur sur lequel fonctionne VirtualBox est l'ordinateur Hôte et la machine virtuelle qui est exécutée à partir de VirtualBox est l'ordinateur invité.

Pour installer linux, il faut prévoir 5Go pour le fichier image iso de linux et au moins 10Go pour le fichier qui contiendra linux sur le disque dur de l'ordinateur Hôte. Il est également souhaitable d'avoir un très bon débit pour l'accès à internet.

Ensuite, on peut commencer l'installation de linux dans VirtualBox :

  1. Choisir la distribution linux, la dernière version LTS de Ubuntu est un choix qui permet de débuter avec linux, mais il est tout à fait possible de choisir d'autres distributions.
  2. Télécharger le fichier iso que l'on nomme : image ISO.
  3. Lancer Virtualox et commencer par créer une nouvelle machine virtuelle (bouton nouvelle)
    1. Première fenêtre : Nom et système d'exploitation, donner le nom qui sera le nom du fichier (ex ubuntu), choisir le type (Linux), choisir la version (ex ubuntu 64-bits)
    2. Fenêtre suivante : taille mémoire 1024Mo convient, il n'est pas nécessaire de changer
    3. Fenêtre suivante : Disque dur, choisir créer un disque dur virtuel, cliquer sur créer
    4. Fenêtre suivante : Type de fichier de disque dur, le choix VDI convient
    5. Fenêtre suivante : Stockage sur disque dur physique : le choix dynamiquement alloué convient
    6. Fenêtre suivante : Emplacement et taille, l'emplacement convient, positionner la taille au minimum à 10Go (ex 15Go), cliquer sur créer.
    7. La création de la machine virtuelle est maintenant terminée
  4. Maintenant on va la configurer pour l'installation de linux (bouton Configuration)
    1. Menu stockage : ajouter l'image ISO de linux dans contrôleur IDE, bouton + bleu, choisir "optical drive", dans la fenêtre qui apparaît, ajouter l'image ISO, puis terminer avec "Choisir"
    2. Menu Système : Modifier l'ordre de d'amorçage en commençant par Optique, suivi de disque dur, ces deux choix doivent être cochés.
    3. Cliquer sur OK, la configuration est terminée
  5. Maintenant on va installer linux sur la machine virtuelle (bouton Démarrer)
    1. Attendre le premier menu dans la fenêtre Install, on est toujours dans VirtualBox
    2. Choisir la langue (ex Français), puis cliquer sur installer Ubuntu
    3. Fenêtre suivante : choisir French, puis French-french, bouton continuer
    4. Fenêtre suivante : Installation normale, et Télécharger les mises à jour pendant l'installation, bouton continuer
    5. Fenêtre suivante : Effacer le disque et installer Ubuntu (vérifier que c'est bien le disque de la machine virtuelle, que l'on est toujours dans VirtualBox), bouton Installer maintenant
    6. Fenêtre suivante : on est toujours dans VirtualBox, bouton continuer
    7. Fenêtre suivante : Paris (ou choisir l'endroit où on est), bouton Continuer
    8. Fenêtre suivante : renseigner le nom (ex prénom+nom), le nom de la machine, le login, le mot de passe
    9. Fenêtre suivante : attendre la fin de copie des fichiers qui peut être très longue.
    10. Fenêtre suivante : cliquer sur redémarrer maintenant
    11. Si on vous demande d'éjecter le CD, alors arrêter la VM en fermant la fenêtre, modifier dans système (configuration) l'ordre d'amorçage, éventuellement supprimer le ficher ISO dans la configuration (stockage IDE) et redémarrer la machine virtuelle.
    12. La machine va démarrer, demander le mot de passe.
    13. Ensuite il va y avoir une fenêtre pour la première configuration, passer tout.
    14. Il peut être plus confortable de modifier la taille de l'écran, cliquer en haut et à droite de l'écran pour faire apparaître le menu, puis choisir paramètres.
    15. Enfin il est conseillé de faire un instantané, qui est une "photo" de l'état de la machine. Ceci permet de revenir en arrière en cas de problèmes.

Pour configurer la machine virtuelle, elle doit être arrêtée.

Pour faire un instantané, on choisit dans menu->Machine>outils>instantanés, des nouveaux boutons apparaissent, choisir prendre, puis renseigner la boîte de dialogue, puis cliquer sur OK.

Utilisation d'une clé live USB

Avant d'installer linux sur l'ordinateur seul ou en dual-boot avec le système existant, il faut savoir si tous les périphériques sont supportés par linux, c'est le point faible de linux.

On va donc commencer par utiliser une version live-USB, c'est à dire une version installée sur clé USB avec laquelle on va démarrer l'ordinateur.

Pour créer une clé USB live, il suffit de télécharger l'image ISO en version USB, puis de copier cette image sur la clé, mais ne pas copier le fichier ISO sur la clé. Les outils de copie dépendent du système d'exploitation de la machine sur laquelle on va effectuer la copie. On peut créer une clé live USB ubuntu en utilisant le logiciel Rufus pour windows

Pour démarrer l'ordinateur à partir de la clé USB, il faut accéder au setup du BIOS au démarrage, puis modifier l'ordre de démarrage de l'ordinateur en choisissant la clé USB. Cette configuration dépend de l'ordinateur, ce qui fait qu'il faut se référer à la documentation de l'ordinateur pour modifier l'ordre de démarrage de l'ordinateur.

Après démarrage, il faut vérifier quels sont les périphériques qui ne sont pas détectés.

Après avoir fait la liste des périphériques non détectés. Il faut effectuer une recherche sur internet afin d'essayer de trouver les drivers à utiliser. On peut affiner la recherche an ajoutant l'identifiant vendeur et produit. Lorsqu'on trouve le driver à installer, il est possible de vérifier si le driver gère ce périphérique avec la commande modinfo. Pour certains drivers, la commande modinfo donne la liste des identifiants supportés par le driver.

Extrait de la commande lspci -nv pour la carte réseau

00:03.0 Ethernet controller [0200]: Intel Corporation 82540EM Gigabit Ethernet Controller [8086:100e] (rev 02)		
		

Extrait de la commande /sbin/modinfo e1000

alias:          pci:v00008086d0000100Esv*sd*bc*sc*i*
		

On remarque que la carte ethernet a l'identifiant de vendeur 8086 et de produit 100e. Le driver e1000 fournit la ligne alias qui précise que le driver supporte la carte réseau de vendeur 8086 et produit 100E. La carte réseau fonctionne donc avec le driver e1000.

Après avoir trouvé tous les drivers des périphériques, on peut installer linux sur l'ordinateur soit seul, soit en dual-boot avec le système existant.

Installation de linux

L'installation de linux sur un ordinateur déjà pourvu d'un système d'exploitation est réservé aux utilisateurs expérimentés.
De plus, avant de faire l'installation, il faut effectuer une sauvegarde complète de l'ordinateur, en incluant une sauvegarde du système, afin de pouvoir restaurer le système d'origine en cas de problème.

Après avoir tout sauvegardé, il faut utiliser la procédure proposée par la distribution choisie comme par exemple avec l'installation d'ubuntu ou bien avec cette documentation pour l'installation en dual-boot qu'il faut lire entièrement.

Configuration

Que ce soit sur la VM, ou sur l'ordinateur, linux permet de personnaliser l'environnement et d'ajouter des fonctionnalités ainsi que de nombreux logiciels sous la forme de paquetage.

Accès root

Linux offre deux modes d'accès à l'administrateur :

Attention, en mode root, tout manipulation est irréversible, il est très vivement conseillé de bien lire la documentation avant d'exécuter une commande en root.

Gestion des paquetages

Ce qui suit concerne les distributions qui utilisent le système apt que l'on trouve dans les distributions debian et dérivées comme ubuntu. Pour les autres distributions, il faut chercher la documentation sur internet.

Après installation, il faut déjà vérifier les sources des paquetages : dvd, internet. Du fait que la clé usb d'installation ou l'image iso ne sera plus présente, il est conseillé de supprimer la source dvd des sources de paquetages pour ne conserver que les sources internet si cela n'est pas déjà fait. Ceci pourrait se produire, s'il manque les drivers des cartes réseaux lors de l'installation.

Pour connaître la liste des sources nommés dépôts, il faut consulter le fichier /etc/apt/sources.list. Les lignes qui contiennent une référence à un cdrom doivent être commentées. Chaque ligne non commentée contient l'accès à un dépôt. La syntaxe de la ligne dépend de la distribution. Dans les deux cas les derniers termes permettent de préciser les catégories de paquetages auxquels on accède. Il faut se référer à la documentation de la distribution pour avoir plus d'informations et de détails.

L'installation des paquetages peut se faire avec une application graphique comme synaptic qui n'est pas toujours installée par défaut.

On peut également installer les paquetages en mode root en ligne de commande avec la commande apt, en utilisant apt update puis apt install nom_du_paquetage.

Exemple d'installation du logiciel synaptic :

apt update apt install synaptic

Ensuite il est préférable d'utiliser le logiciel synaptic pour installer tout nouveau paquetage.

Les commandes disponibles

L'ensemble de la syntaxe est disponible sur le site computerhope.

Logiciels installés

Lors de l'installation, les principaux logiciels de navigation internet, mail, bureautique sont installés.