Vous êtes sur la page 1sur 42

Architecture systme

Copyright Ounissi Mounir. All rights reserved


Objectifs

Savoir dterminer les ressources


matrielles des priphriques.
permettant de lister les
priphriques (par exemple : lsusb,
lspci, etc.).
Comprendre les concepts de sysfs,
udev, hald, D-Bus.
systmes de fichiers virtuels /proc et
/sys.

Copyright Ounissi Mounir. All rights reserved


Plan

Dterminer et configurer les


paramtres du matriel
Dmarrage du systme
Modification des niveaux
d'excution et arrt ou
redmarrage du systme

Copyright Ounissi Mounir. All rights reserved


Dterminer et configurer les paramtres du matriel

Copyright Ounissi Mounir. All rights reserved


lspci : les priphriques attachs au bus PCI

$lspci

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:01.0 PCI bridge: Intel Corporation Mobile 4 Series Chipset PCI Express Graphics Port (rev 07)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)

Copyright Ounissi Mounir. All rights reserved


lsusb
$ lsusb
Bus 008 Device 005: ID 03f0:2b17 Hewlett-Packard LaserJet 1020
Bus 008 Device 004: ID 04f2:b008 Chicony Electronics Co., Ltd
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 003: ID 15d9:0a4c
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 1058:0704 Western Digital Technologies, Inc.
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Copyright Ounissi Mounir. All rights reserved 6


/proc/ioports : ports entres sorties disponibles

Obtenir la liste des ports d'entre/sortie

$cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0077 : rtc0
0080-008f : dma page reg
00c0-00df : dma2

Copyright Ounissi Mounir. All rights reserved


/proc/interrupts

Obtenir la liste de toutes les interruptions de tous les


priphriques :
$ cat /proc/interrupts
CPU0 CPU1
0: 303284 309287 IO-APIC-edge timer
1: 955 833 IO-APIC-edge i8042
8: 27 26 IO-APIC-edge rtc0
9: 3406 3219 IO-APIC-fasteoi acpi
12: 69 51 IO-APIC-edge i8042
16: 1545 1535 IO-APIC-fasteoi uhci\_hcd:usb2, ohci1394,
mmc0
17: 9 8 IO-APIC-fasteoi HDA Intel
18: 0 0 IO-APIC-fasteoi uhci\_hcd:usb8
19: 1197 1200 IO-APIC-fasteoi ehci\_hcd:usb1, uhci\_h
Copyright Ounissi Mounir. All rights reserved
/proc/interrupts

Copyright Ounissi Mounir. All rights reserved


/proc/dma

Obtenir la liste des canaux DMA (Direct Memory


Acess) en cours dutilisation.
$ cat /proc/dma
4: cascade

Copyright Ounissi Mounir. All rights reserved


/proc

Pseudo-systme de fichiers dinformations sur le systme :

Partitions : /proc/partitions
Processeur : /proc/cpuinfo
Arguments passs au noyau Linux lors du boot:
/proc/cmdline
Les quantits de mmoires (physique et swap) libres et
utilises : /proc/meminfo
Informations sur la pile TCP/IP : /proc/net

Copyright Ounissi Mounir. All rights reserved


Sysfs ou /sys

Sysfs est un systme de fichiers virtuel introduit par le


noyau Linux 2.6.
Sysfs permet d'exporter depuis l'espace noyau vers
l'espace utilisateur des informations sur les
priphriques du systme et leurs pilotes.
/sys/class/ : montre les priphriques regroups en
classes,
/sys/block/ : contient les priphriques de type bloc.
/sys/bus/ : la manire dont chaque priphrique
appartient aux diffrents bus.
... Copyright Ounissi Mounir. All rights reserved
Sysfs ou /sys

Copyright Ounissi Mounir. All rights reserved


memoire

Copyright Ounissi Mounir. All rights reserved


Information gnrales

Copyright Ounissi Mounir. All rights reserved


Dmarrage du systme

Copyright Ounissi Mounir. All rights reserved


