Sujet 101 : Architecture système

Ce laboratoire permet de comprendre et de manipuler l'architecture système sous GNU/Linux. Il enseigne comment déterminer et configurer les paramètres matériels, suivre le processus de démarrage du système, modifier les niveaux d'exécution, ainsi que gérer l'arrêt et le redémarrage du système.

D'après le document Sujet 101 : Architecture système

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Sujet 101 : Architecture système

Linux Systems Architecture · PDF · 30 pages · 1990

Afficher l'aperçu du document

Consulter le document original →

Ce laboratoire permet de comprendre et de manipuler l'architecture système sous GNU/Linux. Il enseigne comment déterminer et configurer les paramètres matériels, suivre le processus de démarrage du système, modifier les niveaux d'exécution, ainsi que gérer l'arrêt et le redémarrage du système. Pour réaliser ce TP, un ordinateur avec une distribution GNU/Linux fonctionnelle et un accès terminal sont nécessaires.

Objectifs

  • Déterminer et configurer les périphériques matériels sous GNU/Linux.
  • Comprendre les différentes phases du démarrage d’un système Linux.
  • Modifier les niveaux d'exécution (runlevels) du système.
  • Arrêter ou redémarrer correctement le système Linux.

Prérequis et installation

  • Connaissances de base en ligne de commande Linux.
  • Accès à un système GNU/Linux avec un terminal.
  • Utilisation des commandes : lspci, lsusb, cat, modprobe, lsmod, runlevel, init, shutdown, telinit.
  • Fichiers système importants : /proc, /sys, /etc/inittab, /etc/init.d, /var/log/messages.

Déterminer et configurer les paramètres du matériel

Cette étape consiste à identifier les périphériques matériels connectés et à vérifier leur configuration. Cela permet de s'assurer que le système reconnaît correctement le matériel et que les pilotes nécessaires sont chargés.

Pour cela, utilisez les commandes suivantes :

$ lspci

Cette commande affiche la liste des périphériques attachés au bus PCI. Exemple de sortie :

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
$ lsusb

Cette commande liste les périphériques USB connectés. Exemple :

Bus 008 Device 005: ID 03f0:2b17 Hewlett-Packard LaserJet 1020
Bus 004 Device 002: ID 1058:0704 Western Digital Technologies, Inc.

Pour connaître les ports d'entrée/sortie utilisés :

$ cat /proc/ioports

Exemple de sortie :

0000-001f : dma1
0060-0060 : keyboard
0070-0077 : rtc0

Pour afficher les interruptions utilisées par les périphériques :

$ cat /proc/interrupts

Exemple :

  0: 303284 309287 IO-APIC-edge timer
  1: 955 833 IO-APIC-edge i8042
 16: 1545 1535 IO-APIC-fasteoi uhci_hcd:usb2, ohci1394, mmc0

Pour voir les canaux DMA en cours :

$ cat /proc/dma

Exemple :

4: cascade

Le système de fichiers /proc contient de nombreuses informations sur le système, notamment :

  • /proc/partitions : partitions du disque
  • /proc/cpuinfo : informations sur le processeur
  • /proc/cmdline : paramètres passés au noyau au démarrage
  • /proc/meminfo : mémoire physique et swap
  • /proc/net : informations réseau

Le système de fichiers /sys (sysfs) permet d’accéder aux informations sur les périphériques et leurs pilotes :

  • /sys/class/ : périphériques regroupés par classes
  • /sys/block/ : périphériques de type bloc
  • /sys/bus/ : organisation des périphériques par bus

Démarrage du système

Cette étape explique les différentes phases d’amorçage d’un système Linux, du BIOS à l’exécution du premier processus utilisateur.

BIOS

Le BIOS (Basic Input Output System) est une interface logicielle bas niveau entre le matériel et le logiciel. Il est stocké dans une mémoire EEPROM et s’exécute dès que l’ordinateur est allumé électriquement. Sa fonction principale est de lire et exécuter le premier secteur physique du média de démarrage, généralement le MBR (Master Boot Record) situé dans les 512 premiers octets du disque dur.

Chargeur de démarrage

Le BIOS active le MBR qui contient le chargeur de démarrage (bootloader). Celui-ci est divisé en deux phases :

  • La première phase charge la seconde phase basée sur un fichier de configuration.
  • La seconde phase offre une interface pour choisir le système d’exploitation à lancer et permet de passer des paramètres au noyau Linux et au processus init.

