0% ont trouvé ce document utile (0 vote)
3 vues45 pages

Administration des serveurs Linux : Kernel

Le document traite de l'administration des serveurs Linux, en se basant sur le cours de certification LPI 201. Il couvre divers chapitres, notamment le noyau Linux, la gestion des fichiers, l'authentification des utilisateurs, et la sécurité des serveurs UNIX. Les sections détaillent les composants du noyau, les appels système, la compilation et l'installation du noyau, ainsi que la gestion des modules.

Transféré par

malek
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues45 pages

Administration des serveurs Linux : Kernel

Le document traite de l'administration des serveurs Linux, en se basant sur le cours de certification LPI 201. Il couvre divers chapitres, notamment le noyau Linux, la gestion des fichiers, l'authentification des utilisateurs, et la sécurité des serveurs UNIX. Les sections détaillent les composants du noyau, les appels système, la compilation et l'installation du noyau, ainsi que la gestion des modules.

Transféré par

malek
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Administration des serveurs LINUX

Inspiré du cours de certification LPI 201

Enseignant: Imed KHEDHRI


1
Administration des serveurs LINUX
Chapitres :

Chapitre 1 : Kernel Linux


Chapitre 2 : Partage des fichiers

Chapitre 3: Gestion du Stockage avancé

Chapitre 4 : Authentification des utilisateurs

Chapitre 5 : Sécurité des Serveurs UNIX

Chapitre 6 : Gestion des ressources système

2
Administration des serveurs LINUX

Chapitre 1

Linux Kernel

3
Objectifs du cours
Composants du Kernel (Noyau linux)

Compilation et installation du Kernel

Patch Kernel

Personalization, build, et installation de modules


Kernel

Gestion du Kernel et des modules Kernel lors de


l’exécution

4
Définition

 Qu’est ce qu’un Noyau ou Kernel Linux/UNIX ?

5
Définition

• Le Kernel est le programme qui constitue le cœur du système


d’exploitation.

• Il représente le pont entre le software et le hardware

• Le Kernel n’interagit pas (rarement) avec l’utilisateur, cependant il


interagit avec le Shell et d’autre programmes, et d’un autre coté avec
le Hardware(CPU, Mémoire, les disques durs …).

• Le Kernel est le premier programme du système d’exploitation qui


est chargé en mémoire durant la séquence de démarrage et il y
réside durant toute la durée de la session.

6
kernel modulaires et monolithiques

Un noyau modulaire est un ensemble de modules et de pilotes


compilés,que le noyau peut charger et supprimer à la demande.
Tous les modules chargeables sont représentés par un fichier
objet et figurent dans /lib/modules.

Un noyau monolithique a tous ses modules embarqués dans le


noyau et supporte un grand nombre de configuration matériel, de
technologies réseau et de systèmes de fichiers.

7
Les avantages

Les avantages d'un noyau modulaire sont:

Il charge et décharge des modules à la demande (économie


de mémoire).
Il n'est pas nécessaire d'arrêter le système pour ajouter un
pilote.

Les avantages d'un noyau monolithique sont:

Haute disponibilité
Le support sur un grand nombre de configurations
matérielles.

8
Fonctions du kernel
• Le Kernel offre à tout les éléments du système d’exploitation des services
basiques tel que:

• Gestion de la mémoire
• Gestion des processus
• Gestion du système de fichier
• Gestion des E/S
• Communication interprocessus
• Gestion de l’accès au périphériques
• Gestion des protocoles réseaux

• Toutes communications avec ces services se font via des appels système
• Les appels système sont fournit par une Interface que l’on nomme
« system call interface »

9
Appels Système

Kernel mode

• Un code en cours d’exécution dans le kernel space à un accès complet et


sans restriction à la couche hardware, il peut exécuter n’importe quel
instruction CPU, agir sur la mémoire ..etc.

• Le mode kernel est généralement réservé aux fonctions bas niveau les plus
« trusted ». Les crashs qui surviennent en mode Kernel sont catastrophique
et causent souvent l’arrêt de la machine.
Appels Système

User mode

• Dans le user space, le code qui est en train de s’exécuter n’a pas la
possibilité d’accéder directement au hardware

• Il doit si besoin est, déléguer certaines taches a l’API système « system call
interface »

• Cette isolation offre une bonne protection car les crash en mode utilisateur
sont récupérables

11
Composants du Kernel

Le cœur du Kernel Les modules du Kernel


Des fichiers portant l’extension .ko qui sont
C’est la partie irréductible du noyau qui sera
chargés lors du démarrage.
chargé intégralement en mémoire par le
Peuvent être chargés et déchargés a volonté
bootloader.
apres le chargement du Kernel
C’est un fichier se trouvant dans ‘/boot‘ et dont
‘/lib/modules/linux-version/’
la taille est quelques Mo
drivers/
net/
zImage
sound/
bzImage
fs/
……..
Manipulation ponctuelle des modules ( 1/3 )

commandes Fonctionnalités

lsmod Affichage des modules chargés en mémoire

rmmod nom_module
Retrait d’un module chargé en mémoire
modprobe - r nom_module
insmod fichier_module
Chargement d’un module en mémoire
modprobe nom_module

modprobe –v Affiche les dépendances des modules


Exemples

#modinfo vfat
# insmod /lib/modules/$(uname –r)/kernel/fs/fat/[Link]
# lsmod|grep vfat
# rmmod vfat
---> modprobe : lire les dépendances modules à partir de [Link]
#modprobe vfat
#modprobe –r vaft

[Link] fichier de dépendances des modules généré après l’installation des


Modules ou suite à l’exécution de la commande depmod -a
14
Manipulation ponctuelle des modules ( 2/3 )

Chargement forcé d’un module (redhat7)

Les modules sont en principe chargés au démarrage en fonction de la


détection du matériel présent.

Il est toutefois possibles de forcer le chargement d’un module en alimentant


un fichier de configuration des modules.

Tout module mentionné dans le répertoire /etc/sysconfig/modules et/ou


/etc/nom_modules.modules sera chargé inconditionnellement au
démarrage.

15
Manipulation ponctuelle des modules ( 2/3 )

Chargement forcé d’un module (redhat 7 et 8)

Vous pouvez spécifier des modules supplémentaires devant être chargés


par le démon [Link] en créant le
fichier [Link] dans le répertoire /etc/modules-load.d/.

Exemple
Pour créer un fichier pour charger le module [Link],
créez un fichier /etc/modules-load.d/[Link]
Qui contient le nom du module virtio-net

16
Manipulation ponctuelle des modules ( 3/3 )

Autour du noyau

Lors de la phase de démarrage, le gestionnaire d’amorçage charge le noyau


et les modules correspondants à la configuration matérielle du système.

Pour accélérer la phase de détection du matériel et le chargement des


modules associés, la plupart des systèmes modernes exploitent un ramdisk
contenant l’ensemble des modules.

Ce ramdisk est généré après la compilation du noyau et est appelé


directement par le gestionnaire de démarrage.

. 17
Configuration des modules

Le fichier utilisé par modprobe pour charger les modules est


/etc/[Link] ou /etc/[Link] .
Opensuse (/etc/[Link]/nom_module.conf)

Ce fichier contient la manière comment charger les modules, les


aliases, les paramètres à utiliser et les commandes à exécuter
etc..

18
Versioning
Versioning du kernel Linux

19
Version du noyau
La version du noyau peut être affichée avec uname.
uname [options]
Les options principales sont :
-r: Affiche les mise à jour du système d'opération.
-s: Affiche le nom du système d'opération.
-p: Affiche le type de processeur.
Exemples :
[root@test /]# uname -s
Linux
[root@test /]# uname -r
2.6.3-7mdk
[root@test /]# uname -a
Linux linux 2.6.3-7mdk #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown
20
Procédure de compilation et d’exploitation

• Installer un Kernel précompilé offert par la distribution à l’aide de


l’outil de gestion de paquet (Apt, Yum)

• Télécharger le code source du Kernel, le compiler puis le charger


dans le système.(très utile si on veut personnaliser son Kernel)

21
Procédure de compilation et installation du
noyau

• La procédure de compilation doit toujours être consultée dans le fichier


README présent avec les sources du noyau. Les éléments spécifiques
du noyau sont documentés dans un répertoire Documentation fournis
avec les sources.

1- Récupération des sources


• Le code source du noyau est téléchargeable librement depuis le site
« [Link] »
• Le noyau étant livré sous forme d’une archive [Link] / tar.bz2 / [Link] , il
faut d’abord la décompresser.

22
Procédure de compilation et installation

2- Génération du fichier de réponse

• La configuration et compilation du kernel se font traditionnellement avec


l’outil « make » qui fait appel au compilateur en appliquant les options et
indications présentes dans le fichier « Makefile »
• La compilation s’effectue en fonction des informations données dans un
fichier .config qui se trouve dans la racine du répertoire des sources
• (Généralement le code source d’un Kernel est présent dans
/usr/src/linux-version, mais c’est différent selon la distribution (CentOS:
/usr/src/kernels/linux-version)

23
Procédure de compilation et d’exploitation

2- Génération du fichier de réponse

• Le fichier .config indique pour chaque élément du noyau s’il doit être :
 présent dans le cœur du noyau,
 présent sous forme de modules,
 ou absent du noyau compilé.

24
Procédure de compilation et d’exploitation

2- Génération du fichier de réponse

Commandes possibles
make mrproper Supprime l’ancienne configuration du kernel ’.config’

make config Pose la question à l’utilisateur pour chacun des modules

make menuconfig Présente une interface texte améliorée

make xconfig / gconfig Présente une interface graphique

make defconfig Génère un .config en s’appuyant sur des valeurs par défaut

Génère un un fichier de répense en s’appuyant sur .config


make oldconfig déjà utilisé pour une version plus ancienne. 25
make config

26
make menuconfig
 affiche les menus dans un environnement de texte. Peut être
 Utilisé sur ssh. Paquetage libncurses-dev doit être installé.

27
make xconfig

Pour la série du noyau 2.6 ou plus, cela appelle le nouveau programme de


configuration basé sur QT.
Pour pouvoir le compiler, la bibliothèque libqt3-mt-dev doit être installée, ainsi
Comme le compilateur g ++.

28
make gconfig

Pour la série du noyau 2.6, cela appelle le nouveau programme de configuration basé sur GTK.
Les paquetages libgtk2.0-dev, libglade2-dev, libglib2.0- dev sont nécessaires.

29
Procédure de compilation et d’exploitation

3- Compilation du noyau et des modules

• La compilation se réalise en tapant la commande make depuis le répertoire


racine des sources

• Elle appelle aussi la commande depmod qui génère le fichier [Link]

• Parfois on n’a besoin que de l’image de kernel, ou de compiler seulement des


modules.

Commande Effect

make bzImage ou make zImage Compiler seulement le kernel

make modules Compiler seulement les modules 30


Procédure de compilation et d’exploitation

4- Installation du noyau et des modules


1) Copier l’image du kernel compilé et le fichier [Link] sous /boot
2) Copier les modules compilés sous /lib/modules

On peut aussi recourir a l’outil « make » pour installer le kernel


automatiquement

Commande Effect

make install Installer l’image du kernel et les modules


sous /boot
make modules_install Installer les modules. Ils seront copiés dans
le répertoire /lib/modules sous un répertoire
31
correspondant à la version du noyau
Procédure de compilation et d’exploitation
5- Création du ramdisk des modules
• Il faut mettre à la disposition du noyau un ramdisk contenant l’ensemble
des modules compilés pour la nouvelle version

• Ce ramdisk nécessite un fichier image (archive cpio compressée sous


format gzip), qui peut être construit avec deux commandes différentes en
fonction de la génération du système employé.

• La commande historique est mkinitrd. Elle tend à disparaitre au profit de


mkinitramfs

# mkinitrd /boot/[Link] linux-version


# mkinitramfs -o /boot/[Link] linux-version
N.B : linux-version correspond au répertoire des modules situés dans
/lib/modules 32
Procédure de compilation et d’exploitation

6- Configuration du gestionnaire de démarrage

• Il ne suffit pas d’avoir compilé le noyau et de l’avoir placé au bon endroit

• Il faut que le gestionnaire de démarrage soit configuré pour être capable


de charger ce noyau en y ajoutant une entrée en conséquence.

• Il ne faut rien retirer à la configuration du gestionnaire de démarrage : on


ne touche pas à ce qui marche déjà.

33
Modification dynamique des paramètres du noyau

Le noyau peut être ajusté dynamiquement à travers des paramètres


du système. Ces paramètres sont accessibles et modifiables à partir
des fichiers du répertoire /proc/sys.
EXEMPLE
Pour modifier le nombre maximal de fichiers que le système peut
ouvrir simultanément:
# echo 32768 > /proc/sys/fs/file-max

L’exemple suivant implique au noyau de ne pas boucler sur une panique,


mais pour redémarrer automatiquement après 20 secondes:
# echo 20> /proc/sys/kernel/panic

34
/etc/[Link]

Pour mémoriser les paramètres à appliquer au noyau lors du


