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
Linux Systems Architecture · PDF · 30 pages · 1990
Afficher l'aperçu du document
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’argumentstart.K: arrête le service avec l’argumentstop.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
lspcietlsusb. - Affichage des ports d'entrée/sortie, interruptions et canaux DMA actifs via les fichiers
/proc/ioports,/proc/interruptset/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
initoutelinit, vérifiable par la commanderunlevel. - 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
initoutelinit, pas directement/etc/init.d/rcsans 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.
Commentaires
Aucun commentaire pour le moment. Posez la première question.