Processus de dmarrage (1)
Power-On Self-Test (POST) :
The modern Universal Extended Firmware Interface
(UEFI)
The classical Basic Input Output System (BIOS)
Bootable device:
A partir du microprogramme d'amorce UEFI
Ou Master Boot Record
Boot Loader : GRUB2
Kernel :
Le noyau est charg avec initramfs.
initramfs contient des modules du noyau pour tout le
matriel ncessaire l'amorage et des scripts initiaux
ncessaires pour passer l'tape suivante du dmarrage.
RHEL 7, initramfs contient un systme complet (qui peut
tre utilis des fins de dpannage).
Processus de dmarrage (2)
Processus de dmarrage (3)
/etc/init de initramfs.
li systemd.
Le dmon udev partir de initramfs
Systemd de initramfs
Excuter toutes les units partir de initrd.target
Le systme de fichiers racine sur le disque est mont sur le
rpertoire /sysroot
Switching to the root file system
Le systme bascule sur le systme de fichiers racine qui se
trouve sur le disque et peut ce stade charger le processus
systemd partir du disque.
Systemd recherche la cible par dfaut excuter et excute
toutes ses units.
Dans ce processus, un cran de connexion est prsent et
l'utilisateur peut s'authentifier.
Lab : Rpertorier le contenu de l'image de disque RAM initial

Pour rpertorier les fichiers inclus dans initramfs,


excutez la commande suivante en tant qu'utilisateur
root :
# lsinitrd
Pour ne rpertorier que les fichiers qui se trouvent
dans le rpertoire /etc, utilisez la commande suivante
# lsinitrd | grep etc/
Pour obtenir la sortie de contenu d'un fichier
spcifique qui se situe dans initramfs pour le noyau
actuel, utiliser l'option -f :
# lsinitrd -f /etc/systemd/journald.conf
Chargeur de dmarrage

Le BIOS active le MBR


Le chargeur est dcompos en deux parties.
Le chargeur initial : charge la seconde phase,
base sur un fichier de configuration.
La seconde phase fournit une interface pour
lancer un systme dexploitation parmi un choix
donn.
Passer des paramtres au noyau Linux et au
processus init ou systemd.
kernel

/var/log/dmesg et dmesg : le tampon des messages


du noyau
Le matriel est dtect et initialis.
initramfs est charg, les modules prsents
ventuellement chargs.
Le noyau monte le systme de fichiers racine en
lecture seule.
Le premier processus est lanc : init ou systemd
init

Init est le premier dmarr et dernier stopp au sein


du systme, PID 1
init est le pre de tous les autres processus qui seront
crs par l'appel system fork()
init lit le fichier /etc/inittab pour savoir :
quel est le fichier excuter pour continuer le
chargement du systme
quel est le runlevel (niveau d'excution) par dfault
comment lancer les services pour un runlevel donn
Modification des niveaux d'excution et arrt ou redmarrage
du systme
Niveaux d'excution

Niveau Effet
0
Halt : stoppe le systme dexploitation, teint la machine.
1
Mode mono-utilisateur utilis pour la maintenance, mode console.

2
Multi-utilisateur, sans rseau, console.
3
Multi-utilisateur, avec rseau, console.
4
Idem que le 3, laiss la convenance de ladministrateur.
5
Multi-utilisateur, avec rseau, avec environnement graphique X
Window.
6
Reboot : redmarrage de la machine.
S ,s
Single user mode, le mode le plus bas en cas de soucis.
Le script rc

/etc/rc.d/rc ou /etc/init.d/rc prend comme


argument le niveau dexcution x selon :
initdefault Ou la commande init (telinit)
/etc/init.d/rc x
Accde au rpertoire /etc/rcx.d contenant des
liens de la forme [SK]NNservice
S : lance le script avec l'argument start
(dmarrage du service)
K : lance le script avec l'argument stop (arrt du
service)
NN : est un rang qui fixe l'ordre dans lequel les
scripts sont lancs
runlevel, init, telinit

runlevel :Afficher le niveau d'excution


prcdent et actuel.
# runlevel
35
Init ou telinit : Changer le niveau d'excution
$ ls -l /sbin/telinit
lrwxrwxrwx 1 root root 4 jan 8 16:41 /sbin/telinit
-> init
# init 3
# init 1
systemd

Remplaant de init et upstart


Adopt par Debian 7, RedHat 7
Introduit la notion d'unit : service, target .
But :
Offrir une meilleure gestion des dpendances entre les
services,
Permettre le chargement en parallle des services au
dmarrage.
Sur Red Hat Enterprise Linux 7, le concept des
niveaux d'excution a t remplac par les cibles
(targets) Systemd.
systemctl : Contrle de systemd et grer les units
systemd

Comprendre le systme de dmarrage d'une


machine, et en particulier le processus de PID
1, qui est responsable du lancement de tous les
autres processus.
Diffrentes alternatives
Init system V
Upstart : Ubuntu (vers 6.10), Fedora ( 9
vers 14), RHEL 6
Systemd : Fedora (vers 15), openSuse
(vers 12.1), Mandriva,centos ...
Les buts de Systemd

Acclrer le dmarrage du systme


Eliminer le recours des scripts shell (robustesse et
rapidit)
Diminuer le nombre de processus lancs au
dmarrage
Rationaliser la gestion des services
Uniformiser la gestion des services (architecture
commune toutes les distributions)
Inclure de nouvelles fonctionnalits dans le systme
d'init
Les composants de systemd

Rpertoire Description
/usr/lib/systemd/system/ Unit systemd distribues avec RPM
installs
/run/systemd/system/ Units systemd cres pendant
lexcution. Ce rpertoire a priorit sur
le rpertoire dunits des services
installes
/etc/systemd/system Units systemd cres et gres par
ladministrateur systme. Ce rpertoire
a priorit sur les rpertoire avec units
de runtime
Niveaux dexcution System V avec le cible systemd

Niveau Unit de cible Description


0 runlevel0.target Quitter et teindre le systme
poweroff.target
1 runlevel1.target.rescue.target Installer un shell de secours
2 runlevel2.target.multi-user.target Installer un systme multi-user
non graphique
3 runlevel3.target.multi-user.target Installer un systme multi-user
non graphique
4 runlevel4.target.multi-user.target Installer un systme multi-user
non graphique
5 runlevel5.target.graphical.target Installer un systme graphique
multi-user
6 runlevel6.target.reboot.target Quitter redmarer le systeme
Comparaison des commandes SysV init avec systemctl

Afficher la cible par dfaut


systemctl get-default
Modifier la cible par dfaut
systemctl set-default multi-user.target
Modifier la cible actuelle
systemctl isolate multi-user.target
systemctl rescue ou systemctl --no-wall rescue
systemctl emergency ou systemctl --no-wall
emergency
Arrter, suspendre, et mettre le systme en hibernation
shutdown

Pour arrter le systme et mettre la machine hors-tension


une heure prcise
shutdown --poweroff hh:mm
Le fichier /run/nologin est cr 5 minutes avant la fermeture
du systme pour viter les nouvelles connexions.
Pour arrter et interrompre le systme au bout d'un
moment sans mettre la machine hors-tension,
shutdown --halt +m
avec +m comme dure en minutes. Le mot cl now est un
alias de +0.
Une fermeture venir pourra tre annule par l'utilisateur
root
shutdown -c
man shutdown
Grub
Exemple de fichier de configuration /boot/grub/grub.conf

default=1 c'est le systme qui dmarre par dfaut


timeout=5 dlai en secondes avant le dmarrage automatique
hiddenmenu ne lance pas le menu de grub par dfaut
title Fedora Core (2.6.15-1.2054_FC5) libell
root (hd0,5)(hd<disque>,<partition>) Activation d'une partition en
tant que partition de dmarrage
kernel /vmlinuz-2.6.15-1.2054_FC5 ro
root=/dev/VolGroup00/LogVol00 rhgb quiet
Chargement du noyau
initrd /initrd-2.6.15-1.2054_FC5.img
Le noyau monte de faon temporaire un systme racine en utilisant
une image compresse
title WinXP
rootnoverify (hd0,0) Activation de la partition de dmarrage
mais sans la monter
chainloader +1chargement d'un fichier ou des blocs qui jouent
le rle de chargeur secondaire. Utilis pour activer Windows.
Exercice

From a root shell, go to the directory


/usr/lib/systemd/system.
Type grep Isolate *.target. This shows a list of all
targets that allow isolation.
Type systemctl isolate rescue.target. This switches
your computer to rescue. target. You need to type the
root password on the console of
your server to log in.
Type systemctl isolate reboot.target. This restarts
your computer.
Pause-rflexion
Avez-vous des questions ?
Quizz
Quelle commande permet dafficher les messages de
dmarrage du systme ??

mess

dmesg.

lsmsg.

bootmsg.
Quizz
Quelle(s) commande(s) permet(tent) de dafficher les
ressources utilises par une carte PCI connecte
votre machine ?

lspci.

udev.

udevinfo..

less /etc/modules.conf
Quizz
Which of the following Linux command lines can be used
to examine kernel bootup messages after boot time?

dmesg | less

less /proc/kmsg

bootlog v

vi /var/log/messages
Pour aller plus loin
Si vous voulez approfondir vos connaissances:

Publications cours

Commandes de bases
FHS

Sites web Confrences

http://fedoraproject.org/wiki/Systemd
www.kernel.org

Vous aimerez peut-être aussi