démarrage du système, on utilise le fichier /etc/[Link]
net.ipv4.ip_forward = 0 (le relayage est activé par défaut)

En cours d’exécution, les paramètres du noyau peuvent aussi être


modifiés par la commande sysctl :
# sysctl –w net.ipv4.ip_forward=1

ou bien par la commande suivante:


echo 1 > /proc/sys/net/ipv4/ip_forward

35
lspci
Avec lspci, vous pouvez afficher des informations sur tous les bus
PCI du système et tous les périphériques qui y sont connectés.

Affiche des informations détaillées pour le périphérique réseau:


lspci –s 00:03.0 -v
36
lsusb

lsusb est semblable à lspci, mais vérifie les bus USB et les
périphériques. Pour utiliser lsusb un noyau Linux doit prend en charge le
/proc /bus/usb inferface (Linux 2.3.15 ou plus récent). lsusb -v fournira des
informations détaillées.
Exemple de sortie lsusb:

37
lsdev
lsdev affiche des informations sur le matériel installé. Il rassemble des
informations provenant des interuptions, des fichiers DMA et des
/proc. lsdev donne un aperçu rapide du périphérique qui utilise les
adresses d'E/S et les canaux IRQ / DMA. Fichiers
utilisé:
 /proc/interrupts
 /proc/ioports
 /proc/dma

38
udev

udev est un gestionnaire de périphériques remplaçant devfs dans le


noyau Linux depuis la version 2.6. Sa fonction principale est de gérer
les périphériques dans le répertoire /dev. udev s'exécute en mode
utilisateur et écoute le socket netlink pour communiquer avec le
noyau.

udev se compose d'un démon utilisateur (udevd) qui reçoit "uevents"


du noyau. Communication entre l'espace utilisateur et le noyau se fait
via le pseudo système de fichiers sysfs.

39
Fichiers de configuration udev
Le répertoire /etc/udev/ contient la configuration et les fichiers de
règles de l'utilitaire udev. [Link] est le principal fichier de
configuration pour udev.

Les règles udev sont lues à partir de fichiers situés dans le répertoire
des règles par défaut /lib/udev/rules.d/.

udevadm control --reload-rules && udevadm trigger


udevadm info -a -p $(udevadm info -q path -n /dev/namedevice)

udevadm info -q all -p /sys/class/net/*


40
Systemd & udev
cat /usr/lib/systemd/network/[Link]
[Link] NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent

Si le noyau utilise le mode persistant, udev ne renomme pas


l'interface. Si le noyau n'utilise pas le mode persistant, udev
renomme l'interface avec le nom fourni par la base de données
matérielle d'udev.

On peut changer le nom de périphérique via le systemd en éditant le fichier

vim /etc/systemd/network/[Link]
Match]
MACAddress=00:0c:29:9c:00:76
[Link]
Name=eth0

Et après on tape reboot 41


~
Patch du noyau

• Il est possible pour bénéficier d’un noyau récent de télécharger les sources
compilées du noyau, de les compiler et de les installer en tant que nouveau
noyau.

• Une méthode alternative consiste à utiliser les sources de l’ancien noyau et


de les patcher avant de les recompiler.

• On ne peut appliquer que les patches de la version qui suit EXACTEMENT


la version du kernel actuelle.

• Les patchs se téléchargent sur le site « [Link] »


42
Patch du noyau

• L’application du patch se fait en général avec la commande patch et peut


se faire spécifiquement avec un script livré avec le noyau s’appelant
patch-kernel qui se trouve dans un répertoire scripts dans sources du
noyau.

• Un fichier de patch est en fait le résultat d’une commande diff appliquée


à deux arborescences des sources différentes. Le fichier résultant
contiendra donc une référence à chacun des fichiers de l’arborescence
qui doivent être modifiés.

• Si le niveau hiérarchique des fichiers décrits dans le patch ne correspond


pas à celui des sources à modifier, le paramètre –p permet de décaler
cette hiérarchie. 43
Patch du noyau

Ajout de patch

patch -pn < fichier_patch


-pn Dépend de la conception du fichier de patchs. Remonte de n niveaux
hiérarchiques dans le chemin des fichiers exprimés.
fichier_patch Le fichier contenant les patchs à appliquer

Retrait de patch

patch -pn -R < fichier_patch


-R Retire le patch au lieu de l’appliquer
fichier_patch Le fichier contenant les patchs à appliquer
44
45

Vous aimerez peut-être aussi