GRUB (Grand Unified Bootloader)

GRUB est un chargeur de démarrage avancé qui supporte plusieurs systèmes de fichiers, le démarrage réseau, un menu interactif et un shell de commandes. Il peut être protégé par un mot de passe crypté. Son rôle est de charger le noyau Linux en mémoire ainsi que le ramdisk initial initrd.img.

Exemple de fichier de configuration /etc/grub.conf ou /boot/grub/menu.lst :

timeout=10
default=0
title Red Hat
    root (hd0,0)
    kernel /vmlinuz-2.6.12-15 ro root=LABEL=/
    initrd /initrd-2.6.12-15.img
title Windows XP
    rootnoverify (hd0,1)
    chainloader +1

Noyau Linux

Le noyau Linux est chargé en mémoire et initialise le matériel. Les modules nécessaires sont chargés, le système de fichiers racine est monté en lecture seule, puis le premier processus init est lancé.

Init

init est le premier processus utilisateur (PID 1) et le dernier à s’arrêter. Il est le père de tous les autres processus créés via fork(). Il lit le fichier /etc/inittab pour déterminer :

  • Le script à exécuter pour continuer le chargement du système.
  • Le niveau d’exécution (runlevel) par défaut.
  • La façon de lancer les services pour chaque runlevel.

Premier script

Après le chargement du noyau, le script correspondant à sysinit dans /etc/inittab est exécuté :

  • Sous Red Hat : si::sysinit:/etc/rc.d/rc.sysinit
  • Sous Debian : si::sysinit:/etc/init.d/rcS

Ce script configure les paramètres du noyau (via /etc/sysctl.conf), met en place les fichiers périphériques (/dev via udev), configure l’horloge système, charge les tables de caractères du clavier, active les partitions d’échange SWAP, définit le nom d’hôte, et monte les systèmes de fichiers racine et secondaires en lecture-écriture.

Modification des niveaux d'exécution et arrêt ou redémarrage du système

Cette étape explique comment changer le niveau d’exécution du système, ainsi que les commandes pour arrêter ou redémarrer proprement la machine.

Niveaux d'exécution (runlevels)

Les niveaux d’exécution définissent l’état du système et les services lancés. Le fichier /etc/inittab contient la configuration des runlevels par défaut et les scripts associés.

Le script rc

Le script /etc/rc.d/rc ou /etc/init.d/rc prend en argument un niveau d’exécution x :

/etc/init.d/rc x

Il accède au répertoire /etc/rcx.d contenant des liens symboliques nommés [SK]NNservice :

  • S : démarre le service avec l’argument start.
  • K : arrête le service avec l’argument stop.
  • NN : définit l’ordre d’exécution des scripts.

Afficher et changer le runlevel

Pour afficher le runlevel actuel et précédent :

# runlevel
3 5

Pour changer le runlevel, utilisez init ou telinit :

# init 3
# init 1

Note : telinit est un lien symbolique vers init.

Arrêt et redémarrage

La commande shutdown permet d’arrêter ou de redémarrer le système en toute sécurité.

Résultats attendus

  • Identification correcte des périphériques PCI et USB via lspci et lsusb.
  • Affichage des ports d'entrée/sortie, interruptions et canaux DMA actifs via les fichiers /proc/ioports, /proc/interrupts et /proc/dma.
  • Compréhension des phases du démarrage : BIOS, chargeur (GRUB), noyau, init et scripts d'initialisation.
  • Modification effective du niveau d’exécution avec init ou telinit, vérifiable par la commande runlevel.
  • Arrêt ou redémarrage du système sans erreurs grâce à la commande shutdown.

Erreurs courantes

  • Confusion entre les différentes commandes pour gérer les niveaux d’exécution (utiliser init ou telinit, pas directement /etc/init.d/rc sans argument).
  • Ne pas vérifier les permissions nécessaires (certaines commandes doivent être exécutées en root).
  • Modifier les fichiers de configuration sans sauvegarde préalable, risquant de rendre le système non démarrable.
  • Ignorer les messages d’erreur lors du démarrage ou de l’arrêt, qui peuvent indiquer des problèmes matériels ou logiciels.
  • Ne pas respecter l’ordre des scripts dans /etc/rcx.d, ce qui peut causer des services non lancés ou mal arrêtés.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions