Vous êtes sur la page 1sur 121

LPIC 201

Essentiel

Linux Lab., SUPINFO Revision dated from the 01/17/2009 Copyright 2008 SUPINFO
All rights reserved.

ble of Contents
1. Noyau ................................................................................................................................................................. 1 1.1. Qu'est ce qu'un noyau ? ................................................................................................................................ 1 1.2. Compilation et installation du noyau ............................................................................................................... 3 1.2.1. Pourquoi recompiler son noyau ? ......................................................................................................... 3 1.2.2. Les modules du noyau ....................................................................................................................... 3 1.2.3. Avant de commencer... ...................................................................................................................... 3 1.2.4. Compilation du noyau ........................................................................................................................ 6 1.2.5. Configuration ................................................................................................................................... 7 1.2.6. Compilation ..................................................................................................................................... 9 1.3. Installation du noyau ...................................................................................................................................10 1.3.1. Installation du noyau ........................................................................................................................10 1.3.2. Cration d'une image initrd ................................................................................................................11 1.3.3. Configuration du bootloader ..............................................................................................................12 1.4. Gestion des modules ...................................................................................................................................14 1.5. Patcher son noyau ......................................................................................................................................15 2. Dmarrage ...........................................................................................................................................................17 2.1. Linux Standard Base (LSB) ..........................................................................................................................17 2.2. Le Processus de dmarrage ..........................................................................................................................17 2.2.1. BootLoader ....................................................................................................................................18 2.2.2. Chargement du noyau .......................................................................................................................18 2.2.3. /sbin/init ........................................................................................................................................19 2.3. Gestion du dmarrage .................................................................................................................................20 2.3.1. Les scripts init .................................................................................................................................20 2.3.2. les liens rc.d ....................................................................................................................................21 2.3.3. insserv et les INIT INFO ...................................................................................................................22 2.3.4. chkconfig .......................................................................................................................................23 2.4. Gestion des processus .................................................................................................................................23 2.4.1. startproc, killproc et checkproc ...........................................................................................................23 2.4.2. startpar ..........................................................................................................................................24 2.5. Rcupration du systme .............................................................................................................................24 2.5.1. Au niveau du bootloader ...................................................................................................................24 3. Systmes de fichiers ..............................................................................................................................................25 3.1. Introduction ..............................................................................................................................................25 3.1.1. Pr-requis .......................................................................................................................................25 3.1.2. Objectifs ........................................................................................................................................25 3.2. Gestion des systmes de fichiers ....................................................................................................................26 3.2.1. Montage ........................................................................................................................................26 3.2.2. Dmontage .....................................................................................................................................27 3.3. Visualisation des systmes de fichiers ............................................................................................................27 3.3.1. Le fichier /etc/mtab ..........................................................................................................................27 3.3.2. Le fichier /proc/mounts .....................................................................................................................28 3.4. Automatisation des montages avec /etc/fstab ...................................................................................................28 3.5. Autofs ......................................................................................................................................................29 3.6. Outils supplmentaires ................................................................................................................................30 3.6.1. La commande sync ..........................................................................................................................30 3.6.2. Gestion de la swap ...........................................................................................................................30 3.7. Maintenance ..............................................................................................................................................31 3.7.1. fsck ...............................................................................................................................................31 3.7.2. La commande badblocks ...................................................................................................................32 3.7.3. La commande dumpe2fs ...................................................................................................................32 3.7.4. La commande debugfs ......................................................................................................................32 3.7.5. La commande tune2fs .......................................................................................................................32

LPIC 201

3.8. Cration de systmes de fichiers ....................................................................................................................33 3.8.1. Auto montage .................................................................................................................................33 3.8.2. Cration d'image disque ....................................................................................................................33 3.9. Sauvegarde, copie d'un systme de fichier .......................................................................................................34 3.9.1. Commande dd .................................................................................................................................34 3.9.2. Cration d'image disque ....................................................................................................................34 4. Matriel ..............................................................................................................................................................36 4.1. Configuration du RAID ...............................................................................................................................36 4.1.1. Introduction au RAID .......................................................................................................................36 4.1.2. Le RAID matriel ............................................................................................................................37 4.1.3. Mise en place du RAID logiciel ..........................................................................................................38 4.1.4. Utilisation et configuration du RAID logiciel ........................................................................................39 4.1.5. Maintenance et surveillance ...............................................................................................................44 4.2. Mise en place de LVM ................................................................................................................................46 4.2.1. Prsentation ....................................................................................................................................46 4.2.2. Composition de LVM .......................................................................................................................46 4.2.3. Installation .....................................................................................................................................47 4.2.4. Dmarrage et arrt de LVM ...............................................................................................................47 4.2.5. LVM en dtail .................................................................................................................................48 4.2.6. Mise en place du LVM .....................................................................................................................52 4.3. Ajout de nouveau matriel ...........................................................................................................................55 4.3.1. Priphriques PCI ............................................................................................................................55 4.3.2. Priphriques USB ...........................................................................................................................56 4.3.3. Inspection de la configuration courante ................................................................................................58 4.4. Configuration logicielle et kernel ..................................................................................................................59 4.4.1. L'outil hdparm .................................................................................................................................59 4.4.2. L'outil tune2fs .................................................................................................................................61 4.4.3. Utilisation de sysctl ..........................................................................................................................63 4.5. Configuration des priphriques PCMCIA ......................................................................................................64 4.5.1. Fichiers de configuration ...................................................................................................................64 4.6. Les outils PCMCIA ....................................................................................................................................67 4.6.1. L'outil cardmgr ................................................................................................................................67 4.6.2. L'outil cardctl ..................................................................................................................................67 5. NFS ...................................................................................................................................................................68 5.1. Prsentation du NFS/RPC ............................................................................................................................68 5.1.1. Le protocole NFS ............................................................................................................................68 5.1.2. RPC ..............................................................................................................................................68 5.2. Installation d'un client/serveur NFS ...............................................................................................................69 5.2.1. La partie Noyau ...............................................................................................................................69 5.2.2. La partie logicielle ...........................................................................................................................70 5.3. Configuration du serveur .............................................................................................................................70 5.3.1. Les fichiers hosts.allow et hosts.deny ...................................................................................................71 5.3.2. Modes synchrone et asynchrone .........................................................................................................72 5.3.3. Gestion des UID/GID .......................................................................................................................72 5.3.4. Options de configuration de NFS ........................................................................................................73 5.3.5. L'outil tcpwrappers ..........................................................................................................................74 5.4. Administration/Maintenance d'un serveur NFS ................................................................................................75 5.4.1. Les diffrents daemons .....................................................................................................................75 5.4.2. Lancement et arrt du serveur NFS ......................................................................................................76 5.4.3. Commandes d'administration et de maintenance ....................................................................................76 5.5. Utilisation du client NFS .............................................................................................................................78 5.5.1. Montage dun rpertoire distant ..........................................................................................................78 5.5.2. Montage dun rpertoire au dmarrage du systme .................................................................................79 5.6. Conclusion ................................................................................................................................................79 6. Samba ................................................................................................................................................................80 6.1. Pr requis .................................................................................................................................................80 6.2. Samba ......................................................................................................................................................81 6.2.1. Historique ......................................................................................................................................81

LPIC 201

6.2.2. Daemons ........................................................................................................................................81 6.2.3. Nouveauts .....................................................................................................................................81 6.3. Le protocole SMB ......................................................................................................................................82 6.3.1. Le format SMB ...............................................................................................................................82 6.4. Le protocole NetBIOS .................................................................................................................................84 6.4.1. Fonctionnement de NetBIOS .............................................................................................................84 6.5. Utilisation du client ....................................................................................................................................85 6.6. smbmount .................................................................................................................................................86 6.7. nmblookup ................................................................................................................................................86 6.8. findsmb ....................................................................................................................................................86 6.9. smbstatus ..................................................................................................................................................87 6.10. Le ficher /etc/samba/lmhosts .......................................................................................................................87 6.11. Smb4k ....................................................................................................................................................87 6.12. Configuration du serveur ............................................................................................................................87 6.13. Prsentation des diffrentes sections .............................................................................................................88 6.13.1. Section global ................................................................................................................................88 6.13.2. Section homes ...............................................................................................................................89 6.13.3. Section printers et print$ ..................................................................................................................89 6.13.4. Section netlogon ............................................................................................................................90 6.13.5. Sections de partages .......................................................................................................................90 6.14. Validit du fichier smb.conf ........................................................................................................................91 6.15. Gestion des utilisateurs ..............................................................................................................................91 6.16. SWAT ....................................................................................................................................................91 6.16.1. Installation ....................................................................................................................................91 6.16.2. Utilisation .....................................................................................................................................92 6.17. Utilisation de Samba en Contrleur de domaine ..............................................................................................92 7. Maintenance ........................................................................................................................................................95 7.1. Gestion des logs .........................................................................................................................................95 7.1.1. Syslog-ng .......................................................................................................................................95 7.1.2. Lire ses fichiers de logs .....................................................................................................................97 7.2. (Re)Construire ses propres packages ..............................................................................................................98 7.2.1. Objectifs ........................................................................................................................................98 7.2.2. Avec le gestionnaire de packages RPM ................................................................................................98 7.2.3. Avec le gestionnaire de packages DEB .............................................................................................. 104 7.3. Les sauvegardes sous Linux ....................................................................................................................... 107 7.3.1. Prparer sa stratgie de backups ........................................................................................................ 107 7.3.2. Appliquer votre stratgie de backups ................................................................................................. 108 7.3.3. Automatisation des tches de sauvegardes .......................................................................................... 111 8. Dpannage ........................................................................................................................................................ 112 8.1. Avant-propos ........................................................................................................................................... 112 8.2. Disques de rcupration ............................................................................................................................. 112 8.2.1. Disquettes de dmarrage ................................................................................................................. 112 8.2.2. Cration d'un disque de dmarrage .................................................................................................... 113 8.3. Les tapes de dmarrage ............................................................................................................................ 113 8.3.1. Secteur de dmarrage ..................................................................................................................... 113 8.3.2. Chargeur de dmarrage ................................................................................................................... 113 8.3.3. Noyau ......................................................................................................................................... 113 8.3.4. Init .............................................................................................................................................. 114 8.3.5. Processus ..................................................................................................................................... 114 8.4. Problmes avec le chargeur de dmarrage ..................................................................................................... 114 8.4.1. LILO ........................................................................................................................................... 114 8.4.2. Grub ........................................................................................................................................... 114 8.5. Dpannage .............................................................................................................................................. 114 8.6. Systme .................................................................................................................................................. 115 8.6.1. Variables d'environnement et shell .................................................................................................... 115 8.6.2. Environnement du shell .................................................................................................................. 116 8.6.3. Les diteurs .................................................................................................................................. 116 8.6.4. Paramtres du noyau ...................................................................................................................... 116

LPIC 201

8.7. Configuration de l'environnement ................................................................................................................ 116 8.7.1. Authorisations ............................................................................................................................... 116 8.7.2. Crontabs ...................................................................................................................................... 116 8.7.3. Erreurs au niveau des logs ............................................................................................................... 116

Chapter 1. Noyau
Table of Contents
1.1. Qu'est ce qu'un noyau ? .................................................................................................... 1 1.2. Compilation et installation du noyau ................................................................................... 3 1.2.1. Pourquoi recompiler son noyau ? ............................................................................. 3 1.2.2. Les modules du noyau ........................................................................................... 3 1.2.3. Avant de commencer... .......................................................................................... 3 1.2.4. Compilation du noyau ............................................................................................ 6 1.2.5. Configuration ....................................................................................................... 7 1.2.6. Compilation ......................................................................................................... 9 1.3. Installation du noyau .......................................................................................................10 1.3.1. Installation du noyau ............................................................................................10 1.3.2. Cration d'une image initrd ....................................................................................11 1.3.3. Configuration du bootloader ..................................................................................12 1.4. Gestion des modules .......................................................................................................14 1.5. Patcher son noyau ..........................................................................................................15

1.1. Qu'est ce qu'un noyau ?


Le noyau est le coeur mme du systme. Il se charge de la communication avec la partie matrielle. Les processus des utilisateurs utilisent une interface d'appels systmes afin de communiquer avec le noyau et ainsi d'utiliser les ressources matrielles de votre ordinateur (disque dur, carte graphique, etc ...).

Figure 1.1. Rle du noyau

Noyau

Il faut savoir que de nombreuses familles de noyau existent. Les avis divergent sur le modle idal, un noyau trop gros (en lignes de code) engendre de gros risques car tout le code contenu dans celui ci sera excut en mode noyau (privilges levs). Cela implique que si une erreur surgit, c'est tout le noyau qui est plant. La maintenance s'en trouve aussi complique. Maintenir 10 000 lignes de codes et 100 000 lignes ce n'est pas la mme chose.. Pour cela de nombreux chercheurs se sont penchs sur le problme. Il faudrait rduire la taille. De nombreux projets ont vu le jour et de nombreux modles: les exo-noyaux (qui ne fonctionnent qu'en mode utilisateur) , micro-noyau (un noyau trs lger utilis en mode noyau) , monolythique (tout dans le noyau qui est assez consquent est excut en mode noyau). Le noyau Linux quant lui est monolithique et modulaire. C'est un compromis. Un noyau monolithique est caractris par le fait que tout le code des diffrents pilotes est compil puis li en une seule image finale destine tre charge en mmoire. Les modules ncessaires dans le cas du noyau linux, ils seront chargs la demande en plus du noyau de base et feront partie du noyau. Ils seront donc, une fois chargs excuts en mode noyau. Le principe est de ne pas charger tous les modules au dmarrage et donc de limiter le risque, le poids, la disponibilit. Afin d'offrir d'avantage de souplesse, le noyau Linux intgre depuis sa version 2.0 la possibilit d'utiliser des modules dont le code objet compil n'est pas directement insr dans l'image du noyau. Il est alors possible de charger et de dcharger des modules chaud afin d'utiliser ponctuellement certains matriels ou fonctionnalits proposes par le dit module, ceci peut rduire considrablement la taille du noyau en mmoire

Noyau

1.2. Compilation et installation du noyau


1.2.1. Pourquoi recompiler son noyau ?
Afin de simplifier la mise en place des systmes GNU/Linux, de nombreuses distributions comme Debian proposent un noyau dit gnrique.Il s'agit tout simplement d'un noyau intgrant un maximum de fonctionnalits et de pilotes de priphriques, l'avantage tant la rduction des incompatibilits matrielles et donc de simplifier la prise en main du systme. La contrepartie tant la taille importante du noyau qui comprend des pilotes inutiles au systme. Il est alors pratique de pouvoir reconfigurer son noyau afin de supprimer le superflu, de le rendre plus rapide et plus stable. L'intrt de la recompilation de son noyau ne s'arrte pas l, il est galement possible de recompiler le noyau afin de combler des failles de scurits ou d'intgrer des nouvelles fonctionnalits.

1.2.2. Les modules du noyau


Les modules sont des fonctionnalits du noyau compiles de manire pouvoir tre charges ultrieurement de manire dynamique. Ceux-ci sont en thorie spcifiques une version de noyau,il est toutefois possible que certains modules s'adaptent plusieurs versions de noyaux, comme cest par exemple le cas des drivers NVIDIA ou ATI. Aprs la compilation, les modules sont copis dans le rpertoire /lib/modules/VERSION-DU-NOYAU/. Il nexiste pas de rgle absolue quant au choix des drivers slectionner en tant que modules ou intgrer directement dans le noyau. Gnralement, il est conseill dinsrer dans le noyau toutes les fonctionnalits utilises en permanence, comme par exemple le pilote du systme de fichiers, de la carte mre, du contrleur de disques ou encore de la carte rseau.

1.2.3. Avant de commencer...


1.2.3.1. Connatre la version du noyau actuel
Figure 1.2. La commande uname -r

Noyau

La commande uname permet dafficher des informations concernant la machine et le noyau. Ainsi pour afficher la version de notre noyau on tapera : [root@linux ~]# uname -r 2.6.12-12mdksmp

Les numros de version utilisent la convention suivante : <majeur>.<mineur>.<rvision>

O <majeur> est le numro majeur de version qui n'volue, que lors de changement trs important et majeur du noyau, donc trs rarement; <mineur> est le numro mineur,qui indique la srie en cours,et <rvision> le nombre de corrections effectues.Par convention,un numro mineur pair (2.4, 2.6) dnote une version "stable", les ventuelles rvisions ne contenant alors que les corrections de bugs mais jamais de nouveauts. Les numros mineurs impair (2.3, 2.5) sont les versions de "dveloppement", dont les rvisions peuvent contenir tout le code que les dveloppeurs dsirent ajouter. Lorsqu'une version de dveloppement atteint un niveau de stabilit et de performances tel qu'elle peut tre mis a disposition de tous, elle est renomme:le numro mineur de version (numro pair) est incrment et le cycle dedveloppement recommence. Un nouveau cycle de dveloppement est apparu au sein de la branche 2.6 ( partir du noyau 2.6.8) : la branche instable 2.7 n'est pour le moment pas utilise et le dveloppement se fait au sein mme de la branche stable 2.6. Ceci permet l'apparition et l'intgration de nouvelles fonctionnalits plus rapidement dans le processus de dveloppement du noyau.

1.2.3.2. Format du noyau


Nous savons dsormais quoi sert notre noyau GNU/Linux mais o se trouve-t-il ? Est-ce un fichier ? Oui notre noyau n'est qu'un simple fichier qui est la plupart du temps compress. Il se trouve dans le rpertoire /boot et est charg en mmoire par notre chargeur de dmarrage (Lilo ou grub).

Noyau

[root@linux]# ls /boot -rw-r--r-- 1 root root 1261213 2007-05-10 06:14 vmlinuz-2.6.18-4-686

vmlinuz correspond au nom du noyau dans sa forme compress avec bzip2 ou gunzip. D'un point de vue ethymologique il faut comprendre le suffixe "vm" comme virtual memory. Cette fonctionnalit a marqu une tape importante dans le dveloppement des Unix et depuis tous les noyaux Unix/Linux possde le prfixe "vm". Enfin le "z" de vmlinuz permet de distinguer si le noyau est compress ou non : vmlinux : format non compress vmlinuz : format compress avec gzip. zImage ou bzImage: nom moins courant du noyau respectivement compress avec gzip. La diffrence entre ces deux formats n'est pas le mode de compression mais le mode de chargement qui va varier la bzimage sera charge dans la mmoire haute (> 1mo) tandis que la zimage sera charg dans un niveau plus bas dans la mmoire puis dplac dans la mmoire haute plus tard. Reellement , le systme de bzimage va conomiser des routines au chargement. Enfin la dernire partie du nom correspond la version du noyau et son architecture.

1.2.3.3. Rcuprer les informations sur son matriel


Il est important de connatre les spcifications matriels afin de compiler le noyau qu'avec les pilotes ncessaires. Pour cela, deux commandes sont notre disposition.

1.2.3.3.1. La commande lspci Figure 1.3. La commande lspci

Noyau

La commande lspci affiche des informations sur tous les bus PCI de la machine et sur les priphriques branchs dessus. Grce cette commande, nous pouvons connatre le modle ou le type de puces (chipset) de nos priphriques. En effet, diffrents constructeurs utilisent parfois la mme puce, c'est pour cela qu'il existe parfois un mme pilote pour plusieurs marque de priphriques.

1.2.3.3.2. La commande lsmod Figure 1.4. La commande lsmod

La commande lsmod affiche tous les modules chargs dans le noyau.

1.2.3.4. Environnement de dveloppement


Linstallation des outils de dveloppement est ncessaire avant de passer la compilation du noyau. Ces outils incluent : Le compilateur C gcc Les outils make La librairie libncurses (ncessaire pour pouvoir configurer le noyau en mode pseudo-graphique)

1.2.4. Compilation du noyau


1.2.4.1. Rcupration des sources du noyau
Les sources du noyau sont disponibles librement et gratuitement sur Internet. On peut les tlcharger depuis le site officiel1.

Noyau

Une fois l'archive rcupre, il faut la dcompresser. Par convention, on dcompresse l'archive dans le rpertoire /usr/src. Toujours par convention, on cre un lien /usr/src/linux pointant vers le rpertoire contenant les sources du noyau que l'on veut utiliser. Lors d'une compilation ultrieure de modules, ce lien permet de dterminer le noyau pour lequel on va compiler.

Example 1.1. Exemple de dcompression de noyau


[root@linux [root@linux [root@linux [root@linux ~]# ~]# ~]# ~]#

cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz tar -xjvf linux-2.6.22.1.tar.bz2 ln -s linux-2.6.22.1 linux

1.2.5. Configuration
Voici ltape la plus importante : la configuration du noyau. Cest maintenant que nous allons slectionner les pilotes et les fonctionnalits que nous voulons. Il existe deux faons de configurer son noyau. La premire consiste configurer le noyau depuis le dbut, la seconde est de rcuprer une ancienne configuration et de la mettre jour.

1.2.5.1. Configuration complte


Pour configurer le noyau, il faut se placer dans le dossier o se trouvent les sources et invoquer un utilitaire qui va nous permettre de naviguer travers tous les menus. Il existe trois utilitaires intgrs, en mode console pseudo-graphique, c'est--dire un mode texte utilisant ncurses (make menuconfig), en mode graphique (make xconfig), en mode texte pur (make config). [root@linux ~]# cd /usr/src/linux [root@linux ~]# make menuconfig

Figure 1.5. Menu de configuration du noyau Linux

http://www.kernel.org

Noyau

Il suffit ensuite de naviguer dans les menus et activer les options souhaites.

Example 1.2. Activation du support bluetooth


Il faut donc se dplacer dans la section adquate et cocher la ligne voulue :

Figure 1.6. Section concernant les pilotes de priphriques

Puis dans le menu Networking support :

Figure 1.7. Section concernant les pilotes de priphriques rseau

Enfin le support Bluetooth :

Figure 1.8. Le support du bluetooth est dsactiv

Noyau

Activer le support du bluetooth en dur dans le noyau (touche y) :

Figure 1.9. Le support bluetooth est activ en dur

Note
Nous aurions tout aussi bien pu slectionner loption en tant que module du noyau (touche m) :

Une fois cela effectu, il ne reste plus qu sortir du menu de configuration en slectionnant plusieurs fois Exit grce la touche TAB et Entre pour confirmer. La configuration du noyau sera alors sauvegarde dans le fichier .config.

1.2.5.2. Rcupration de configuration


Si vous aviez dj configur une fois votre noyau et que vous souhaitez le mettre jour, il est possible de rcuprer lancienne configuration. Ainsi, vous n'aurez pas tout reconfigurer. La marche suivre est trs simple, il suffit : 1. De copier le fichier .config depuis le rpertoire contenant les sources de votre ancien noyau vers celui contenant le nouveau 2. D'excuter la commande make oldconfig

Example 1.3. Rcupration dune configuration prcdente se trouvant dans /usr/src/linux-old :


[root@linux ~]# cd /usr/src/linux [root@linux ~]# cp /usr/src/linux-old/.config . [root@linux ~]# make oldconfig

Grce cette commande, le nouveau noyau se configurera comme le prcdent. En plus, cette commande vous demandera si vous voulez activer ou non les nouvelles options apparues entre les deux versions du noyau, s'il y en a.

1.2.6. Compilation
Le processus de compilation d'un noyau est trs simple, il suffit de saisir : [root@linux ~]# make all

Noyau

10

La commande make all permet de crer l'image du noyau ainsi que de compiler tous les modules additionnels. la fin de cette tape, une image du nouveau noyau est disponible dans le rpertoire arch/<architecture du processeur>/boot/sous le nom bzImage.

Note
Si le noyau a t compil sur une architecture de type PPC, le noyau se trouve directement dans le rpertoire courant sous le nom de vmlinux.

[root@linux ~]# make modules_install

Peu importe larchitecture utilise, /lib/modules/<version-du-noyau>.

les

modules

sont

copis

dans

Note
Il peut arriver qu'on ne veuille recompiler que les modules et pas l'image du noyau, par exemple si l'on a juste ajout un module supplmentaire. Dans ce cas, au lieu de relancer le processus entier de compilation, on peut demander ne compiler puis installer que les modules : make modules && modules_install

Il ne reste plus qu faire en sorte que notre nouveau noyau soit charg au dmarrage la place de lancien. Ceci est le rle dun programme appel bootloader (chargeur de dmarrage).

1.3. Installation du noyau


Pour finaliser linstallation de notre nouveau noyau, il faut copier l'image du noyau dans le rpertoire /boot et puis configurer le bootloader pour prendre en compte le noyau nouvellement install.

1.3.1. Installation du noyau


Pour copier l'image du noyau, il y a deux options : Soit copier manuellement l'image du noyau dans /boot. [...]# cp arch/i386/boot/bzImage /boot/vmlinuz-<version-du-noyau>

Note
Comme vous pouvez le constater, il s'agit ici d'un noyau compil pour processeur de type x86

Noyau

11

(Pentium 1-4/M, Athlon, etc.).

Soit lancer l'installation automatique (dconseill si vous avez une distribution exotique). [root@linux ~]# make install

Cette commande copie l'image du noyau dans /boot et cre un lien /boot/vmlinuz pointant sur le noyau et un deuxime lien,/boot/vmlinuz-old, qui pointe vers votre ancien noyau. Ainsi, au niveau de la configuration du bootloader, vous pourrez indiquer les liens - qui ne changeront pas la prochaine version du noyau - au lieu de la relle image du noyau.

1.3.2. Cration d'une image initrd


L'objectif de l'image initrd (INITial RamDisk) est de fournir un environnement de dmarrage lorsque le noyau se charge en mmoire. Imaginons que nous avons dcid de mettre en module toute la gestion des disques durs, que se passerait-il au dmarrage ? Le noyau essaierait d'accder votre partition systme mais ne trouverait aucun disque dur ! La solution est donc de crer une image ramdisk contenant : Des modules du noyau Des thmes pour l'cran de dmarrage (Splash Screen) Des scripts, ... Voici la commande permettant la cration d'un fichier initrd : mkinitrd [options] <nom-image-initrd> <version-du-noyau>

Voici les diffrentes options :

Table 1.1. Options de mkinitrd


Option --with=module --fstab=/file --force-usb Description Permet d'ajouter un module dans l'image initrd. Ce module sera charg au dmarrage avec le noyau. Permet de spcifier un chemin diffrent pour le fichier /etc/fstab. Ajoute le support pour les contrleurs usb et les priphriques de stockage usb. Ne pas charger les modules SCSI Ne pas charger les modules RAID

--omit-scsi-modules --omit-raid-modules

Noyau

12

Par dfaut si aucune option n'est prcise, mkinitrd lit le fichier /etc/fstab et construit une image avec tous les systmes de fichiers prsent dans celui-ci. Les fichiers /etc/modules.conf et /etc/modprobe.conf sont aussi lus afin de dterminer les modules charger pour les contrleurs de disques;

Example 1.4. Exemples


Cration d'une image initrd avec support pour tous les systmes de fichiers prsents dans /etc/fstab :

[root@linux ~]# mkinitrd initrd-2.6.23-2.img 2.6.23-2

Cration d'une image initrd avec ajout du module sata_sil pour le support des cartes SATA silicon image :

[root@linux ~]# mkinitrd --with=sata_sil initrd-2.6.23-2.img 2.6.23-2

1.3.3. Configuration du bootloader


1.3.3.1. Quest ce quun bootloarder ?
Le chargeur de dmarrage (ou BootLoader) est un programme lanc avant nimporte quel systme dexploitation par le BIOS. Son rle est de charger le noyau du systme souhait. Il peut galement permettre une slection interactive. Il en existe un certain nombre parmi lesquels on citera Grub et Lilo pour les architectures x86 ou encore Silo pour SPARC ou yaboot pour PPC.

Note
Que se passe-t-il entre le moment o l'on allume sa machine jusqu'au moment o l'on entre son login et mot de passe : le BIOS effectue une srie de tests sur le matriel (RAM, dtection des disques, ...) nomm POST : Power On Self Test. C'est pendant cette tape que l'utilisateur peut appuyer sur une touche pour entrer dans le BIOS. le bootloader est charg en mmoire, l'utilisateur peut alors choisir le systme dmarrer le noyau linux est charg en mmoire par le bootloader, il s'initialise, dtecte les priphriques, ... le noyau passe alors la main au programme sysvinit, souvent dnomm init, pre de tous les processus. En effet c'est ce programme ayant comme PID 1, qui va lancer tous les services au dmarrage. init lance en dernier un terminal virtuel qui demande un login/password pour ouvrir un shell.

Nous nous intresserons ici Lilo et Grub.

Noyau

13

1.3.3.1.1. Le chargeur Lilo


Le programme Lilo (LInux LOader) est spar en deux parties nommes stages : le stage_1 est un petit programme (<= 512octets) pouvant tre plac dans le MBR (Master Boot Record) ou une disquette. Ce stage fait appel au second qui ncessite plus d'espace mmoire. le stage_2, appel chargeur d'amorage, est gnralement plac sur le disque dur.Il offre un menu permettant la slection des systmes d'exploitations et de charger le noyau en RAM. Le fichier de configuration lilo.conf se trouve dans /etc.

Example 1.5. Exemple de fichier de configuration de Lilo


#Emplacement du secteur de boot boot = /dev/hda #Temps dattente avant de dmarrer sur limage par dfaut delay = 10 image = /boot/vmlinuz-2.6.8 label = Ancien noyau root = /dev/hda1 read-only # # # # # Emplacement de limage du noyau sur le disque. Nom qui sera affich lors de la slection interactive au dmarrage Partition utiliser pour dmarrer

# La mme configuration mais pour un autre noyau image = /boot/bzImage-2.6.10 label = Nouveau noyau root = /dev/hda1 read-only # Une other label table entre pour un systme de type Windows = /dev/hda3 = Windows = /dev/hda

Important
Une fois ce fichier modifi, il est impratif de relancer la commande Lilo pour que les changements prennent effet.

1.3.3.1.2. Le chargeur Grub


Grub (GRand Unified Bootloader) est un bootloader bien plus rcent et bien plus performant. Son utilisation est aussi plus simple, puisquune fois install il ne ncessite pas dtre rinstall dans le MBR chaque modification de son fichier de configuration. Grub se configure gnralement dans le fichier /boot/grub/menu.lst

Noyau

14

Note
Sous certaines distributions, boot/grub/grub.conf. le fichier de configuration de Grub peut tre /

Example 1.6. Exemple de fichier de configuration de Grub


# Valeurs par dfaut timeout 10 # Dmarre le noyau par dfaut au bout de 10secondes default 0 # Noyau par dfaut # section 0 title GNU/Linux # Titre root (hd0,1) # Partition/dev/hda2 comme racine kernel/boot/vmlinuz root=/dev/hda2 ro # noyau et paramtres initrd/boot/initrd boot # Section 1 title Windows root (hd0,2) # /dev/hda3 boot

Note
La syntaxe de Grub au niveau du nommage des disques et partitions diffre de celle utilise habituellement sous Linux. En effet, (hd0,0) correspond /dev/hda1, c'est dire la premire partition du premier disque dur.

1.4. Gestion des modules


Les modules sont des fragments de code compils que l'on peut charger la vole dans le noyau. Les modules sont chargs dans le noyau au dmarrage du systme par le programme hotplug. Les modules sont ensuite chargs selon les besoins, par exemple lorsqu'un nouveau priphrique est branch. Le fichier /etc/modprobe.conf va permettre d'aliaser les modules ainsi que de grer les dpendances des modules chargs. Ce fichier va tre consulter lors de l'ajout ou la suppression d'un module chaud. Lorsque l'on active ou non des modules dans le noyau, il faudra reconstruire ces dpendances l'aide de la commande depmod -a. Diffrentes commandes sont connatre pour pouvoir grer les modules du noyau :

Table 1.2. Les commandes de gestion des modules


Commande lsmod Description Permet de lister les modules actuellement chargs dans le noyau. Cette commande permet galement de

Noyau

15

Commande

Description distinguer les modules rellement en cours d'utilisation

modprobe nom_du_module

Permet de charger un module et ses ventuelles dpendances. Cette commande va directement chercher les modules dans / lib/modules/<version du noyau>/ Charge le module pass en paramtre en passant le chemin complet (il ne se sert pas du fichier / etc/modprobe.conf pour les alias), sans grer les dpendances. Dcharge le module charg pass en paramtre. Reconstruit le fichier des dpendances / etc/modprobe.conf

insmod /chemin/vers/fichier.ko

rmmod nom_du_module depmod -a

Example 1.7. Chargement du module radeon


[root@linux ~]# modprobe radeon

ou bien [...]# insmod /lib/modules/2.6.22-1-386/kernel/drivers/video/ati/radeon.ko

Example 1.8. Dchargement du module radeon


[root@linux ~]# rmmod radeon

1.5. Patcher son noyau


Pourquoi appliquer un patch son noyau ? Le noyau Linux "basique", appell "vanilla" par la communaut ne possde pas toutes les fonctionnalits rcentes ou options peu courantes comme par exemple la possibilit de faire un cluster de calcul scientifique entre plusieurs machines Linux. Vous pouvez alors tlcharger un patch sur le site du projet kerrighed (cluster de calculs fait par l'inria), l'appliquer aux sources de votre noyau puis le recompiler. On peut galement patcher son noyau pour corriger un bug li la scurit, la stabilit d'un pilote, etc ... Ces patchs sont au format diff, ce sont en fait de simples fichiers textes qui contiennent les parties du code envlever ou rajouter dans les sources du noyau. On peut soi-mme en crer avec la commande diff. Par exemple si j'ai le fichier amazing.c qui contient : #include <stdio.h> #include <stdlib.h>

Noyau

16

int main(int argc, char *argv[]) { int resultat = 0; return resultat; }

Puis un autre fichier amazingV2.c qui je rajoute une ligne : #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int resultat = 0; resultat =+ 1; return resultat; }

Je lance la commande diff qui va me gnrer le fichier diff. En fait je veux faire un patch pour amazing.c afin qu'on puisse facilement passer la version amazingV2.c. root@linux# diff -Naur amazing.c amazingV2.c > amazingV2.c.diff root@linux# cat amazingV2.c.diff --- amazing.c 2008-01-13 22:27:33.000000000 +0100 +++ amazingV2.c 2008-01-13 22:16:32.000000000 +0100 @@ -3,5 +3,6 @@ int main(int argc, char *argv[]) { int resultat = 0; + resultat =+ 1; return resultat; }

A prsent si je veux appliquer ce patch, il faut se placer dans le rpertoire parant des fichiers patcher puis : root@linux# patch -Np1 < amazingV2.c.diff

Comme l'erreur est humaine, peut-tre nous sommes nous tromps de patch ou bien simplement aprs tests nous n'en voulons plus. On peut tout moment revenir en arrire avec l'option -R : root@linux# patch -R < amazingV2.c.diff

Pour en revenir aux sources de notre noyau, quand vous rcuprer un patch, il suffit de se placer dans le rpertoire des dtes sources puis de la commance ci-dessus en prcisant le patch. Attention le patch est souvent dans un format compress avec gzip, il faut alors procder comme ceci : root@linux# cd /usr/src/linux root@linux# zcat /root/patch-kerrighed.gz | patch -Np1

17

Chapter 2. Dmarrage
Table of Contents
2.1. Linux Standard Base (LSB) ..............................................................................................17 2.2. Le Processus de dmarrage ..............................................................................................17 2.2.1. BootLoader ........................................................................................................18 2.2.2. Chargement du noyau ...........................................................................................18 2.2.3. /sbin/init ............................................................................................................19 2.3. Gestion du dmarrage .....................................................................................................20 2.3.1. Les scripts init .....................................................................................................20 2.3.2. les liens rc.d ........................................................................................................21 2.3.3. insserv et les INIT INFO .......................................................................................22 2.3.4. chkconfig ...........................................................................................................23 2.4. Gestion des processus .....................................................................................................23 2.4.1. startproc, killproc et checkproc ...............................................................................23 2.4.2. startpar ..............................................................................................................24 2.5. Rcupration du systme .................................................................................................24 2.5.1. Au niveau du bootloader .......................................................................................24

2.1. Linux Standard Base (LSB)


La Linux Standard Base est une spcification assurant l'introprabilit entre les divers logiciels et les distributions linux. Ainsi, les diteurs de logiciels ont leur disposition un moyen rapide de garantir la comptatibilit de logiciel avec linux. La majorit des distributions linux s'y conforment ainsi que les diteurs majeurs. Pour l'utilisateur, cela signifie un choix prserv: il peut choisir son logiciel et sa distribution et ainsi ne pas souffrir du blocage de certains diteurs. La LSB empche le monde Linux de se fragmenter. Si vous souhaitez rendre votre distribution ou votre logiciel compatible avec le standard LSB, vous pouvez consulter cette page: http://www.linux-foundation.org/en/LSB La LSB est extrment importante lors du processus de dmarrage. C'est cette spcification qui garantie que les diffrentes distributions grent leur dmarrage selon une mme procdure.

2.2. Le Processus de dmarrage


Les systmes Linux ont un processus de dmarrage en 4 tapes: Lancement du Bootloader et prise en chage du noyau Chargement du noyau chargement de initrd si il est spcifi (il va prparer le montage de la "vrai" partition root, quelques fois des modules qui ne sont pas en durs doivent tre charg avant la partition (c'tait le cas pour SCSI avant qu'il soit en dur dans le noyau par exemple) Initialisation et rglages de priphriques Initialisation et rglages des daemons montage de la partition root finale (en lecture criture)

Dmarrage

18

lancement du premier processus init (pid 1) pre de tous les processus

2.2.1. BootLoader
Au lancement d'une machine, le BIOS se charge et effectue quelques vrification sur le matriel (la mmoire est-elle bonne, quels disques durs / lecteur optiques sont branchs, ...). Cette tape s'appelle le POST. Une fois le POST pass avec succs, le BIOS va lire les tous premiers secteurs (les 512 premiers octects) d'une parition primaire (hda1-4 ou sda1-4 suivant le type de controlleur de disque) marqu comme "bootable", il lit le MBR (Master Boot Record). C'est dans ce MBR qu'est situ ce qu'on appelle le BootLoader. Le BootLoader a pour but de permettre l'utilisateur de slectionner la manire dont il souhaite dmarrer son systme. Techniquement il aura pour mission de charger le noyau linux et dfinir quelques paramtres.

2.2.2. Chargement du noyau


Une fois le noyau charg, il initialise et configure la mmoire vive puis configure les diffrents priphrique de la machine, dont le(s) processeur(s), les priphriques d'entre/sortie et les units de stockage. Il cherche ensuite l'image initrd compresse un endroit bien prcis de la mmoire, la dcompresse, la monte et charge tous les drivers ncessaires. Il initialise ensuite les priphriques relatifs aux systmes de fichiers virtuels tels que LVM ou le RAID logiciel avant de dmonter l'image initrd et librer la mmoire qu'elle occupait. Le noyau cre ensuite un priphrique root, monte la partition root en lecture seule puis libre toute mmoire non utilise. A ce moment, le noyau est charg et oprationnel. Nanmoins, il n'est pas possible de faire grand chose. C'est pourquoi /sbin/init, le tout premier processus, est lanc la fin du chargement du noyau. Il porte d'ailleurs le PID 1 (Processus IDentifier)

Dmarrage

19

2.2.3. /sbin/init
/sbin/init, appell plus communment init aura en charge le chargement du reste du systme et la configuration de l'environnement de l'utilisateur. Il est hrit d'Unix System V et se utilise un systme de runlevels afin de dterminer l'tat du systme. Le redmarrage de la machine et son arrt sont galement dtermin par init. Iinit, grce udev, va initialiser et configurer le matriel. Init va ensuite rentrer dans son runlevel par dfaut et lancer les daemons configurs.

Dmarrage

20

2.3. Gestion du dmarrage


Nous avons vu comment se dcompos le dmarrage d'un systme Linux. Nous allons voir maintenant comment grer ce processus de lancement, et notamment la gestion des daemons.

2.3.1. Les scripts init


La majorit des daemons du systme sont grs grce aux script init. Ces script, situs dans /etc/init.d, ont pour but de contrler le dmarrage, l'arrt ou le statut dudit daemon. Ces scripts sont gnralement crits en langage shell (ex: bash) et doivent accepter un argument. Cet argument tant un argument parmis la liste suivante :

Table 2.1. Les diffrents arguments des scripts init


start stop restart try-restart reload force-reload status dmarrare le service arrte le service redmarre le service si celui-i est dmarr, sinon le dmarre redmarre le service si celui-i est dmarr rechargement de la configuration du service sans arrter et redmarrer le service rechargement de la configuration du service sans le redmarrer si celui-i le peut, sinon le redmarrer indique le status actuel du service

D'aprs la LSB, les arguments start, stop, restart, force-reload et status sont obligatoires tandis que reload et tryrestart sont facultatifs. Ainsi, si nous appellons le script suivant : /etc/init.d/sshd restart , le service sshd (le daemon ssh) va redmarrer, ou si celui-ci n'tait pas dmarr, sera dmarr.

Dmarrage

21

2.3.2. les liens rc.d


Les scripts init permettent de contrler les services une fois le systme dmarr. Mais le dmarrage du systme utilise ces mmes scripts pour l'initialisation et configuration des daemons. Lorsque init dmarre, il va lire son fichier de configuration /etc/inittab , c'est dans ce fichier que le runlevel par dfaut sera prcis. C'est ici aussi que nous pourront le modifier la ligne sous la forme id:runlevels:action:process: id:5:initdefault:

Table 2.2. Les diffrents runlevel


0 1 (single-user mode) 2(multi-user mode) 3(multi-user mode with networking) 4 5(multi-user mode) 6 arrte le systme Ne configure les interfaces rseaux, ne lance pas les daemons, autorise le login en root Ne configure les interfaces rseaux, ne lance pas les daemons. lance le systme normalement en ligne de commande inutilis lance le systme normalement avec l'interface graphique redmarre le systme

Action va correspondre au comportement du processus prcis dans le champs processus.

Table 2.3. Les diffrentes actions


respawn wait Le processus sera relanc chaque fois qu'il se terminera Le processus sera lanc une seule fois; quand le runlevel est entr. "init" attend qu'il se termine pour continuer. Le processus sera lanc une seule fois; quand le runlevel choisi aura t entr. Le processus sera excut pendant le dmarrage du systme. La valeur du "runlevel" est ignor.

once boot

Le process correspond la commande lancer. Il entre dans son runlevel par dfaut, par exemple le runlevel 3. Init va alors aller lire les scripts dans / etc/rc.d/rc3.d o 3 est le runlevel. Les fichiers contenus dans ce dossier ont des noms de la forme X00daemon o X est une lettre entre S (pour Start) ou K (pour Kill), 00 un nombre de 00 99 et daemon le nom du service. Ainsi pour le daemon sshd, je peux avoir les fichier S25sshd (le nombre variant). S va signifier ici que sshd doit tre dmarr et 25 est sa priorit par rapport aux autres services. Init va lire ces fichiers par ordre alphabtique : il va tout d'abord lire les fichiers commenants par la lettre K, par ordre numrique (ex: K01 puis K10, puis K11, ...) puis les fichiers commanants par S par ordre numrique. En ralit, ces fichiers sont des liens symboliques vers les scripts init. Ainsi, /etc/rc.d/rc3.d/S25sshd est un lien

Dmarrage

22

symbolique vers /etc/init.d/sshd. K10sshd est aussi un lien symbolique vers /etc/init.d/sshd. La diffrence rside dans l'argument appell. Lorsque init traite les fichiers K00daemon, il les appellera avec l'argument stop. Les fichiers S00daemon sont excuts avec l'argument start. Ainsi S25sshd dmarrera sshd de la mme manire que si nous appellions /etc/init.d/sshd start. Pour deux fichiers S10networking et S25sshd, la diffrence rside que S10networking sera excut avant S25sshd. C'est trs important car le serveur ssh a besoin que le rseau soit oprationnel avant de pouvoir se lancer (S10networking s'occupant de dmarrer les interfaces rseaux). Donc maintenant il devient plus ou moins simple de configurer un daemon pour qu'il se lance au dmarrage du systme : il suffit de faire un lien symbolique du script init vers un fichier dans rcX.d o X est le runlevel que l'on souhaite. ex : # ln -s /etc/init.d/myapp /etc/rc.d/rc3.d/S80myapp. Ici, le nombre 80 est dcid en fonction des besoin de notre daemon. Il est important, dans le cas d'un daemon, de le stopper lorsque l'on redmarre ou qu'on teint la machine. Il faut donc tablir un lien dans les dossiers rc0.d (pour l'arrt) ou rc6.d (pour le redmarrage). ( # ln -s / etc/init.d/myapp /etc/rc.d/rc0.d/K10myapp ). Il faut galement prvoir l'arrt du daemon lors du passage en runlevel 1 ou tout autre runlevel o le daemon n'est pas cens fonctionner. Ce n'est pas si simple que a en fait... Heureusement, des outils permettent d'automatiser tout a.

2.3.3. insserv et les INIT INFO


Une commande trs pratique va nous permettre de grer ces liens de manire transparante. C'est la commande insserv dont la syntaxe est la suivante:

[root@linux ~]# insserv [options] [/chemin/vers/init.d/]script

La LSB dfinit quand elle les commandes install_initd et remove_init qui prennent comme seul argument le chemin vers le script init.d. La premire commande va mettre en place les liens tandis que la seconde va les enlever. Insserv ne devine pas tout seul les liens mettre en place ou non, elle se base sur ce qu'on appelle les INIT INFO. Les INIT INFO sont des commentaires particuliers dans les scripts init.d. Ils dfinissent les runlevels o le daemon est actif, dtermine sa priorit grce des critres de dpendances et fournit une description du daemon. Voici un exemple d'INIT INFO:

### BEGIN INIT INFO # Provides: lsb-ourdb # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop OurDB # Description: OurDB is a very fast and reliable database # engine used for illustrating init scripts ### END INIT INFO

Nous dfinissons donc dans cette exemple les runlevels o ce daemon doit dmarrer grce au mot cl DefaultStart ainsi que l o doit s'arrter grce Default-Stop. Nous ne dfinissons ici aucun niveau de priorit. Ce niveau est dtermin grce Required-Start qui va analyser les dpendances et placer notre daemon aprs que ces dpendances soient correctement dmarres. Ces dpendances peuvent tre des noms de daemon (comme ici le nom de notre daemon donn par Provides est lsb-ourdb) mais galement des noms de facilities. Les facilities sont en quelque sorte des groupes de daemons. Ces groupes sont dfinis dans le fichier /

Dmarrage

23

etc/insserv.conf. Les facilities personnalises sont dfinir dans un fichier dans / etc/insserv.conf.d/. Ces facilities sont reprsents par une sorte de variable de type $nom_de_facility. Par dfaut, la facility $network regroupe les daemons networking et ifupdown. Donc pour que notre daemon de l'exemple prcdent dmarre, il faut que la facility $network soit dmarre, et donc que les script networking et ifupdown soient dmarrs, entre autres. Insserv calculera alors qu'il faut au moins que notre daemon soit dmarrs aprs ces daemons. Il aura donc un nombre reprsentant sa priorit plus grand que ceux de networking et ifupdown.

Note
Ces variables ne sont accessibles que dans le cadre du INIT INFO et ne sont pas disponibles en dehors (aka dans le script lui mme).

2.3.4. chkconfig
chkconfig est un pseudo frontend insserv. Sa syntaxe est la suivante :

[root@linux ~]# chkconfig <action> [options de l'action] Les actions possibles sont :

Table 2.4. les actions de chkconfig


--add <nom_du_script> appelle insserv afin d'ajouter / etc/init.d/nom_du_script au dmarrage puis appelle l'action list pour rcapituler identique l'action --add mais pour retirer le script du dmarrage liste le status du script sur les diffrents runlevels : on ou off. Si le nom du script n'est pas fournit, liste le status de tous les daemons aucune action permet de customiser le comportement d'un daemon. L'action --level permet de customiser le comportement sur un runlevel particulier, outrepassant la configuration originale du script.

--del <nom_du_script> --list [nom_du_script]

[--level <niveau>] <nom> <on|off|reset|resetpriorites>

2.4. Gestion des processus


2.4.1. startproc, killproc et checkproc
startproc, killproc et checkproc sont respectivement 3 commandes permattant de dmarrer un processus, l'arrter ou vrifier son lancemement. Chacune de ces commandes prend en argument le chemin complet vers le processus. Contrairement la commande kill, ces commandes utilisent le chemin complet du processus et non son PID pour dterminer l'otigine du processus. startproc : dmarre le processus pass en argument si celui-ci n'est pas dj lanc.

Dmarrage

24

checkproc : vrifie si le processus pass en argument est lanc. killproc : envoie un signal au processus pass en argument. Par dfaut killproc envoie le signal SIGTERM. Lorsque SIGTERM est envoy, si le processus ne s'est toujours pas termin, le signal SIGKILL est envoy au bout de quelques secondes. Si un fichier .pid est trouv, killproc le supprimera si le programme ne l'a pas dj fait lui-mme.

2.4.2. startpar
La commande startpar permet de lancer plusieurs scripts de runlevel en parrallle. Sa syntaxe est la suivante :

[root@linux ~]# startpar [options] prg1 prg2 prg3 ... L'option -a <arg> permet de passer un argument tous les scripts appells.

2.5. Rcupration du systme


Que peut-on faire si le systme n'arrive pas dmarrer ?

2.5.1. Au niveau du bootloader


Par dfaut, la majorit des distributions fournissent 2 entres dans le bootloader. Une entre dite "normale" ainsi qu'une entre dite "failsafe". L'entre failsafe est une entre qui permet de dmarrer en runlevel 1. Le Grub dispose d'un shell, le shell Grub. Grce ce pseudo-shell, il est possible d'diter les arguments de dmarrage de la machine. Il suffit pour cela d'appuyer sur la touche 'e', de choisir la ligne modifier puis d'appuyer nouveau sur 'e'. Lorsque la ligne est dite, un appuie sur la touche 'b' permet de dmarrer avec ces arguments. Ces modifications ne sont que temporaires et ne sont pas inscrites dans le grub.conf Si mme le mode failsafe ne fonctionne pas, une modification des arguments permet de se passer d'init. Comme nous le savons, une fois que le kernel s'est charg en mmoire, il appelle par dfaut /sbin/init qui va initialiser le systme. Les 2 bootloaders principaux, lilo et grub acceptent le paramtre init=/chemin/vers/init. Ds lors, init ne sera pas lanc mais ce sera l'executable pass en chemin. On peut alors passer le paramtre init=/bin/bash qui dmarrera directement un shell.

Note
Cette mthode du init=/bin/bash est gnralement utilise pour rcuprer le mot de passe root vu qu'aucun mot de passe ne sera demand, au contraire du mode failsafe (init 1) qui demande le mot de passe root. Il devient donc important de protger physiquement l'accs au serveur.

25

Chapter 3. Systmes de fichiers


Table of Contents
3.1. Introduction ..................................................................................................................25 3.1.1. Pr-requis ...........................................................................................................25 3.1.2. Objectifs ............................................................................................................25 3.2. Gestion des systmes de fichiers ........................................................................................26 3.2.1. Montage ............................................................................................................26 3.2.2. Dmontage .........................................................................................................27 3.3. Visualisation des systmes de fichiers ................................................................................27 3.3.1. Le fichier /etc/mtab ..............................................................................................27 3.3.2. Le fichier /proc/mounts .........................................................................................28 3.4. Automatisation des montages avec /etc/fstab .......................................................................28 3.5. Autofs ..........................................................................................................................29 3.6. Outils supplmentaires ....................................................................................................30 3.6.1. La commande sync ..............................................................................................30 3.6.2. Gestion de la swap ...............................................................................................30 3.7. Maintenance ..................................................................................................................31 3.7.1. fsck ...................................................................................................................31 3.7.2. La commande badblocks .......................................................................................32 3.7.3. La commande dumpe2fs .......................................................................................32 3.7.4. La commande debugfs ..........................................................................................32 3.7.5. La commande tune2fs ...........................................................................................32 3.8. Cration de systmes de fichiers ........................................................................................33 3.8.1. Auto montage .....................................................................................................33 3.8.2. Cration d'image disque ........................................................................................33 3.9. Sauvegarde, copie d'un systme de fichier ...........................................................................34 3.9.1. Commande dd .....................................................................................................34 3.9.2. Cration d'image disque ........................................................................................34

3.1. Introduction
Vous allez voir dans ce module les fonctionnalits avances concernant la gestion des systmes de fichiers sous Linux

3.1.1. Pr-requis
Avant de commencer, voici un rappel des diffrentes notions qu'il est impratif de matriser pour la comprhension de ce cours : Systmes de fichiers et gestion des disques

3.1.2. Objectifs
Gestion des systmes de fichiers Gestion de la mmoire virtuelle

Systmes de fichiers

26

Sauvergarde et automatisation

3.2. Gestion des systmes de fichiers


Pour accder aux diffrentes partitions disponibles sur nos disques ou mme des partages rseaux, nous utilisons sous linux le principe de points de montage. Cela rside dans l'association entre un "device" (partition, partage rseau) et un dossier dans notre systme de fichiers. Une fois cette association effectue, nous pourrons donc accder nos diffrents systme de fichiers directement en allant dans le dossier associ.

3.2.1. Montage
Afin de raliser cette opration, nous allons utiliser la commande mount. Elle nous offre un grand nombre d'options permettant de spcifier de nombreux paramtres concernant le montage effectuer. Cet outil permet de monter la plupart des systmes de fichiers existant ce jour, fussent-ils tudis pour linux, unix ou mme les systmes microsoft. Sa syntaxe gnrale est : # mount [options] device point_de_montage

Table 3.1. Les principales options de mount :


-a -r -w -v -o -t monte tous les systmes de fichiers lists dans / etc/fstab monte le systme de fichier en lecture seule montage en lecture/criture mode verbeux spcifications d'options supplmentaires (voir tableau suivant) spcifier le systme de fichier utiliser (ex : ext3, nfs, ntfs-3g, vfat ...)

Il existe galement un certain nombre de commandes associs chacun des systmes de fichiers que vous tes capable de monter. Ces commandes existent sous la forme mount.format, comme par exemple mount.ext3 ou encore mount.nfs. Notons qu'on privilgiera prsent l'utilisation de l'argument cifs smbfs pour les partages de type samba. Mais il existe un trs grand nombre d'autres options que nous allons pouvoir indiquer l'aide de l'option -o. Scurit, proprit, attributs des systmes de fichiers sont un exemple des possibilits offerte par ces options. Leur utilisation se fait la suite de l'option -o sous la forme : -o arg1=val1,arg2=val2,arg3=val3.

Table 3.2. arguments de l'option -o


uid/gid user password utilisateur/groupe propritaire du montage (root par dfaut) utilisateur utiliser pour l'identification (dans le cadre d'un partage rseau) mot de passe utiliser pour l'identification (dans le cadre d'un partage rseau)

Systmes de fichiers

27

workgroup fmask/dmask acl user_xattr

nom de domaine utiliser pour l'identification (dans le cadre d'un partage rseau) umask utiliser pour la cration d'un fichier/dossier activation des acls utilisation des attributs avancs sur les fichiers

L'exhaustivit des possibilits offertes par l'outil mount nous permet une trs grande flexibilit dans la gestion de nos systme de fichiers.

3.2.2. Dmontage
Pour dsactiver l'accs un systme de fichiers, nous allons pouvoir raliser l'opration inverse, le dmontage. Afin de raliser cette action, la commande umount est disponible sur les systmes de type GNU/Linux. La syntaxe de base est quasiment la mme que pour l'outil mount de mme que pour les options. La seule relle diffrence rside dans le fait que l'on a besoin de spcifier uniquement le device ou le point de montage, pas forcment les deux. # umount [options] device|point_de_montage

Table 3.3. Les principales options de umount :


-a -t -f -v dmonte tous les systmes de fichiers lists dans / etc/mtab dmonte tous les systmes de fichiers utilisant ce format forcer le dmontage mode verbeux

Il reste important de toujours contrler l'ordre dans lequel on dmonte nos systmes de fichiers en s'assurant bien que si un systme de fichiers est mont l'intrieur d'un autre, il faut dmonter en premier si l'on souhaite dmonter celui qui le supporte.

3.3. Visualisation des systmes de fichiers


Vous pouvez visualiser les diffrents systmes de fichiers monts tout instant essentiellement l'aide des deux fichiers que nous allons voir.

3.3.1. Le fichier /etc/mtab


Ce fichier est celui utilis par la plupart des applications disponibles sur votre systme et c'est galement celui que nous allons regarder gnralement en tant qu'administrateur du systme. Ce fichier se prsente sous la forme de 6 colonnes (ou champs) nous donnant diverses informations sur les diffrents systmes de fichiers monts, raison de un par ligne.

Table 3.4. champs du fichier /etc/mtab


device mount point chemin vers le priphrique mont point de montage dans le systme de fichiers

Systmes de fichiers

28

fs type options dump

systme de fichiers utilis options appliques au systme de fichier mont (cf les options de mount) spcifie si le systme de fichiers a t sauvegard ou pas avant son montage (0 pour ne pas sauvegarder, 1 sinon) indique si le systme de fichiers a t vrifi avant d'tre mont. Il va vrifi les systmes de fichiers en fonction de leur nombre (0 si non vrifi, 1 si vrifi en priorit ensuite par ordre croissant. Si deux systme de fichiers ont le mme numro, alors ils seront vrifis paralellement.

fsck

Un exemple d'utilisation courante de ce fichier est la commande mount. En effet, mount regarde dans ce fichier pour prendre connaissance des systmes de fichier dj monts et l'utilisation de mount sans argument affiche le contenu de /etc/mtab.

3.3.2. Le fichier /proc/mounts


Ce fichier a exactement les mmes structure et rle que /etc/mtab, la seule diffrence rside dans leur actualisation. Ce dernier est maintenu jour en contenu par le noyau alors que /etc/mtab n'est crit que lorsqu'un changement est dtect par le systme. Nanmoins il est trs rare de constater une diffrence de contenu entre ces deux fichiers.

3.4. Automatisation des montages avec /etc/fstab


Afin de faciliter l'administration de nos diffrents systmes de fichier et nous permettre de sauvegader les choix que nous faisons quant leur configuration et utilisation, le fichier /etc/fstab nous est fourni. Nous allons pouvoir indiquer dans celui tous les systmes de fichiers que nous souhaitons soit monter directement au dmarrage, soit simplement ceux pour lesquels nous souhaitons spcifier des options appeler automatiquement avec la commande mount. Une fois ce fichier modifi, on pourra monter automatique un systme de fichier avec mount -a pour tous les monter sans disctintions, ou encore avec mount suivi du priphrique ou du point de montage, le reste des informations tant automatiquement recherches dans /etc/fstab. Le principe de ce fichier est identique /etc/mtab et nous allons retrouver exactement les mmes champs :

Table 3.5. champs du fichier /etc/mtab


device mount point fs type options dump chemin vers le priphrique mont point de montage dans le systme de fichiers systme de fichiers utilis options appliques au systme de fichier mont (cf les options de mount) spcifie si le systme de fichiers a t sauvegard ou pas avant son montage (0 pour la dsactiver, une autre valeur entre 1 et 9 pour spcifier le niveau) indique si le systme de fichiers a t vrifi avant d'tre mont (0 : dsactiv, une autre valeur pour l'ordre des vrifications, 1 tant pour la partition racine)

fsck

Systmes de fichiers

29

Une option intressante pour le montage est l'option noauto qui peut tre spcifie pour indiquer que le systme de fichier ne doit pas tre mont au dmarrage, mais nous permet nanmoins d'avoir tous ses paramtres de sauvegards pour un montage ultrieur.

3.5. Autofs
Le systme d'automontage AutoFS est initialis par les scripts d'automount puis maintenu par le dmon automountd qui va s'occuper des montages et dmon- tages la vole. Lorsqu'un utilisateur va vouloir accder un partage, automound va le monter et le laisser dans cet tat jusqu' se que le client n'en ai plus besoin suite une priode d'inactivit dfinie sur le partage dans la configuration d'AutoFS. Mettre en place AutoFS vous permettra : Monter des systmes de fichier la demande et plus continuellement comme avec mount Dmonter automatiquement les ressources distantes Centraliser l'administration sur le client de l'accs aux services distants Automount est constitu de 3 lments, comme indiqu sur le schma : Le systme AutoFS Le dmon automountd La commande automount Les points de montages de type AutoFS sont dfinis dans des tables d'automontage sur le client. Une fois les tables d'automontage dfinies, elles dclencheront le montage et le dmon- tage la vole des systmes de fichiers NFS. Ces vnement sont superviss par le module noyau d'AutoFS qui les lve. Il y a une sparation totale entre le dmon automountd et la commande automount, la commande automount est appele au dmarrage une fois le daemon automountd lanc afin d'initialiser l'automontage grce la configuration globale dfinie dans la table matre, puis AutoFS les gnrera avec le daemon automountd suite aux vnements de montage capturs par le module noyau d'AutoFS. Le ressources devant tre prises en charge par automount sonr dfinies dans des tables d'automontage. Le schma illustre les tables d'automontage situes dans le rpertoire /etc. Nous ne citerons ici que quelques tables mais il existe des tables spcifiques pour des services tel que samba, nfs... elles sont situs dans /etc/auto.(dir) La table master : /etc/auto.master : La table matre est la table de configuration globale du service AutoFS, elle est lue lors du d- marrage du serveur afin de connatre les partages grer par le service, elle met en corrlation un partage avec un type de table utiliser : une table directe ou une table indirecte. La syntaxe gnrale de ce fichier est : point_de_montage nom_de_la_table options qui peuvent prendre les valeurs : example de fichier auto.master:

#Options similaires celles de la commande mount +auto_master /net -hosts -nosuid,nobrowse /home auto_home -nobrowse

Systmes de fichiers

30

Table 3.6. champs de /etc/auto.master


point_de_montage Chemin complet vers le rpertoire qui accueillera la ressource distante. Si il n'existe pas il sera automatiquement cr par le service AutoFS. Nom de la table utiliser : directe ou indirecte Options similaires celles de la commande mount

nom_de_la_table options

3.6. Outils supplmentaires


Il existe d'autres outils intressants pour le management de nos systmes de fichiers.

3.6.1. La commande sync


Une cause rcurrente concernant les problmes sur les systmes de fichier est la corruption de ces derniers. Cela arrive souvent lorsque le systme de fichier est par exemple dmont de manire force au milieu d'une opration d'criture. Il en rsulte une non-concordance entre la tables d'inodes et les donnes prsentes rellement sur le systme de fichier. On peut forcer la mise jour de ces donnes tout instant en utilisant la commande sync. Cet outil va finaliser tous les changements encore en buffer pour le systme de fichier concern, nous vitant ainsi une future corruption.

3.6.2. Gestion de la swap


Lorsque la mmoire matrielle vient manquer, le systme peut utiliser une mmoire de masse comme un fichier sur le disque dur ou une partition. C'est le principe de la zone de swap. Si vous souhaitez activer n'importe quel moment une zone de swap, vous pouvez utiliser la commande swapon. # swapon [options]

Table 3.7. Options de la commande swapon


-a -h -s Active tous les priphriques marqus comme swap dans le fichier /etc/fstab Aide de la commande swapon Statistiques sur l'utilisation de votre swap

Vous pouvez aussi si vous le souhaitez dsactiver une zone de swap en utilisant la commande inverse : swapoff. Pour crer une zone de swap, que ce soit un fichier ou une partition, il suffit d'utiliser la commande mkswap.

Systmes de fichiers

31

# mkswap [options] device

Table 3.8. Options de la commande mkswap


-c -f -vn Vrifie le priphrique avant de crer la zone de swap. Force l'xcution de la commande mkswap. Version de la zone de swap (v0 pour l'ancienne version et v1 pour la nouvelle)

3.7. Maintenance
3.7.1. fsck
Lorsque certains fichiers disparaissent, les tailles de fichiers sont inexactes, les permissions sont compromises, il faut vrifier le systme de fichier. Pour cela, il suffit d'utiliser la commande fsck. Avant son utilisation, il convient de redmarrer la machine en mode single-user et de dmonter la partition sur laquelle la vrification sera effectue. # fsck [options] device

Table 3.9. Options de la commande fsck


-t -A -N -a -r Type du systme de fichier vrifier Vrifie tous les systmes de fichiers spcifis dans le fichier /etc/fstab. N'xcute pas la commande mais affiche ce qui va tre effectu. Rpare automatiquement le systme de fichiers sans poser de questions. Rpare le systme de fichiers en demandant la confirmation de l'utilisateur chaque tape.

Les rsultats de la commande fsck sont les suivants :

Table 3.10. Rsultats de la commande fsck


0 1 2 4 8 Aucune erreur Erreurs corriges Le systme doit tre redmarr Il reste des erreurs sur le systme de fichiers. Il reste des erreurs non critiques

Systmes de fichiers

32

16 32 128

Erreur de syntaxe ou d'utilisation La commande a t arrt par l'utilisateur Erreur de librairie partage

3.7.2. La commande badblocks


Mme si les disques durs actuels sont capables de grer les blocs dfectueux en utilisant des blocs de secours, certains disques IDE assez anciens ne sont pas capables de la faire. # badblocks [options] device

Table 3.11. Options de la commande badblocks


-c -n -v -b -o Nombre de blocs tester en une fois (64 par dfaut) Mode lecture non destructif Mode verbeux Taille des blocs en octets Permet de spcifier un fichier de sortie

3.7.3. La commande dumpe2fs


La commande dumpe2fs permet d'afficher des informations sur un systme de fichiers ext2 ou ext3. # dumpe2fs [options] device

Table 3.12. Options de la commande dumpe2fs


-b -h Affiche les blocs rservs pour les blocs dfectueux. Affiche uniquement les informations sur le superbloc

3.7.4. La commande debugfs


La commande debugfs permet d'xaminer et de changer l'tat d'un systme de fichier ext2. Vous pourrez aussi rcuprer certains fichiers effacs. Cette commande ne marche pour les systmes de fichiers ext3. # debugfs [options] device

3.7.5. La commande tune2fs


La commande tune2fs permet de changer diffrentes options concernant un systme de fichier ext2 ou ext3. # tune2fs [options] device

Systmes de fichiers

33

Table 3.13. Options de la commande tune2fs


-l -c n -i n -L label -j -m n Liste l'ensemble des options modifiables Spcifie le nombre maximum de montage avant une vrification par la commande fsck. Spcifie l'intervalle de temps maximum entre 2 vrification du systme de fichiers. Permet de modifier le label du volume. Ajoute un journal ext3 au systme de fichiers. Spcifie le pourcentage de blocs rservs

3.8. Cration de systmes de fichiers


3.8.1. Auto montage
Lorsqu'un systme de fichiers est auto mont, cela signifie qu'un daemon s'occupe de dmonter et de monter le systme de fichiers. Si l'utilisateur cherche accder un systme de fichiers dmont, il sera alors automatiquement mont. Tous les systmes de fichiers qui peuvent tre monts par la commande mount peuvent tre automatiquement monts. Pour cela, Linux utilise un utilitaire nomm autofs. Le fichier /etc/auto.master dfinie les systmes de fichiers qui doivent tre grs par autofs. # Format of this file: # mountpoint map options # For details of the format look at autofs(8). /share /etc/auto.share /home /etc/auto.home

Chaque point de montage se voit attribu un fichier /etc/auto.mount_point. Ce fichier utilise la syntaxe suivante : key [options] location

de

configuration

de

la

forme

Le premier champ dfinie un identificateur pour le montage. Les diffrentes options sont passes en utilisant le caractre "-". Le dernier champ indique le priphrique ou volume monter. cdrom -fstype=iso9660 :/dev/cdrom

3.8.2. Cration d'image disque


La commande mkisofs permet de crer des systmes de fichiers du type ISO9660, Joliet ou encore HFS. Il est donc trs simple de crer un fichier ISO pour le graver par la suite sur un cd-rom. Pour cela, nous utilisons la commande mkisofs. # mkisofs [options] path

Systmes de fichiers

34

Table 3.14. Options de la commande mkisofs


-J -o file -v -r Extensions de type Joliet comprhensible par Windows (noms de fichiers en unicode) Fichier de sortie Mode verbeux Modifie les permissions de tous les fichiers pour qu'ils soient lisibles par tout le monde

3.9. Sauvegarde, copie d'un systme de fichier


3.9.1. Commande dd
La commande dd est utilise pour copier des fichiers voir un systme de fichier entier. Elle est aussi utilise pour creer des images iso ou pour creer des fichiers d'une taille bien dfinie. Cette commande prend en paramtre le flux d'entre (le systme de fichier) "if" et un flux de sortie (un fichier) "of". On peut aussi prciser le "block size": bs c'est dire la taille d'un block logiciel allant en gnral de 1ko 8ko. En fonction de la taille moyenne de vos fichiers les blocks size vont optimiser la gestion des fichiers dans votre systme de fichier. Et enfin le count c'est dire le nombre de blocks dans votre systme (trs utile quant on veut creer un fichier de taille fixe). Par exemple pour creer un fichier de 1Mo on va utiliser un bs de 1ko et un count de 1024 1ko*1024 = 1Mo. Pour creer une image iso d'un disque # dd if=/dev/cdrom of=/home/toto/Documents/monimage.iso

Lorsque l'on cre un fichier de taille fixe, on va creer un fichier crire des 0 l'interieur. Un priphrique un peu spcial va nous aider raliser cela: /dev/zero. On cre donc un fichier de 1OOMo. # dd if=/dev/zero of=/home/totot/Documents/monfichier bs=2k count=1024

3.9.2. Cration d'image disque


La commande mkisofs permet de crer des systmes de fichiers du type ISO9660, Joliet ou encore HFS. Il est donc trs simple de crer un fichier ISO pour le graver par la suite sur un cd-rom. Pour cela, nous utilisons la commande mkisofs. # mkisofs [options] path

Systmes de fichiers

35

Table 3.15. Options de la commande mkisofs


-J -o file -v -r Extensions de type Joliet comprhensible par Windows (noms de fichiers en unicode) Fichier de sortie Mode verbeux Modifie les permissions de tous les fichiers pour qu'ils soient lisibles par tout le monde

36

Chapter 4. Matriel
Table of Contents
4.1. Configuration du RAID ...................................................................................................36 4.1.1. Introduction au RAID ...........................................................................................36 4.1.2. Le RAID matriel ................................................................................................37 4.1.3. Mise en place du RAID logiciel ..............................................................................38 4.1.4. Utilisation et configuration du RAID logiciel ............................................................39 4.1.5. Maintenance et surveillance ...................................................................................44 4.2. Mise en place de LVM ....................................................................................................46 4.2.1. Prsentation ........................................................................................................46 4.2.2. Composition de LVM ...........................................................................................46 4.2.3. Installation .........................................................................................................47 4.2.4. Dmarrage et arrt de LVM ...................................................................................47 4.2.5. LVM en dtail .....................................................................................................48 4.2.6. Mise en place du LVM .........................................................................................52 4.3. Ajout de nouveau matriel ...............................................................................................55 4.3.1. Priphriques PCI ................................................................................................55 4.3.2. Priphriques USB ...............................................................................................56 4.3.3. Inspection de la configuration courante ....................................................................58 4.4. Configuration logicielle et kernel ......................................................................................59 4.4.1. L'outil hdparm .....................................................................................................59 4.4.2. L'outil tune2fs .....................................................................................................61 4.4.3. Utilisation de sysctl ..............................................................................................63 4.5. Configuration des priphriques PCMCIA ..........................................................................64 4.5.1. Fichiers de configuration .......................................................................................64 4.6. Les outils PCMCIA ........................................................................................................67 4.6.1. L'outil cardmgr ....................................................................................................67 4.6.2. L'outil cardctl ......................................................................................................67

4.1. Configuration du RAID


4.1.1. Introduction au RAID
En 1987, les chercheurs de l'universit de Berkeley ont proposs cinq niveaux de RAID (les niveaux 1, 2, 3, 4 et 5). Depuis d'autres niveaux ont t implments comme le RAID 6 et le RAID 7. Les niveaux JBOD et 0 sont aussi considrs comme des modes de RAID bien qu'ils n'implmentent pas de redondance des donnes (le 'R' de RAID signifie Redundant c'est dire redondance). Le RAID 0 et le JBOD sont d'ailleurs prsents en standard sur toutes les cartes RAID du march. Ces modes (niveaux) de RAID sont considrs comme des modes simples. Il est galement possible de crer des niveaux de RAID combins. Le but de cette technologie est de remplacer les coteux disques de 6.5 pouces et de 9.5 pouces (ces disques sont aussi appels disques grands systmes ) qui quipent les gros serveurs (comme les serveurs de fichiers) par des ensembles forms de disques de 3.5 pouces plus rpandus et beaucoup moins chers. Cela explique pourquoi l'acronyme RAID signifie aussi Redundant Array of Inexpensive Disks. Cette technologie est principalement utilise dans le domaine de l'entreprise pour scuriser ou bien pour augmenter les performances des serveurs. Elle est parfois mise en place avec d'autres technologies telles que le clustering afin d'obtenir des performances encore plus grande ou bien d'avoir une scurit maximale. Cependant, le RAID se popularise rapidement par le biais des cartes d'extension (par exemple les cartes au format PCI 32 bits)

Matriel

37

et des chipsets intgrs au sein des cartes mres grand public (ex. : le chipset sud Intel ICH5R). Gnralement les contrleurs RAID que l'on trouve sur le march du matriel grand public sont trs limits par rapport aux contrleurs RAID haut de gamme (niveaux RAID supports rduit au RAID 0 et 1, pas de mmoire cache intgre au contrleur). Le but du RAID est de rassembler plusieurs disques durs physiques en une seule unit logique. C'est dire que pour plusieurs disques utilisant la technologie RAID, le systme d'exploitation ne verra qu'un seul disque que l'on pourra qualifier de disque virtuel . Le RAID fonctionne donc grce un ensemble (ou agrgat) de disques. Il existe plusieurs niveaux (ou configuration) de RAID qui rassemblent diffremment les donnes sur l'ensemble des disques. En fonction du niveau de RAID slectionn on peut : additionner la capacit des disques durs pour former un disque virtuel plus grand. obtenir un disque virtuel plus performant. mettre en place la tolrance de panne (c'est dire scuriser les donnes, mais ne remplace pas la sauvegarde). augmenter la capacit, les performances et la scurit. La technologie RAID peut tre mise en place au niveau matriel ou niveau logiciel. Elle fonctionne avec des disques durs utilisant l'interface PATA (Parallel Advanced Technology Attachment), SATA (Serial Advanced Technology Attachment) ou bien SCSI (Small Computer System Interface).

4.1.2. Le RAID matriel


Le RAID matriel fonctionne indpendamment du systme : Un composant matriel (gnralement une carte d'extension PCI) appeler "contrleur RAID" va s'occuper de grer les disques de la grappe grce son propre processeur et de la mmoire intgre, ainsi qu'une batterie de secours. Dans le cas d'un RAID matriel, il suffit donc de brancher les diffrents disques sur le contrleur, ce qui va simuler au niveau du SE un seul grand volume, qu'il vous faudra formater. Avantages du RAID matriel : Simple mettre en place. Certains constructeurs fournissent le support. Dtection des dfauts de disque. Remplacement chaud (hotswapping). Charge systme allg, les tests de cohsion sont effectus sans utiliser de ressources systmes. Transparent pour le systme. Dsavantages du RAID matriel : Chaque marque de contrleur possde au niveau du firmware son propre systme de gestion du RAID qui sera pas compatible avec celui du concurrent. Le matriel des contrleurs peuvent tre moins puissant que celui du systme, le RAID logiciel sera donc prfrable dans ce cas (par exemple, lors de la mise en place d'un RAID 0). Coteux mettre en place

Matriel

38

Interface du BIOS du contrleur pas trs "user-friendly" par rapport une GUI.

4.1.3. Mise en place du RAID logiciel


4.1.3.1. Prparation du noyau
L'implmentation du RAID sous Linux ncessite une prise en charge du noyau. Il est ncessaire de cocher le support du RAID dans le noyau. Pour cela il faut se rendre dans le menu Device Drivers => Multi-Device support, cocher le support du RAID ainsi que les niveaux de RAID souhaits. Puis recompiler le noyau (ou les modules si le support du RAID a t coch en module).

Figure 4.1. Configuration du noyau pour le RAID

4.1.3.2. Installation de mdadm


Vous devez galement installer mdadm (partie userland (qui ne dpend pas du noyau) du RAID) qui est disponible l'adresse suivante : http://cgi.cse.unsw.edu.au/~neilb/mdadm. Le RAID l'aide de mdadm ne se configure pas dans un fichier, mais l'aide de la commande qui vous permettra de crer vos disques logiques et de les administrer.

Warning
un fichier est quand mme utilis mais est cr aussi grce la commande mdadm. Nous allons voir comment crer des partitions RAID de niveau 0, 1 et 5.

Matriel

39

Bien que l'outil mdam soit de nos jours largement utilis, ils est tout de mme important de connaitre son anctre, mkraid faisant partie du paquet raidtools. Ce dernier se base sur le fichier /etc/raidtab pour grer les priphriques raid.

4.1.3.3. Prparation des disques


Pour mettre en place du RAID logiciel, nous devons tout d'abord crer des partitions sur nos disques qui vont servir stocker les donnes de nos partitions RAID. Pour cela nous utiliserons fdisk comme pour crer des partitions sur les disques, mais au lieu de choisir le type 83 (Linux), nous devons choisir le type FD qui reprsente des partitions Linux RAID Autodetect .

Important
Attention, il ne faut crer qu'une seule partition par disque, nous risquerions sinon de perdre tout l'intrt du RAID savoir la tolrance de panne et/ou la performance.

4.1.3.4. Nommage des priphriques RAID


Les partitions de RAID sont dsignes par les fichiers spciaux : /dev/mdX

O X est un numro reprsentant la partition de RAID voulue. Ce numro est compris entre 0 et 15 inclus. Nous pouvons donc avoir 16 partitions de RAID logiciels au maximum.

Warning
il n'y a pas besoin de partitionner son disque en RAID logiciel. Ils doivent tre utiliss directement comme des partitions.

4.1.4. Utilisation et configuration du RAID logiciel


4.1.4.1. Mise en place d'un RAID 1
Un systme RAID 1 duplique les donnes sur tous les disques. Tout comme le RAID 0, le RAID 1 ncessite un minimum de deux disques durs pour fonctionner. Les disques ont un contenu identique ce qui implique une perte d'espace proportionnelle au nombre de disques rajouts. En effet, si on met 3 disques de 40 Go en RAID 1, alors les 40 Go cris sur le disque 1 seront copis sur les deux autres disques. On perdra donc 2 * 40 = 80 Go d'espace disque sur la capacit totale des 3 disques (120 Go). En cas de dysfonctionnement de l'un des disques durs (cela arrive frquemment sur des serveurs recevant beaucoup de requtes par secondes), le contrleur RAID utilisera alors uniquement les disques en tat de marche. Le RAID 1 apporte donc la tolrance de pannes. L'utilisation du RAID 1 est particulirement recommande sur des serveurs stockant des donnes sensibles qui doivent rester fonctionnels 24 heures sur 24. Lorsque l'on met en place un RAID 1 avec des disques durs de capacits diffrentes, alors la capacit de stockage de l'ensemble en RAID 1 sera celle du disque de plus faible capacit. Lorsqu'un accs en lecture est ralis sur un ensemble de disques en mode RAID 1, alors tous les disques lisent chacun une partie de la donne ce qui amliore grandement les performances en lecture. En revanche lors de l'criture sur un ensemble de disques RAID 1, les performances ne sont pas amliores. En effet, les disques vont crire les donnes de faon

Matriel

40

synchronise et ce au fur et mesure que les donnes vont arriver au contrleur. Le travail lors d'un accs en criture n'est donc pas divis entre les disques mais est commun tous les disques. Le dbit en criture d'un ensemble RAID 1 est donc le mme que celui d'un disque seul. C'est pourquoi dans un ensemble RAID 1, contenant 5 disques les accs en lecture seront grandement amliors alors que les accs en criture stagneront. Le but du RAID 1 est d'offrir une scurit maximale aux donnes stockes sur une machine. C'est pourquoi certaines cartes RAID incluent plusieurs contrleurs RAID (un par disque) afin qu'en dpit de la perte d'un contrleur les donnes soient toujours accessibles. Dans ce cas on parle de duplexing . Il existe donc bien deux types de RAID 1 diffrents. Le duplexing tant mconnu et trs peu utilis, une certaine confusion s'est cre propos du RAID 1. En effet, mirroring n'est pas synonyme de RAID 1. Nous allons maintenant mettre en place un RAID 1 (mirroring) sur les partitions /dev/sdb1 et /dev/sdc1 et utiliser la partition /dev/sdd1 en disque de spare. La commande pour crer notre RAID est donc la suivante : [root@linux ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 \ /dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1

Les nouvelles options sont donc : --spare-devices=X : prcise le nombre de disques de spare /dev/sdd1 : tel que prcdemment pour l'option --raid-devices, cela reprsente la partition utiliser pour le disque de spare. Il en faut autant que prcis dans l'option --spare-devices

Note
Les disques de spare sont utiliss en complment du RAID. On les appelle galement disque de rechange : Ils ne sont pas utiliss au quotidien et prennent immdiatement le relais lorsqu'un disque de la grappe tombe en panne ; il est alors compltement reconstruit partir des donnes prsentes sur les autres disques, jusqu' qu'il soit compltement fonctionnel. Il suffit alors de remplacer le disque dfectueux qui deviendra alors, disque de spare son tour.

Les diffrentes options utilisables pour --level sont : 1 raid1 mirror En utilisant l'outil mkraid, la mme tche s'effectue en renseignant le fichier /etc/raidtab : raiddev /dev/md0 raid-level 1 nr-raid-disks 2 nr-spare-disks 1 persistent-superblock 1 device /dev/sdb1 raid-disk 0 device /dev/sdc1

Matriel

41

raid-disk device spare-disk

1 /dev/sdd1 0

Comme vous pouvez le constater, la syntaxe de ce fichier est assez proche des options passes la commande mdadm. Il convient cependant de noter qu'ici, aprs les options gnrales, nous devons numrer les diffrents priphriques spciaux devant faire partie de l'agrgat en leur affectant un numro via l'option raid-disk et ce pour chaque priphrique, de mme pour les ventuels disques de spare. Une fois cette configuration effectue, nous pouvons crer le priphrique /dev/md0 via la commande suivante : [root@linux ~]# mkraid /dev/md0 Puis nous l'activons via raidstart : [root@linux ~]# raidstart /dev/md0

Bien entendu, la dsactivation d'une interface raid mdX est possible via la commande raidstop. [root@linux ~]# raidstop /dev/md0

4.1.4.2. Mise en place d'un RAID 5


Ce mode utilise au moins trois disques durs, il procure une augmentation des performances et gre la perte d'un disque dur. Par rapport au RAID 4, la configuration RAID 5 rpartie la parit sur l'ensemble des disques ce qui limine le goulot d'tranglement qu'est le disque de parit en RAID 3 et en RAID 4. Un autre avantage de rpartir la parit sur chacun des disques est que les disques travaillent tous autant. Cela empche l'usure prmature de l'un des disques (comme c'est le cas avec le disque de parit en RAID 3 et surtout en RAID 4). Le RAID 5 crit donc simultanment les donnes sur plusieurs disques ce qui amliore les performances en lecture et en criture. Ainsi par rapport un disque seul, les performances d'une grappe RAID 5 utilisant n disques seront (n-1) fois plus leves (en effet, l'un des disques doit crire la parit, la donne crite est donc rpartie sur les n-1 disques restants). Tout comme pour le mode RAID 0, on doit slectionner une taille de segment adapte lorsque l'on met en place un niveau RAID 5. De par ses nombreux avantages le RAID 5 est trs populaire dans le monde professionnel car il apporte la tolrance de panne tout en conservant d'excellentes performances en lecture et en criture. De plus si on utilise une interface qui supporte le branchement chaud ou "hot plug" (SCSI ou Sata), il n'est mme plus ncessaire d'teindre le serveur. Bien entendu la mise en place d'un ensemble RAID 5 fait perdre de l'espace disque (en fait l'espace rserv la parit qui reprsente la taille d'un disque). De plus la rpartition de la parit sur l'ensemble des disques entrane une remise en ordre un peu lente lorsqu'un disque dur est chang suite une panne. Nous allons mettre en place un RAID 5. Pour cela il nous faut au minimum 3 disques, nous utiliserons sdb1, sdc1 et sdd1 en tant que disques de RAID et sde1 en tant que disque de spare. Nous allons donc utiliser la commande suivante pour crer notre disque de raid :

[root@linux ~]# mdadm --create /dev/md0 --level=raid5 --raid-devices=3 \ /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1

Via mkraid, le fichier /etc/raidtab devient

Matriel

42

raiddev /dev/md0 raid-level 5 nr-raid-disks 3 nr-spare-disks 1 persistent-superblock 1 parity-algorithm left-symmetric chunk-size 32 device /dev/sdb1 raid-disk 0 device /dev/sdc1 raid-disk 1 device /dev/sdd1 raid-disk 2 device /dev/sde1 spare-disk 0

Puis nous crerons et activons le /dev/md0 via la commande : [root@linux ~]# mkraid /dev/md0 [root@linux ~]# raidstart /dev/md0

Nous pouvons alors formater notre disque de RAID :

[root@linux ~]# mke2fs -j /dev/md0 Il est possible d'accder au disque en tapant :

[root@linux ~]# mount /dev/md0 /mnt/temp

4.1.4.3. Mise en place d'un RAID 0+1


Les niveaux de RAID offrent un large choix d'alternatives qui permettent de choisir un rapport performance/ scurit diffrent. Il est aussi possible de combiner deux niveaux de RAID entre eux. On parle alors de niveaux combins. Certaines cartes permettent de combiner diffrents modes (ou niveaux) RAID en hardware mais elles sont chres mis part les cartes RAID IDE d'entres de gamme qui grent toutes le RAID 01 ou 10 selon les cas. Cependant ces dernires ne sont pas intressantes pour raliser des combinaisons tant donn que ces cartes bas de gamme n'intgrent qu'un seul contrleur (donc pas de tolrance de panne pour le contrleur) et que le nombre de disques utilisables est souvent limit quatre. Gnralement la manire la moins onreuse pour raliser une combinaison entre deux modes RAID est : 1. d'utiliser plusieurs contrleurs au niveau matriel pour mettre en place plusieurs ensembles en mode RAID X. 2. de crer un RAID Y au niveau logiciel partir de tous les ensembles RAID X. L'ensemble obtenu sera un ensemble fonctionnant en un mode RAID nomm XY. Cela signifie que l'on met d'abord en place plusieurs RAID X, puis qu'on les rassemble avec un mode RAID Y. Un RAID XY est donc diffrent d'un RAID YX. Voici un exemple : Admettons que l'on dispose de 9 disques durs de 20 Go chacun, de trois cartes RAID grant le RAID 0 et le RAID 1 ainsi que d'un 7me disque dur (branch sur le contrleur

Matriel

43

intgr la carte mre). On peut raliser deux combinaisons intressantes : un RAID 01 un RAID 10 On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on cre trois ensembles RAID 0. Chaque ensemble RAID 0 comporte 3 disques de 20 Go chacun, ce qui donne une capacit de 60Go par ensemble. Ensuite, on cre un ensemble RAID 1 de manire logicielle avec les trois ensembles matriel en RAID 0. On obtient donc aprs formatage, un seul disque d'une capacit de 60Go. Chaque ensemble matriel en RAID 0 a des performances en lecture/criture trois fois plus leves environ qu'un disque seul. L'ensemble logiciel en RAID 1 propose donc des performances triples celles d'un disque seul. Si l'un des six disques vient tomber en panne alors, toutes les donnes stockes sur l'ensemble matriel RAID 0 auquel il appartient sont perdues. On se retrouve avec seulement deux ensembles matriels en RAID 0 et donc 6 disques utiliss. Si on perd ensuite un second disque il ne reste plus qu'un ensemble RAID 0. Enfin si un dernier disque tombe en panne alors, l'ensemble subsistant et donc toutes les donnes seront perdus. Dans notre exemple, grce au RAID 01, on obtient des performances triples par rapport un disque seul et le systme supporte la perte de deux disques durs. Nous allons mettre en place un RAID 10 (striping + mirroring), donc mettre en place un RAID 0 sur des disques en RAID 1. Il nous faut au moins 4 partitions disponibles pour effectuer cela. Commenons par crer nos deux disques en RAID 1 : [root@linux ~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 \ /dev/sdb1 /dev/sdc1 [root@linux ~]# mdadm --create /dev/md1 --level=mirror --raid-devices=2 \ /dev/sdd1 /dev/sde1 Crons ensuite le disque de RAID 0 en utilisant nos deux priphriques en RAID 1 :

[root@linux ~]# mdadm --create /dev/md2 --level=raid0 --raid-devices=2 \ /dev/md0 /dev/md1 On peut alors formater notre disque de RAID final :

[root@linux ~]# mke2fs -j /dev/md2 Pour accder au RAID il nous faudra taper : [root@linux ~]# mount /dev/md0 /mnt/temp

4.1.4.4. Le fichier /etc/mdadm.conf


Une fois que nous avons cr nos disques de RAID, il nous faut les sauver dans le fichier de configuration afin den sauver lexistence. Pour cela nous allons utiliser la commande suivante : [root@linux ~]# mdadm --detail --scan >> /etc/mdadm.conf

Matriel

44

4.1.5. Maintenance et surveillance


4.1.5.1. Ajout et retrait d'un priphrique chaud
Lors du crash d'un disque, le systme remplace le disque en panne par le disque de spare. Cependant, plus aucun disque de spare n'est disponible en cas de panne d'un autre disque. Le retrait de disque chaud va nous permettre de retirer le disque dfectueux et l'ajout chaud va nous permettre de rajouter un disque de spare au RAID. Pour cet exemple, nous utiliserons le mme disque de RAID que dans la partie prcdente : RAID 1 avec deux disques de RAID et un disque de spare. Simulons prsent la panne du disque /dev/sdc1 :

[root@linux ~]# mdadm /dev/md0 -f /dev/sdc1 mdadm: set /dev/sdc1 faulty in /dev/md0 Nous pouvons maintenant voir le changement dans l'tat de notre disque de RAID. Attention, nous avons coup la sortie de la commande pour faciliter la lecture des informations modifies

[root@linux ~]# mdadm --detail /dev/md0 [ ? ] Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 49 1 active sync /dev/sdd1 2 8 33 faulty /dev/sdc1 Nous voyons donc que le priphrique /dev/sdc1 est marqu comme faulty, c'est dire dfaillant, et que notre disque de spare sdd1 est alors pass en mode actif, il a bien remplac le disque dfaillant. Nous pouvons alors le supprimer du disque de RAID et rajouter le disque sde1 comme disque de spare pour cet agrgat:

[root@linux ~]# mdadm /dev/md0 -r /dev/sdc1 mdadm: hot removed /dev/sdc1

[root@linux ~]# mdadm /dev/md0 -a /dev/sde1 mdadm: hot added /dev/sde1 Nous aurions aussi pu compresser ces deux commandes en une seule : [root@linux ~]# mdadm /dev/md0 -r /dev/sdc1 -a /dev/sde1

Warning
Ce regroupement ne fonctionne que pour des commandes sur le mme disque de RAID.

4.1.5.2. Surveiller ses priphriques Raid


4.1.5.2.1. Afficher les informations d'un disque Raid
Pour afficher ltat dun disque RAID actif, nous devons utiliser directement la commande mdadm sans options

Matriel

45

: [root@linux ~]# mdadm /dev/md0 /dev/md0: 1023.88MiB raid1 2 devices, 1 spare. Use mdadm --detail for more detail. /dev/md0: device 0 in 2 device undetected raid0 md2. Use mdadm --examine for more detail.

Nous pouvons aussi utiliser loption --detail pour avoir un listing dtaill de ltat de notre RAID : [root@linux ~]# mdadm --detail /dev/md0 /dev/md0: Version : 00.90.01 Creation Time : Mon Oct 3 17:04:43 2005 Raid Level : raid1 Array Size : 1048448 (1023.88 MiB 1073.61 MB) Device Size : 1048448 (1023.88 MiB 1073.61 MB) Raid Devices : 2 Total Devices : 3 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Oct 3 17:05:11 2005 State : clean Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 UUID : 255a67d6:845546d7:91258d6a:41088f14 Events : 0.2 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 - spare /dev/sdd1

4.1.5.2.2. Monitoring
mdadm dispose dun mode lui permettant de surveiller les priphriques de RAID crs et denvoyer des alertes lorsquun vnement se produit. Il peut aussi excuter un programme chaque alerte. Pour cela, il faut lancer mdadm avec loption -F ou --monitor pour lui dire dutiliser ce mode et loption -scan pour quil cherche tous les priphriques de RAID actifs. Les autres options utiles disponibles sont :

Table 4.1. Les options de mdadm pour le monitoring


Option longue --pid-file fichier.pid --mail mail@domain.fr --program binaire OU -alert binaire --daemonize --delay 30 Option courte -i fichier.pid -m mail@domain.fr -p binaire -f -d 30 Description Fichier contenant le PID du daemon Adresse mail qui envoyer les alertes. Programme lancer lorsquil y a des alertes Passer en mode daemon Temps entre deux vrifications (en secondes)

Matriel

46

Example 4.1. Exemple


Nous voulons vrifier ltat de nos disques de RAID toutes les 30 secondes et si un vnement survient, il faut envoyer les alertes ladresse mail : <labo-linux@supinfo.com>. Le fichier qui contiendra le PID du daemon sera : /var/run/mdadm.pid [root@linux ~]# mdadm -F --scan -f --delay 30 \ --pid-file /var/run/mdadm.pid -m labo-linux@supinfo.com

Nous aurions pu faire la mme chose, mais juste pour le priphrique /dev/md0 avec la commande suivante : [root@linux ~]# mdadm -F -f --delay 30 --pid-file /var/run/mdadm.pid \ -m labo-linux@supinfo.com /dev/md0

4.2. Mise en place de LVM


4.2.1. Prsentation
Dans un environnement de partitionnement classique, vous ne pouvez avoir que 4 partitions primaires par disque dur ou 3 partitions primaires et une partition tendue contenant des partitions logiques, ce qui est assez restrictif. C'est pourquoi IBM a mis au point le LVM, ou Logical Volume Manager. Grce cet outil, vous allez pouvoir, entre autres, crer autant de partitions que vous le dsirez, les redimensionner sans formatage et les taler sur plusieurs disques. Mais LVM dispose galement de nombreuses autres possibilits. Ses objectifs : viter larrt et le redmarrage de la machine et permettre l'utilisateur de s'affranchir totalement des contraintes physiques imposes par les disques durs.

4.2.2. Composition de LVM


Chaque disque dur ou partition va tre transform en volume physique. Pour cela LVM va le diviser en tranches de 4Mo (par convention), appeles physical extents . Il crase par la mme occasion toutes les donnes existantes sur la partition ou le disque. Chaque volume physique va tre ensuite insr dans un groupe de volumes, lui mme dcoup en logical extents (LE) de mme taille que les physical extents (PE), soit 4Mo. Alors qu'avec LVM 1, les logical extents crs par rpartition ne peuvent pas tre tendus au-del des physical extents initiaux, LVM 2 permet lextension des logical extents rpartis en concatnant d'autres extents. LVM va ensuite crer des pointeurs entre un physical extent et un logical extent . Cette correspondance peut tre linaire ( une plage de physical extents attribue un volume physique dans l'ordre) ou rpartie. Cette dernire permet de distribuer des morceaux d'extents logiques sur plusieurs volumes physiques amliorant ainsi, dans certains cas, les performances du volume logique. Puis, chaque groupe de volumes va tre divis en volumes logiques (assimilable des partitions classiques) dans lesquels nous crerons un systme de fichiers ou une partition de swap. Grce l'utilisation des logical extents et des physical extents , ces partitions pourront tre redimensionnes, dplaces, supprimes, ajoutes sans redmarrage et sans perte de donnes.

Matriel

47

De plus, LVM permet d'utiliser un nommage plus comprhensible que les noms des disques physiques. L'utilisation du LVM entrane une diminution de l'espace disque cause par l'criture des donnes ncessaires au systme pour utiliser le LVM : les mtadatas. la Physical Volume Reserved Area contient les informations sur le volume physique la Volume Group Reserve Area contient les informations lies au groupe de volumes et aux volumes logiques contenus dans le groupe de volumes la Bad Block Relocation Area contient des informations ncessaires la rparation des blocs dfectueux LVM dispose galement d'un autre outil : les snapshots ou instantans. Un instantan permet de copier l'identique et un instant donn un volume logique dans un nouveau priphrique.

4.2.3. Installation
Vous devez avoir compil le driver LVM dans votre noyau (en dur ou en module). Celui-ci se situe dans le menu de compilation "Multi-device support". Ou dans le fichier de configuration: # Multi-device support (RAID and LVM) CONFIG_BLK_DEV_LVM=m

L'installation de LVM ncessite le mappeur de priphriques. luser@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs

Le mot de passe est cvs . Tapez ensuite la commande suivante pour rcuprer le code source : # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper

Cela cre un nouveau rpertoire device-mapper dans le rpertoire courant et contenant la dernire version du code du mappeur de priphriques. Pour ensuite rcuprer le code source de LVM 2 dans le rpertoire lvm2 tapez la commande ci-dessous: # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2

Ou bien celle-ci si vous dsirez LVM 1: root@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout LVM

4.2.4. Dmarrage et arrt de LVM


Le dmarrage de LVM se fait via deux commandes :

Matriel

48

root@localhost # vgscan root@localhost # vgchange -ay

Et l'arrt une seule : root@localhost # vgchange -an

Voici un exemple de fichier de dmarrage LVM pour Debian. Notez que l'installation du paquet lvm2 ou lvmcommon (lvm1) cre automatiquement un script de dmarrage pour lvm situ dans /etc/init.d/lvm: #!/bin/sh case "$1" in start) /sbin/vgscan /sbin/vgchange -ay ;; stop) /sbin/vgchange -an ;; restart|force-reload) ;; esac exit 0

Mme exemple mais pour une Red Hat: if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then action $"Logical Volume Management" /sbin/vgscan && /sbin/vgchange -a y fi

4.2.5. LVM en dtail


4.2.5.1. Initialiser un volume physique
Avant de pouvoir utiliser un disque ou une partition comme volume physique, il faut l'initialiser avec la commande pvcreate : root@localhost # pvcreate /dev/hda

Cela cre un descripteur de groupe de volumes au dbut du disque (cas donn) ou de la partition. Si LVM ne peut pas initialiser un disque qui possde dj une table de partition, vous pouvez taper les commandes suivantes qui dtruiront alors la table des partitions du disque: root@localhost # dd if=/dev/zero of=/dev/hda bs=1k count=1

Matriel

49

root@localhost # blockdev --rereadpt /dev/hda

4.2.5.2. Ajouter un volume physique un groupe de volumes


Le volume physique ajouter doit d'abord tre initialis puis ajout au groupe de volumes: root@localhost # vgextend nom_du_groupe_de_volumes /dev/hda1

4.2.5.3. Supprimer un volume physique un groupe de volumes


En premier lieu, vrifiez que le volume physique n'est utilis par aucun volume logique grce la commande: root@localhost # pvdisplay /dev/hda1 --- Physical volume --PV Name /dev/hda1 VG Name kevin PV Size 3.9 GB / NOT usable 4 MB [LVM: 244 KB] PV# 1 PV Status available Allocatable yes (but full) Cur LV 1 PE Size (KByte) 4096 Total PE 998 Free PE 0 Allocated PE 998

Si le volume physique est encore en cours dutilisation, il faut migrer les donnes vers un autre volume physique: root@localhost # pvmove /dev/hda1 pvmove -- moving physical extents in active volume group "vg" pvmove -- WARNING: moving of active logical volumes may cause data loss! pvmove -- do you want to continue? [y/n] y pvmove -- 998 extents of physical volume "/dev/hda1" successfully moved

Puis, le supprimer du groupe de volumes: root@localhost # vgreduce nom_du_groupe_de_volumes /dev/hda1

4.2.5.4. Crer un groupe de volumes


Pour cela, utilisez la commande vgcreate : root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda1 /dev/hda2

Vous pouvez aussi choisir la taille des extents avec l'option -s et prciser des limites sur le nombre de volumes physiques et logiques que le volume peut contenir.

Matriel

50

Tapez ensuite les commandes suivantes pour activer le groupe de volumes: root@localhost # vgchange a n && vgchange a y nom_du_groupe_de_volumes

4.2.5.5. Dtruire un groupe de volumes


Pour enlever un groupe de volumes, assurez vous qu'aucun volume logique n'est prsent : Dans un premier temps dsactivez le : root@localhost # vgchange -a n nom_du_groupe_de_volumes

Puis supprimez le grce cette commande : root@localhost # vgremove nom_du_groupe_de_volumes

4.2.5.6. Crer un volume logique


Pour crer un volume physique lv linaire de T Go et son priphrique associ /dev/vg/lv : root@localhost # lvcreate -L T -n lv vg

Si vous dsirez allouer le volume logique un volume physique prcis il faut spcifier son nom la fin de la commande lvcreate. root@localhost # lvcreate -L T -n lv vg /dev/hda

Nous allons ensuite crer un volume logique de X Logical Extents avec Y blocs rpartis de Z Ko : root@localhost # lvcreate -i Y -I Z -l X -n lv vg

Nous voulons un volume logique qui utilise toute la place disponible dans le groupe de volumes. Pour cela, nous allons lancer la commande lvcreate avec un nombre de Physical Extents gal au total des Physical Extents retourn par la commande pvdisplay. root@localhost # lvcreate -l total_des_pe vg -n perso

Cela crera un volume logique appel perso qui remplira la totalit du groupe de volumes vg. Pour vrifier cela utilisez la commande lvscan root@localhost # lvscan

Matriel

51

4.2.5.7. Dtruire un volume logique


Nous dmontons tout d'abord le volume logique : root@localhost # umount /dev/vg/lv root@localhost # lvremove /dev/vg/lv lvremove -- do you really want to remove "/dev/vg/lv"? [y/n]: y lvremove -- doing automatic backup of volume group "vg" lvremove -- logical volume "/dev/vg/lv" successfully removed

4.2.5.8. tendre un volume logique


Nous utiliserons pour cette opration la commande lvextend laquelle nous allons renseigner la quantit d'espace ajouter ou la taille finale du volume logique: root@localhost # lvextend -L 15G /dev/vg/lv lvextend -- extending logical volume "/dev/vg/lv" to 15 GB lvextend -- doing automatic backup of volume group "vg" lvextend -- logical volume "/dev/vg/lv" successfully extended root@localhost # lvextend -L +5G /dev/vg/lv lvextend -- extending logical volume "/dev/vg/lv" to 15 GB lvextend -- doing automatic backup of volume group "vg" lvextend -- logical volume "/dev/vg/lv" successfully extended

Une fois le volume logique tendu, il est ncessaire d'augmenter la taille du systme de fichier la taille correspondante. Pour ext2 et LVM 1, la commande e2fsdam effectue pour vous le lvextend et le resize2fs, aussi bien pour un agrandissement que pour une rduction.

4.2.5.8.1. ext2/ext3
root@localhost # umount /dev/vg/lv root@localhost # resize2fs /dev/vg/lv root@localhost # mount /dev/vg/lv

4.2.5.8.2. Reiserfs
root@localhost # umount /dev/vg/lv root@localhost # resize_reiserfs /dev/vg/lv root@localhost # mount -t reiserfs /dev/vg/lv

4.2.5.8.3. Xfs
Les systmes de fichiers XFS doivent tre monts pour tre redimensionns et le point de montage doit tre donn la place du nom de priphrique. root@localhost # xfs_growfs /point_de_montage

Matriel

52

4.2.5.8.4. Jfs
Comme XFS, le systme de fichiers JFS doit tre mont pour tre redimensionn et le point de montage doit tre spcifi plutt que le nom du priphrique. root@localhost # mount -o remount,resize /point_de_montage

4.2.5.9. Rduire un volume logique


Lors de la rduction de volumes logiques, il faut rduire la taille du systme de fichiers et donc des donnes y tant avant de le rduire lui-mme ou une perte de donnes risque de se produire. Il n'y a actuellement aucun moyen de rduire un systme de fichiers XFS ou JFS.

4.2.5.9.1. ext2/ext3
En utilisant e2fsadm avec LVM 1 : root@localhost # umount /dev/vg/lv root@localhost # e2fsadm -L -5G /dev/vg/lv root@localhost # mount /dev/vg/lv

Avec LVM 2 vous devez connatre la nouvelle taille T du volume en blocs : root@localhost root@localhost root@localhost root@localhost # # # # umount /dev/vg/lv resize2fs /dev/vg/lv T lvreduce -L -5G /dev/vg/lv mount /dev/vg/lv

4.2.5.9.2. reiserfs
root@localhost root@localhost root@localhost root@localhost # # # # umount /dev/vg/lv resize_reiserfs -s -5G /dev/vg/lv lvreduce -L -5G /dev/vg/lv mount -t reiserfs /dev/vg/lv

4.2.6. Mise en place du LVM


On dispose de trois disques IDE /dev/hda, /dev/hdb et /dev/hdc. Nous allons dans un premier temps prparer les disques avec pvcreate et crer une zone avec les descripteurs de groupes de volumes au dbut des disques. Ces commandes effacent totalement les donnes prsentes sur les disques durs : root@localhost # pvcreate /dev/hda root@localhost # pvcreate /dev/hdb root@localhost # pvcreate /dev/hdc

Matriel

53

Puis l'on cr un groupe de volumes : root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda /dev/hdb /dev/hdc

Il faut ensuite crer un volume logique, qui sera ici de 10Go :

root@localhost # lvcreate -L 10G -n nom_du_volume_logique nom_du_groupe_de_volumes lvcreate -- doing automatic backup of "nom_du_groupe_de_volumes" lvcreate -- logical volume "/dev/nom_du_groupe_de_volumes/nom_du_volume_logique" succe

Puis un systme de fichiers, ici ext2, dans le volume logique avec : root@localhost # mke2fs /dev/nom_groupe_de_volumes/nom_du_volume_logique

4.2.6.1. Ajouter un disque


Nous avons une machine avec 3 disques durs : root@localhost # pvscan pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free] pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]

root@localhost # df -h Filesystem Total Used Available Use% Mounted on /dev/vg1/lv1 1G 1G 0GB 100% /mnt/vg1lv1 /dev/vg1/lv2 2G 2GB 0GB 100% /mnt/vgl1v2 /dev/vg2/lv1 1G 1GB 0GB 100% /mnt/vg2lv1 /dev/vg2/lv2 2G 2GB 0GB 100% /mnt/vg2lv2

Un nouveau disque est ajout au systme : /dev/hdf. Il doit tre partag entre les deux groupes et est donc partitionn en deux volumes physiques /dev/hdd1 et /dev/hdd2 de 2 Go chacun qu'il faut ensuite initialiser : root@localhost # pvcreate /dev/hdd1 pvcreate -- physical volume "/dev/hdd1" successfully created root@localhost # pvcreate /dev/hdd2 pvcreate -- physical volume "/dev/hdd2" successfully created

Les volumes physiques sont ensuite ajouts aux groupes de volumes : root@localhost # vgextend vg1 /dev/hdd1 vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte vgextend -- doing automatic backup of volume group "vg1" vgextend -- volume group "vg1" successfully extended

Matriel

54

root@localhost # vgextend vg2 /dev/hdd2 vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte vgextend -- doing automatic backup of volume group "vg2" vgextend -- volume group "vg2" successfully extended

root@localhost # pvscan pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free] pvscan -- ACTIVE PV "/dev/hdd1" of VG "vg1" [2 GB / 2 GB free] pvscan -- ACTIVE PV "/dev/hdd2" of VG "vg2" [2 GB / 2 GB free] pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]

Nous allons ensuite tendre les systmes de fichiers pour utiliser l'espace disque supplmentaire. Nous dmontons les deux systmes de fichiers avant le dimensionnement : root@localhost # umount /mnt/vg1lv1 root@localhost # umount /mnt/vg2lv2

Puis nous utilisons la commande e2fsadm pour redimensionner le volume logique et le systme de fichiers : root@localhost # e2fsadm /dev/vg1/lv1 -L +1G Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information lvextend -- extending logical volume "/dev/vg1/lv1" to 2 GB lvextend -- doing automatic backup of volume group "vg1" lvextend -- logical volume "/dev/vg1/lv1" successfully extended e2fsadm -- ext2fs in logical volume "/dev/vg1/lv1" successfully extended to 2 GB

root@localhost # e2fsadm /dev/vg2/lv2 -L +1G Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information lvextend -- extending logical volume "/dev/vg2/lv2" to 3 GB lvextend -- doing automatic backup of volume group "vg2" lvextend -- logical volume "/dev/vg2/lv2" successfully extended e2fsadm -- ext2fs in logical volume "/dev/vg2/lv2" successfully extended to 3 GB

Enfin nous pouvons remonter les systmes de fichiers : root@localhost # mount /dev/vg1/lv1 root@localhost # mount /dev/vg2/lv2 root@localhost # df -h Filesystem Total Used Available /dev/vg1/lv1 2G 1G 1GB 50%

Use% Mounted on /mnt/vg1lv1

Matriel

55

/dev/vg1/lv2 /dev/vg2/lv1 /dev/vg2/lv2

2G 1G 3G

2GB 1GB 2GB

0GB 0GB 1GB

100% 100%

/mnt/vgl1v2 /mnt/vg2lv1 66% /mnt/vg2lv2

4.2.6.2. Retirer un disque


Vous avez un vieux disque /dev/hdc que vous voulez le retirer mais des donnes y sont encore stockes. Vrifiez que vous avez assez d'extents libres sur les autres disques du groupe de volumes puis migrer les anciens extents vers les disques restants : root@localhost # pvmove -V /dev/hdc pvmove -- moving physical extents in active volume group "vg2" pvmove -- WARNING: moving of active logical volumes may cause data loss! pvmove -- do you want to continue? [y/n] y pvmove -- 500 extents of physical volume "/dev/hdc" successfully moved

pvmove est une commande trs lente. L'option -v vous renseigne sur son tat d'avancement. Nous pouvons dsormais supprimer l'ancien disque du groupe de volumes puis le retirer de la machine. root@localhost # vgreduce dev /dev/hdc vgreduce -- doing automatic backup of volume group "vg2" vgreduce -- volume group "dvg2" successfully reduced by physical volume: vgreduce -- /dev/hdc

N'oubliez pas de toujours dmonter votre volume : root@localhost # e2fsadm -L +5G /dev/vg/lv

4.3. Ajout de nouveau matriel


Sous Linux, le matriel est gr directement par le noyau, le plus souvent via l'insertion d'un module spcifique. Bien que la plupart des distributions modernes intgrent les fonctionnalits ncessaires l'auto-detection de tout nouveau matriel, il peut arriver que votre systme ne soit pas en mesure de dtecter certains matriels spcifiques. Il vous faudra alors utiliser toutes les informations fournies par le systme pour trouver le module kernel prenant en charge votre priphrique.

4.3.1. Priphriques PCI


Mme si aprs son installation une carte PCI ne parait pas fonctionnelle( carte son non dtecte par ALSA ou OSS, carte rseau non visible par ifconfig,...), toutes les informations exportes par cette dernire ont tes enregistre par le kernel lors du probing du bus PCI. Ces informations sont disponibles via la commande lspci :

[root@linux ~]# lspci 00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to 00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (r 00:1b.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Defin 00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI 00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI 00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI

Matriel

56

00:1d.3 00:1d.7 00:1e.0 00:1f.0 00:1f.1 00:1f.3 01:00.0 01:01.0 01:01.1 01:01.2 01:01.3 01:03.0 03:00.0

USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHC PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4) ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04) IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Contr SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Co CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3) FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08) SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08) Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection ( VGA compatible controller: nVidia Corporation NV43 [GeForce Go 6200/6400] (rev

Si votre carte n'apparat pas dans ce listing, il s'agit d'un problme matriel. Si par exemple la carte rseau Marvell ( Ethernet controller ) n'est pas visible dans la sortie de ifconfig, il vous faudra trouver le module prenant en charge ce matriel, puis l'insrer dans le noyau via modprobe. Pour obtenir cette information, vous pouvez soit vous rapprocher du fabriquant si celui-ci supporte officiellement Linux comme systme d'exploitation compatible soit effectuer une recherche sur internet. Dans notre exemple, le module relatif aux chipset Marvell se nomme skge, information disponible dans l'interface de configuration du noyau. Voici la procdure mise en oeuvre pour rendre cette interface rseau fonctionnelle : [root@linux ~]# ifconfig -a lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:106 errors:0 dropped:0 overruns:0 frame:0 TX packets:106 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:9076 (8.8 Kb) TX bytes:9076 (8.8 Kb) [root@linux ~]# modprobe skge [root@linux ~]# ifconfig -a eth0 Lien encap:Ethernet HWaddr 00:15:F2:86:DA:16 inet adr:192.168.1.141 Bcast:192.168.1.255 Masque:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:326 errors:0 dropped:0 overruns:0 frame:0 TX packets:361 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:49576 (48.4 Kb) TX bytes:30906 (30.1 Kb) Interruption:5 lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:106 errors:0 dropped:0 overruns:0 frame:0 TX packets:106 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:9076 (8.8 Kb) TX bytes:9076 (8.8 Kb) [root@linux ~]# dmesg skge 1.11 addr 0xfa9f8000 irq 5 chip Yukon-Lite rev 9 skge eth0: addr 00:15:f2:86:da:16 skge eth0: enabling interface

4.3.2. Priphriques USB


De la mme manire que pour les priphriques PCI, les priphriques USB sont pris en charge par le noyau. Ici, seul les outils permettant d'obtenir les informations exportes par les priphriques diffrent.

4.3.2.1. L'outil lsusb

Matriel

57

Cet outil en ligne de commande vous permettra d'obtenir toutes les informations disponibles sur les priphriques usb. Dans sa forme courte ( sans option ) sa sortie vous fournira le couple vendorId:deviceId ncessaires la recherche du module noyau ad-hoc : [root@linux ~]# lsusb Bus 005 Device 001: ID Bus 004 Device 001: ID Bus 003 Device 001: ID Bus 002 Device 002: ID Bus 002 Device 001: ID Bus 001 Device 001: ID

0000:0000 0000:0000 0000:0000 04b3:310c IBM Corp. 0000:0000 0000:0000

Ici, le seul priphrique usb connect reporte un vendorId gal 04b3 ainsi qu'un device Id gal 310c. Bien entendu, il est tout fait possible d'obtenir la structure arborescente complte de votre topologie USB via la commande [root@linux ~]# lsusb -v Bus 005 Device 001: ID 0000:0000 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 1 Single TT bMaxPacketSize0 64 idVendor 0x0000 idProduct 0x0000 bcdDevice 2.06 iManufacturer 3 Linux 2.6.23.9 ehci_hcd iProduct 2 EHCI Host Controller iSerial 1 0000:00:1d.7 bNumConfigurations 1 [...]

La sortie de cette commande tant extrmement fournie, ils est impossible de la reproduire entirement ici. Pensez donc utiliser un pipe vers un pager tel que less afin de pouvoir consulter l'ensemble des informations fournie.

4.3.2.2. L'outil usbview


Si vous disposez d'une interface graphique, vous pouvez utiliser l'outil usbview qui vous permettra d'obtenir les mmes informations que celles fournies par lsusb dans sa version longue mais avec le bnfice d'une interface de type explorateur vous permettant de naviguer dans l'arborescence de votre topologie :

Figure 4.2. l'outil usbview

Matriel

58

4.3.3. Inspection de la configuration courante


Afin d'inspecter votre configuration vous pouvez d'une part utiliser l'outil lsmod qui vous informera sur les modules chargs dans votre noyau : [root@linux ~]# lsmod Module skge snd_pcm_oss snd_mixer_oss snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device af_packet usbmouse [...]

Size 40912 43168 16512 3716 31936 7360 50384 8332 22088 5440

Used by 0 0 1 snd_pcm_oss 0 0 1 snd_seq_oss 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event 3 snd_seq_dummy,snd_seq_oss,snd_seq 0 0

De mme, l'outil lsdev vous permettra d'obtenir des renseignements sur les ressources matrielles utilises par les diffrents priphriques de votre systme( IRQ, DMA, plages d'I/O ... ) : [root@linux ~]# lsdev Device DMA IRQ I/O Ports -----------------------------------------------ATI c800-c8ff bttv 10 Creative e800-e81f ec00-ec07 dma 0080-008f dma1 0000-001f dma2 00c0-00df e100 e000-e03f EMU10K1 11 e800-e81f

Matriel

59

fpu ide0 ide1 Intel keyboard ohci1394 PCI

14 15 1 12

00f0-00ff 01f0-01f7 03f6-03f6 fc00-fc07 0170-0177 0376-0376 fc08-fc0f e000-e03f 0060-006f 0cf8-0cff c000-cfff

Si l'outil lsdev n'est pas prsent sur votre distribution, sachez que ces informations sont galement disponibles directement via les fichiers /proc/interrupts et /proc/dma. Les plages d'I/O sont disponibles via la commande lspci avec l'option -v [root@linux ~]# cat /proc/interrupts CPU0 0: 9716458 XT-PIC-XT timer 1: 37992 XT-PIC-XT i8042 2: 0 XT-PIC-XT cascade 4: 2 XT-PIC-XT uhci_hcd:usb3, ohci1394 5: 375956 XT-PIC-XT uhci_hcd:usb1, ehci_hcd:usb5, ipw2200, eth0 6: 84648 XT-PIC-XT uhci_hcd:usb2, yenta 8: 2 XT-PIC-XT rtc 9: 54706 XT-PIC-XT acpi 11: 618997 XT-PIC-XT uhci_hcd:usb4, HDA Intel, nvidia 12: 3564 XT-PIC-XT i8042 14: 212712 XT-PIC-XT ide0 NMI: 0 ERR: 24 [root@linux ~]# cat /proc/dma 4: cascade [root@linux ~]# lspci -v [...] 01:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3) Subsystem: ASUSTeK Computer Inc. Unknown device 1177 Flags: bus master, medium devsel, latency 168, IRQ 6 Memory at fa900000 (32-bit, non-prefetchable) [size=4K] Bus: primary=01, secondary=02, subordinate=02, sec-latency=176 Memory window 0: 88000000-8bfff000 (prefetchable) Memory window 1: 90000000-93fff000 I/O window 0: 0000d000-0000d0ff I/O window 1: 0000d400-0000d4ff 16-bit legacy interface ports at 0001 [...]

4.4. Configuration logicielle et kernel


Dans cette section, nous allons examiner deux outils d'optimisation et de modification des paramtres relatifs aux chipsets IDE ( SATA/PATA ) ainsi qu'aux systmes de fichiers ext2/3. Nous aborderons galement l'interface de configuration du kernel via sysctl.

4.4.1. L'outil hdparm


Comme son nom l'indique, cet outil vous permet de modifier la configuration de vos disque durs, notamment le mode d'entre sortie. Pour obtenir la configuration courant de l'unit /dev/hda, ainsi que les informations exportes par le disque utilisez les commandes suivantes : [root@linux ~]# hdparm /dev/hda /dev/hda: multcount = 16 (on)

Matriel

60

IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 1 (on) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 16383/255/63, sectors = 156301488, start = 0 [root@linux ~]# hdparm -i /dev/hda /dev/hda:

Model=HTS421280H9AT00, FwRev=HA3OA70G, SerialNo=HKA310AKGNH6EB Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 BuffType=DualPortCache, BuffSize=7528kB, MaxMultSect=16, MultSect=16 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1: ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATA * signifies the current active mode

Un des champs les plus importants est le champ using_dma : Si le dma n'est pas actif, alors le mode PIO sera utilis. Dans ce mode, le processeur est utilis pour chaque tache d'entre-sortie ( lecture, criture ), ce qui occasionne une surcharge processeur importante. En rgle gnrale, le kernel utilisera le mode dma s'il est disponible. Cependant, si ce champ est zro alors votre matriel le supporte utilisez la commande suivante pour l'activer : [root@linux ~]# hdparm -d 1 /dev/hda /dev/hda: setting using_dma to 1 (on) using_dma = 1 (on)

De mme, l'option IO_support relative aux entres sorties 32 bits pour les chipsets EIDE. Bien que la plupart des chipsets modernes supportent ce mode de transfert, le kernel ne le positionne pas automatiquement. Dans notre exemple, ce mode n'est pas activ. Pour profiter pleinement des capacits de votre disque, utilisez la commande suivante : [root@linux ~]# hdparm -c 1 /dev/hda /dev/hda: setting 32-bit IO_support flag to 1 IO_support = 1 (32-bit)

Bien entendu, spcifier une option sans argument provoquera l'affichage du paramtre associ : [root@linux ~]# hdparm -c /dev/hda /dev/hda: IO_support = 1 (32-bit)

Voici une liste des options les plus utilises :

Matriel

61

Table 4.2. Options de hdparm


Option -a -Bnum Description Spcifie ou affiche le nombre de secteurs mettre en antmemoire ( read-ahead ) Fixe le niveau d'conomie d'nergie ( de 1 255 ) Une valeur basse signifie une conomie d'nergie importante tandis qu'une valeur haute assure de meilleurs performances. La valeur 255 dsactive l'conomie d'nergie. Active ou affiche le statut des I/O 32 bits. 0 le dsactive, 1 l'active tandis que 3 l'active avec une squence de synchronisation avec le disque ce qui entrane une utilisation des ressources accrue. Active ou affiche l'tat de l'utilisation du mode dma Affiche la gomtrie du disque Affiche les informations exportes par le disque Active ou affiche la valeur du paramtre keep_settings_over_reset qui permet de conserver les paramtres l'issue d'un reset ralis par le kernel. Affiche ou active la fonctionnalit d'I/O sur plusieurs secteurs simultans. La valeur 0 dsactive cette fonctionnalit. Affiche ou active(1)/desactive(0) le mode de lecture seule sur le disque. Fixe le temps d'inactivit avant mise en veille du disque Affiche ou active(1)/desactive(0) la des activation des interruptions matrielles durant le traitement d'une interruption en provenance de ce disque. Afficher l'tat de tous les paramtres, similaire l'utilisation de hdparm sans options. Place le disque en mode d'conomie d'nergie Force la relecture de la table des partitions par le kernel( similaire la commande partprobe de certaines distributions )

-c[0|1|3]

-d -g -i -k

-mnum

-r -S -u

-v -y -z

4.4.2. L'outil tune2fs


L'outil tune2fs est utilis pour modifier les paramtres internes d'un systme de fichiers ext2/3 comme le nombre de montages avant vrification du disque via fsck. Comme l'indique mke2fs lors de la cration du systme de fichiers, deux options contrlent cet intervalle : -c et -i. La premire contrle en effet le nombre de cycles de montage-dmontage avant vrification alors que la seconde spcifie une dure dans le temps. Par exemple, pour spcifier un nombre de 30 montages entre chaque vrification du systme de fichiers situ sur la partition hda1, utilisez la commande suivante : [root@linux ~]# tune2fs -c 30 /dev/hda1

Matriel

62

Il est a noter qu'un nombre de 0 ou -1 dsactivera cette fonctionnalit. Pour forcer une vrification du mme systme de fichiers tous les 3 semaines, utilisez la commande suivante : [root@linux ~]# tune2fs -i 3w /dev/hda1

Comme vous pouvez le constater, la dure est postfixe par une lettre la qualifiant : d pour jours, w pour semaines et m pour mois. Si aucun qualificateur n'est utilise, le d est implicitement utilis. La valeur 0 dsactive la fonctionnalit. L'option -e quant elle permet de rgler le comportement du systme en cas d'erreur d'I/O. Elle peut prendre les paramtres suivants : continue : Les erreurs de lecture/ecriture sont notifies aux applications, mais le kernel ne prends aucune mesure particulire remount-ro : Le kernel bascule le systme de fichiers en lecture-seule, ainsi toute application tentant d'crire sur le disque chouera mais l'intgrit des donnes prsentes sur le systme de fichiers est assure. panic : Un kernel panic est provoqu et le systme arrt. Une action de l'administrateur est donc requise. Dans tous les cas, le systme de fichier sera marqu comme dirty et vrifie automatiquement par e2fsck au prochain reboot de la machine. Pour provoquer un kernel panic lors de toute erreur d'entre sortie sur le systme de fichiers situ sur / dev/hda1 utilisez la commande suivante : [root@linux ~]# tune2fs -e panic /dev/hda1 tune2fs 1.39 (29-May-2006) Initialisation du comportement en cas d'erreur 3

Si le systme de fichiers mont sur la racine '/' ne disposait plus d'espace disponible( 100% des blocks utiliss), le systme pourrait tre dans l'incapacit de dmarrer, et mme dans le cas contraire, les utilisateurs ayant leur rpertoire personnel stock sur cette partition pourraient tre dans l'incapacit de se logguer. C'est pour cela que par dfaut, 5% des blocks d'une partition sont rservs l'utilisateur root, qui lui seul peut dcider de dpasser cette limite. Avec l'augmentation de la capacit des disques dure, cette valeur peut sembler bien trop importante et il est d'usage de la descendre 1%. Cette valeur se modifie via l'option -m de tune2fs. Pour fixer le nombre de blocks rservs 1% sur la partition /dev/hda1, utilisez la commande suivante : [root@linux ~]# tune2fs -m 1 /dev/hda1 tune2fs 1.39 (29-May-2006) Initialisation du pourcentage de blocs rservs 1% (194567 blocs)

Il est galement possible de changer le couple uid/gid qui sont rserver les blocks via les options -u et -g. Pour que le couple utilisateur/groupe qui sont rserv les blocs devienne 10/10 en lieu et place de 0/0 utilisez la commande suivante : [root@linux ~]# tune2fs -u 10 -g 10 /dev/hda1

Enfin, l'option -O permet de spcifier des options spciales telles que dir_index permettant d'acclrer l'accs

Matriel

63

aux rpertoires contenant de multiples entres en utilisant un arbre balanc. Aprs avoir activ cette option, il est impratif d'utiliser la commande e2fsck avec l'option -D afin de convertir les rpertoires aux format B-tree. Pour activer cette fonctionnalit sur le systme de fichiers situ sur la partition /dev/hda1 utilisez la commande suivante : [root@linux ~]# tune2fs -O dir_index /dev/hda1 tune2fs 1.39 (29-May-2006) #avec /dev/hda1 demont : [root@linux ~]# e2fsck -D /dev/hda1

4.4.3. Utilisation de sysctl


Le noyau Linux expose dans l'espace utilisateur une kyrielle de paramtres permettant de consulter et de modifier son comportement. Ces paramtres sont accessibles de deux manires diffrentes : Soit via le pseudo systme de fichiers /proc soit via l'outil sysctl. Par exemple, activer le forwarding des paquet ip, il est d'usage d'utiliser le fichier /proc/sys/net/ipv4/ip_forward : [root@linux ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@linux ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@linux ~]# cat /proc/sys/net/ipv4/ip_forward 1

L'outil sysctl permet de travailler sur la hirarchie /proc/sys/ de manire plus conviviale. Tous les fichiers situs sous /proc/sys/ ont leur pendant sysctl. Pour obtenir l'identifiant sysctl d'un fichier il suffit de remplacer les slashs par des points. Ainsi via sysctl notre exemple devient : [root@linux ~]# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0 [root@linux ~]# sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1

Si vous souhaitez conserver les valeurs de ces paramtres aprs le redmarrage de la machine, utilisez le fichier /etc/sysctl.conf qui contient les paires variable = valeur qui seront appliques. [root@linux ~]# cat /etc/sysctl.conf # Disables packet forwarding #net.ipv4.ip_forward = 0 # Disables IP dynaddr #net.ipv4.ip_dynaddr = 0 # Disable ECN #net.ipv4.tcp_ecn = 0 # Enables source route verification net.ipv4.conf.default.rp_filter = 1 # Enable reverse path net.ipv4.conf.all.rp_filter = 1 [...]

Matriel

64

Note
Vous remarquerez que contrairement la syntaxe de la ligne de commande o les espaces entre le nom de la variable et sa valeur sont interdits, ils sont ici accepts.

Aprs avoir modifi ce fichier, vous pouvez appliquer vos changement tout moment en utilisant la commande : [root@linux ~]# sysctl -p

Vous pouvez galement spcifier un fichier alternatif /etc/sysctl.conf en le passant en argument l'option -p : [root@linux ~]# sysctl -p /path/to/file

4.5. Configuration des priphriques PCMCIA


Il existe deux grandes familles de priphriques PCMCIA : D'une part nous trouvons la famille des priphriques 16-bits, plus anciens, implmentant directement( en hardware ) la norme pcmcia. D'autre part, le priphriques plus rcents, 32 bits galement dsigns sous l'appellation CardBus se comportent en ralit comme des priphriques PCI. En effet, ils embarquent un bridge PCMCIA to PCI prenant en charge toute la logique PCMCIA permettant aux fabricants d'utiliser le mme chipset dans les dclinaisons PCI et PCMCIA de leurs matriels. Par exemple, les cartes wifi a base de chipset atheros sont prises en charge via le module ath_pci, ces priphriques seront donc visibles dans la sortie de lspci et pris en charge comme tout priphrique PCI classique. Tandis que les cartes 16 bits sont prises en charge par le processus cardmgr, la famille Cardbus sera gre par hotplug, comme tout priphrique PCI classique. Comme les deux types de cartes sont susceptibles d'tre insres dans le lecteur idoine, les deux processus cooperent afin de rendre le matriel utilisable : si cardmgr dtecte une carte 32 bits, il laissera le soin hotplug de charger le module correspondant et au noyau de configurer le priphrique. Par contre, s'il s'agit d'une carte 16-bits, il insrera le module kernel par lui mme et se chargera de la configuration de ce dernier sur les base des fichiers de configuration relatifs aux services PCMCIA, en effet, le bus PCMCIA est matriellement proche du bus ISA et ne dispose pas de fonctionnalits de configuration volues. Dans cette section, nous nous intresserons cardmgr et donc la configuration de ce service pour la prise en charge des cartes PC-CARD 16 bits.

4.5.1. Fichiers de configuration


Le processus de dtection et de configuration des cartes PC-CARD 16 bits se droule de la manire suivante : Lorsque cardmgr dtecte une carte 16 bits, il compare les informations fournies par la carte( product info, manufacturer id, function ) sa base de donnes situe dans le fichier /etc/pcmcia/config. Ce fichier contient de multiples directives permettant d'associer la carte une classe de priphrique( network, isdn, serial, ... ) ainsi qu' un module noyau prenant en charge le priphrique. Aprs l'insertion du module noyau, si un des script situs sous /etc/pcmcia est associ la classe du priphrique il sera alors invoqu afin de finaliser la configuration du priphrique : par exemple, la classe network sera associe un script permettant de configurer ses paramtres rseau. Ces scripts possdent gnralement un fichier d'options de la forma /etc/pcmcia/*.opts permettant l'administrateur d'indiquer des paramtres spcifiques, par exemple une adresse IP dans le cas d'une interface rseau.

4.5.1.1. Le fichier /etc/pcmcia/config


Ce fichier contient de multiples directives permettant d'associer une carte un couple (classe,module).

Matriel

65

L'identification d'une carte est fournie par la commande cardctl : [root@linux ~]# cardctl ident Socket 0: product info: "Lucent Technologies", "WaveLAN/IEEE", "Version 01.01", "" manfid: 0x0156, 0x0002 function: 6 (network)

Ces informations seront utilises dans le processus de recherche dans le fichier /etc/pcmcia/config qui comporte des entres de la forme suivante : [...] device "orinoco_cs" class "network" module "hermes", "orinoco", "orinoco_cs" [...] card "Linksys WCF12 Wireless CompactFlash Card" manfid 0x028a, 0x0673 bind "orinoco_cs" card "Lucent Technologies WaveLAN/IEEE Adapter" version "Lucent Technologies", "WaveLAN/IEEE" bind "orinoco_cs" [...]

Dans le cas de notre carte, l'association se fera sur la concordance entre le champ product info (de la sortie de cardctl) et le champ version ( du fichier ). Nous pouvons galement remarquer que dans le cas de la carte Linksys, l'association se base sur le champ manfid( manufacturer id ). A noter que la directive card sert uniquement nommer la carte et ne joue aucun rle dans la dtection du matriel. Comme vous l'avez remarqu, les deux exemples pointent en ralit vers une directive device nomme ornioco_cs. C'est cette directive device qui nous permet de dterminer la classe, ici network, ainsi qu'une liste de modules kernel charger pour prendre en charge le matriel. Enfin, le script associ la classe network, /etc/pcmcia/network sera excut.

4.5.1.2. Les fichiers d'options ( *.opts )


Ces fichiers sont inclus depuis les scripts appelants et contiennent des options de configuration locales. Ils servent donc modifier le comportement des services pcmcia.

4.5.1.2.1. Le fichier /etc/pcmcia/config.opts


Ce fichier contient les directives de configuration relatives aux plages d'entre sortie de l'adaptateur PCMCIA prsent sur la machine. A moins de disposer d'une architecture particulirement exotique, il vous sera rarement ncessaire de le modifier l'exclusion de la rsolution de conflits matriels. Voici sont contenu par dfaut : [...] include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00-0xcff include memory 0xc0000-0xfffff include memory 0xa0000000-0xa0ffffff, memory 0x60000000-0x60ffffff # High port numbers do not always work... # include port 0x1000-0x17ff # Extra port range for IBM Token Ring include port 0xa00-0xaff # Resources we should not use, even if they appear to be available

Matriel

66

# First built-in serial port exclude irq 4 # Second built-in serial port #exclude irq 3 # First built-in parallel port exclude irq 7 [...]

Par exemple, si vous ajoutiez un second port srie, vous devriez dcommenter la ligne excluant le l'irq 3, puis redmarrer le deamon cardmgr.

4.5.1.2.2. Le fichier /etc/pcmcia/network.opts


Ce fichier, utilis par le script /etc/pcmcia/network permet de configurer les paramtres rseau de chaque carte susceptible d'tre rencontre. En voici un exemple : # The address format is "scheme,socket,instance,hwaddr". case "$ADDRESS" in *,*,*,00:10:5A:FB:F0:D2) # Use DHCP (via /sbin/dhcpcd, /sbin/dhclient, or /sbin/pump)? [y/n] DHCP="y" # If you need to explicitly specify a hostname for DHCP requests DHCP_HOSTNAME="lorbanery" # Host's IP address, netmask, network address, broadcast address IPADDR="" NETMASK="255.255.255.0" NETWORK="10.10.10.0" BROADCAST="10.10.10.255" # Gateway address for static routing GATEWAY="10.10.10.1" # Things to add to /etc/resolv.conf for this interface DOMAIN="" SEARCH="" DNS_1="" DNS_2="" DNS_3="" [...]

Pour chaque carte ou configuration diffrente de la mme carte, vous devrez ajouter une nouvelle entre au case gnral. En effet, le script /etc/pcmcia/network fixe la valeur de la variable ADDRESS de la forme suivante : scheme,socket,instance,hwaddr Cette variable vous permettra d'une part de diffrencier les diffrentes cartes en votre possession via leur adresse mac mais galement de crer diffrents profils rseau. Par exemple, un profil rseau "supinfo" utilisera une configuration DHCP, tandis que le profil rseau "maison" utilisera un adressage statique. Afin de spcifier le profil utiliser, vous devrez la commande : [root@linux ~]# cardctl scheme scheme_name

Avec en lieu et place de scheme_name le nom du profil choisi.

4.5.1.2.3. Les autres fichiers d'options

Matriel

67

Chaque classe est associe un fichier d'options contenant des directives lui tant propres. Pour des raisons videntes de concision il n'est pas possible d'en dtailler l'ensemble ici. Cependant, ils sont en gnral trs clairs et comments et ne devrai pas poser de difficult particulires.

4.6. Les outils PCMCIA


4.6.1. L'outil cardmgr
Comme nonc prcdemment, cardmgr est le processus charg de monitorer le ou les slots PCMCIA dans l'attente de l'insertion d'une carte. Chaque modification des fichiers de configuration doit s'accompagner d'un redmarrage de cardmgr pour tre effective. Il est gnralement d'utiliser le script init situ sous /etc/init.d/ fournis par votre distribution pour contrler l'excution de ce deamon. Si vous souhaitez modifier ce script afin de contrler son comportement, son prototype est le suivant : cardmgr [-q] [-d]

cardmgr n'admet que deux options, -q permettant de dsactiver les bips systme lors del'insertion/retrait d'une carte, ainsi que -d qui indiquer cardmgr d'utiliser modprobe la place d'insmod pour charger les modules kernel.

4.6.2. L'outil cardctl


Voici les deux formes principales du prototype de cardctl : cardctl scheme [name] cardctl command [ socket ]

Dans sa premire forme, cardctl nous permet de changer le scheme en cours. Invoquer cardctl scheme sans spcifier de scheme particulier provoquera l'affichage du scheme en cours. Dans sa seconde forme, cardctl envoie une commande aux cartes prsentes dans tous les adaptateurs PCMCIA prsents sur la machine. Il est possible de spcifier un adaptateur particulier en indiquant son numro aprs la commande. Les diffrentes commandes possibles sont les suivantes :

Table 4.3. Commandes de cardctl


Commande ident eject insert Description Affiche les informations fournies par la carte Retire le driver du kernel et coupe l'alimentation de l'adaptateur PCMCIA. Active l'alimentation de l'adaptateur PCMCIA et ralise la procdure de dtection et d'insertion du driver.

68

Chapter 5. NFS
Table of Contents
5.1. Prsentation du NFS/RPC ................................................................................................68 5.1.1. Le protocole NFS ................................................................................................68 5.1.2. RPC ..................................................................................................................68 5.2. Installation d'un client/serveur NFS ...................................................................................69 5.2.1. La partie Noyau ...................................................................................................69 5.2.2. La partie logicielle ...............................................................................................70 5.3. Configuration du serveur .................................................................................................70 5.3.1. Les fichiers hosts.allow et hosts.deny .......................................................................71 5.3.2. Modes synchrone et asynchrone .............................................................................72 5.3.3. Gestion des UID/GID ...........................................................................................72 5.3.4. Options de configuration de NFS ............................................................................73 5.3.5. L'outil tcpwrappers ..............................................................................................74 5.4. Administration/Maintenance d'un serveur NFS ....................................................................75 5.4.1. Les diffrents daemons .........................................................................................75 5.4.2. Lancement et arrt du serveur NFS ..........................................................................76 5.4.3. Commandes d'administration et de maintenance ........................................................76 5.5. Utilisation du client NFS .................................................................................................78 5.5.1. Montage dun rpertoire distant ..............................................................................78 5.5.2. Montage dun rpertoire au dmarrage du systme .....................................................79 5.6. Conclusion ....................................................................................................................79

5.1. Prsentation du NFS/RPC


5.1.1. Le protocole NFS
Le protocole NFS (Network file system) a t mis en place par Sun Microsystems en 1984 dans le but de permettre l'accs des ressources situes sur des htes distants. Le systme NFS permet de monter des volumes rseau dans larborescence du systme afin de permettre lutilisateur d'y accder de manire transparente.

5.1.2. RPC
Egalement devellope par Sun Microsystem, les RPC (Remote Procedure Call) permettent d'executer des procedures sur une machine distante. NFS repose entirement sur RPC. Chaque programme utilisant des procedures RPC est identifie par un numero. La mise en forme des donnees est effectue a l'aide de XDR (eXternal Data Representation), qui va definir un type de representation des donnees sur le reseau. La liste des services et le numero qui leur est associe est disponible dans le fichier /etc/rpc.

Figure 5.1. Extrait du fichier /etc/rpc


portmapper rstatd rusersd nfs 100000 100001 100002 100003 portmap sunrpc rpcbind rstat rup perfmeter rstat_svc rusers nfsprog

NFS

69

Le daemon portmap est utilise pour faire la correspondance entre le numro de service RPC et le port TCP/UDP utiliser. Lorsqu'un client se connecte au serveur RPC celui-ci lui envoie le numro de service auquel il veut accder et le serveur lui renvoie le port associ. Le client n'a donc pas besoin de connatre les dtails rseaux.

Figure 5.2. Les diffrentes tapes dune connexion en utilisant RPC

La commande rpcinfo permet de dialoguer avec un serveur RPC (visualisation des tables...). [root@linux ~]# rpcinfo -p nom_dhte

5.2. Installation d'un client/serveur NFS


L'installation du client se droule de manire similaire celle du serveur. On peut distinguer deux parties : La partie noyau (kernel land) : permet au noyau de prendre en charge le protocole NFS. La partie logicielle (user land) : prend en charge la partie applicative.

5.2.1. La partie Noyau


Afin que le noyau puisse prendre en charge NFS, il faut que le support du systme de fichiers NFS soit pris en charge dans le noyau, ce qui est le cas sur la majorite des distributions recentes. Si vous avez recompilez votre noyau vous meme, la partie concerne se trouve dans le menu de configuration du noyau : File systems -> Network File Systems -> NFS file system support

Figure 5.3. Activation de NFS dans le noyau

NFS

70

Dans le cas d'un serveur NFS, il est galement ncessaire dactiver le support du serveur NFS dans le noyau. La partie concerne se trouve dans le menu: File systems -> Network File Systems -> NFS server support -> Provide NFSv3 server support

Figure 5.4. Activation support du serveur NFS dans le noyau

5.2.2. La partie logicielle


L'installation logicielle (NFS utils) permet d'obtenir les commandes clientes tudies plus loin ainsi que le daemon NFS comprenant les scripts de dmarrage associs. Il faut pour cela tlcharger l'archive sur le site http://nfs.sourceforge.net, la procdure d'installation est la mme que pour les autres logiciels. [mandriva@linux ~]$ ./configure && make [root@linux ~]# make install

5.3. Configuration du serveur


Le fichier de configuration du serveur est : /etc/exports. Ce fichier contient tous les rpertoires partags lors du dmarrage du service ainsi que les options qui leurs sont associes. le format est le suivant: rpertoire host1(options1,option2,...optionN) host2(option1,option2,...optionN) .... hostn(option1,option2,...optionN)

"rpertoire" correspond au rpertoire partag

NFS

71

"host1(options)...." correspond aux machines qui ont le droit d'accder ce rpertoire. Les options indiquent de quelles manires les htes vont se connecter (Voir plus loin dans ce chapitre). Comme vous pouvez le remarquer NFS se base UNIQUEMENT sur le nom de machine (ou l'adresse IP), cela est prendre en compte lors de l'tablissement des politiques de scurit.

Tip
Il est possible dutiliser l'oprateur '*' afin de spcifier que tout le monde a le droit de se connecter au rpertoire *(options)

5.3.1. Les fichiers hosts.allow et hosts.deny


Ces deux fichiers sont utiliss par le systme pour dterminer quelle machines ont l'autorisation de le joindre via TCP/IP. Bien que ce systme ne soit pas spcifique NFS, il es tout de mme ncessaire de s'assurer que la machine fournissant le service NFS soit joiniable par les tiers. Ainsi, le fichier /etc/hosts.allow contiendra la liste des machines autorises se connecter au serveur et /etc/hosts.deny les htes distants qui se verront refuser toute tentative de connection. Lorsqu'une machine tente une connexion, l'analyse commence par le fichier hosts.allow et se termine par hosts.deny. Si aucune des rgles prsente dans ces fichiers ne peut s'appliquer l'hte, alors la connexion est accepte. Pour remedier ce dfaut, il est bon de refuser par dfaut toute machine puis d'appliquer les autorisations au cas par cas.

Note
Ces deux fichiers font partie du systme tcp_wrappers qui s'appuie sur le daemon tcpd. Il s'agit d'un systme simple fonctionnant en userland. On lui prfrera donc, dans la mesure du possible, un ensemble de rgles iptables guidant le module kernel netfilter.

Le fichier /etc/hosts.deny refusant toute connexion : # /etc/hosts.deny ALL:ALL EXCEPT localhost:DENY

Puis, des autorisations explicites spcifiques chaque machine, domaine, ou sous-rseau : #/etc/hosts.allow # Allow localhost and intra-net domain to use all servers ALL : 127.0.0.1, 192.168. # Let everyone ssh here except 216.73.92.* and .microsoft.com sshd: ALL EXCEPT 216.73.92. .microsoft.com : ALLOW # Let users in the *.example.net domain ftp in ftpd: .example.net

NFS

72

5.3.2. Modes synchrone et asynchrone


Ces deux modes dfinissent la manire de communiquer entre le client et le serveur.

5.3.2.1. Le Mode Synchrone


C'est la valeur par dfaut, lorsquun utilisateur effectue une opration (copie, modification, cration...), celle-ci est traite directement par le serveur.

Avantage : Scurit Inconvnient : Lenteur

5.3.2.2. Le Mode Asynchrone


Lorsqu'un utilisateur effectue une opration (copie, modification, cration...), celle-ci est mise en "tampon", c'est dire que le serveur rend la main avant d'avoir effectu l'opration (avant mme d'avoir crit le fichier ou autre sur le disque).

Avantage : rapidit pour l'utilisateur Inconvnient : dangereux, en cas de problme, lutilisateur na aucune certitude que les changements ont bien t pris en compte.

5.3.3. Gestion des UID/GID

Note
L'UID (User Identifier) : numro unique sur le systme reprsentant un utilisateur unique (un utilisateur possde un seul UID et un UID correspond un seul utilisateur). Le GID (Group Identifier) : identique l'UID sauf qu'il s'applique pour les groupes. L'UID du super utilisateur 'root' est gal 0. Le GID du groupe 'root' est gal 0

Comme nous l'avons vu prcdemment, NFS se base sur le nom des machines, il faut donc trouver un moyen de grer les permissions ainsi que l'appartenance des ressources. Pour cela NFS se base sur l'UID/GID du client. Pour cela, le serveur NFS prend en compte lUID de lutilisateur connect sur le client.

Example 5.1. Prise en compte de L'UID


Si le client fait des manipulations sur le serveur NFS avec le compte user1 (il s'agit du compte avec lequel la personne s'est connecte sur son poste de travail) qui a comme UID 1001, le serveur NFS le considrera comme utilisateur 1001 local (cela peut pointer sur un autre utilisateur).

NFS

73

Note
Bien que cela puisse apparatre simplet, il faut garder lesprit que NFS a t cr pour des rseaux de type serveurs/terminaux o les UID taient partout les mmes.

Pour pallier ce problme , NFS propose la possibilit d'imposer un UID/GID tous les utilisateurs qui se connectent un rpertoire (partage), on appelle cela un UID/GID anonyme (par dfaut cest la valeur -2 qui est utilise, soit 65534). Cela signifie que si l'UID et le GID anonyme du partage X sont configurs pour tre 4242/2121, tous les fichiers crs par les utilisateurs se connectant sur ce partage recevront l'UID/GID propritaire 4242/2121. Cette directive s'applique tous les utilisateurs sauf root, pour celui-ci une directive spciale permet d'indiquer que les utilisateurs se connectant avec un UID gal 0 reoivent l'UID anonyme.

Figure 5.5. Gestion des UID/GID avec NFS

5.3.4. Options de configuration de NFS


Table 5.1. Les options de configuration du serveur NFS

NFS

74

Option rw ro async sync anonuid anongid all_squash no_all_squash root_squash no_root_squash

Description Le client a les droits de lecture et d'criture Le client a seulement les droits de lecture Active le mode asynchrone Active le mode synchrone (dfaut) Spcifie lUID des utilisateurs anonymes Spcifie le GID des utilisateurs anonymes Tous les utilisateurs (sauf root) rcuprent l'UID anonyme Les utilisateurs gardent leur UID (dfaut) Lutilisateur root rcupre lUID anonyme (dfaut) Lutilisateur root garde son UID (dangereux)

Note
Il existe de nombreuses autres options de configuration. Pour en obtenir la liste complte, regardez le manuel d'exports : man exports

Example 5.2. Fichier /etc/exports


/ftp/datas client1(rw,anonuid=1004,anongid=1006) /cours *(ro) client2(ro,async)

L'arborescence /ftp/datas est accessible par les clients client1 (lecture/criture, UID anonyme=1004 et GID anonyme=1006) et client2 (lecture seule). L'arborescence /cours est accessible par tout le monde en lecture seule.

Tip
Il est possible de spcifier une adresse IP la place du nom de machine.

5.3.5. L'outil tcpwrappers


L'un des premiers outils utiles en terme de scurisation est tcpwrappers. En effet, cette solution a t dvelopp dans le but de palier aux failles naturelles de TCP/IP. De nombreux services rseaux prsent sur nos serveurs vont utiliser TCP/IP et reprsentent en cela une potentielle faille de scurit. Pour cela, tcpwrappers va nous permettre de controler l'accs ces diffrents services en remplaant inetd dans

NFS

75

sa tache d'coute. Il va selon les rgles dfinies autoriser inetd agir et dmarrer le service concern, ou bien laisser les choses en l'tat, refusant ainsi la connexion. tcpwrappers est compos de trois parties : des fichiers hosts.allow et hosts.deny tcpdchk pour vrifier les fichiers de configuration tcpdmatch qui gre les services Grace cet outil, vous allez pouvoir spcifier en vous aidant des fichiers allow et deny, les hotes ou domaines autoriss accder vos services ou non. Selon la politique souhaite, vous allez etre amen interdire tous les utilisateurs sur tous les services de manire gnrale puis spcifier ceux autoriser ou l'inverse, tout autoriser puis mettre en place des interdicions spcifiques. Voici un exemple des deux fichiers pour illustrer le principe : # cat hosts.allow ALL : localhost in.telnetd : labo-linux.org in.fingerd : seb.labo-linux.org

# cat hosts.deny ALL : ALL in.telnetd : ben.labo-linux.org

Dans le cas expos ici, nous allons ouvrir l'accs telnet uniquement les connexions en local et pour les membres du domaine labo-linux.org l'exception de l'utilisateur ben. finger ne sera disponible que pour seb et tous les autres services sont interdits s'ils ne sont pas contacts en local. Note : Gardez l'esprit que c'est toujours le fichier hosts.allow qui est consult en premier.

5.4. Administration/Maintenance d'un serveur NFS


5.4.1. Les diffrents daemons
Voici les diffrents daemons ncessaires au bon fonctionnement du serveur NFS :

Table 5.2. Les daemons du serveur NFS


daemon portmap rpc.mountd rpc.nfsd rpc.statd Description Le daemon portmap permet de faire la correspondance numro RPC/Port (voir partie 2) Le daemon rpc.mountd ralise le montage demand par un client Le daemon nfsd excute les requtes NFS Ce daemon rcupre des statistiques (Voir plus loin dans le cours)

NFS

76

5.4.2. Lancement et arrt du serveur NFS


Les diffrents daemons cits prcdemment doivent tous tres dmarrs. Pour cela, un script est copi dans / etc/init.d lors de linstallation des nfs-utils. Ce script se nomme nfs. La syntaxe utiliser est la suivante : [root@linux ~]# /etc/init.d/nfs opration

Voici les diffrentes oprations supportes par le script :

Table 5.3. Les diffrentes oprations supportes par le script /etc/init.d/nfs


Opration start stop restart status Effet Dmarrage des daemons Arrt des serveurs Arret et redemarrage des serveurs Affiche ltat des daemons

Note
Selon la distribution utilise d'autres options peuvent tre disponibles

Example 5.3. Lancement du serveur NFS


[root@linux ~]# /etc/init.d/nfs start

5.4.3. Commandes d'administration et de maintenance


5.4.3.1. La commande exportfs :
La commande exportfs permet de manipuler les partages chaud (lorsque que le serveur NFS est lanc). Cette commande permet de dsactiver, activer (on parle aussi d'exportation), modifier et ajouter des partages. Voici une liste des options les plus couramment utilises :

Table 5.4. Options de la commande exportfs


Option -a Effet Exporte tous les partages contenus dans / etc/exports

NFS

77

Option -u -ua -o

Effet Dsactive un partage Dsactive tous les partages contenus dans / etc/exports Permet de spcifier des options

Example 5.4. Ajout dun nouveau partage sans redmarrage du service-in de redmarrer le service NFS
[root@linux ~]# exportfs -o option1,option2 host:/repertoire

Les options sont les mmes que celles du fichier /etc/exports.

Example 5.5. Utilisation de la commande exportfs


Cette commande ajoute le rpertoire /data pour la machine host1 avec comme options rw et async. [root@linux ~]# exportfs -o rw,async host1:/data

5.4.3.2. La commande showmount


La commande showmount permet d'afficher les rpertoires partags d'un serveur NFS ainsi que les machines ayant le droit d'y accder. Syntaxe : [mandriva@linux ~]$ showmount -e hostname

Example 5.6. Utilisation de la commande showmount


[mandriva@linux ~]$ showmount -e localhost Export list for localhost: /data STS.esi-supinfo.com,localhost

5.4.3.3. La commande nfsstat


La commande nfsstat est utilise pour afficher des statistiques NFS et RPC rcupres par le daemon rpc.statd :

Table 5.5. Options de la commande nfsstat

NFS

78

Option -s -c -n -r

Effet Affiche uniquement les statistiques du serveur Affiche uniquement les statistiques du client Affiche uniquement les statistiques NFS Affiche uniquement les statistiques RPC

Note
D'autres options sont disponibles et consultables dans la page de manuel de ces commandes : man <commande>

5.5. Utilisation du client NFS


La partie client de NFS est en charge du montage/dmontage des partages depuis un serveur NFS distant.

5.5.1. Montage dun rpertoire distant


Pour cela, la commande utiliser est mount. Il faut au pralable connatre l'IP ou le nom du serveur ainsi que le rpertoire monter (cf. commande showmount). Syntaxe : [root@linux ~]# mount -t nfs -o options serveur:/partage /point_de_montage

Table 5.6. Options de la commande mount dans le cas dun montage NFS
Option fg bg rw ro suid nosuid hard soft Effet Si le montage choue les tentatives suivantes se feront en avant-plan (dfaut) Si le montage choue les tentatives suivantes se feront en arrire-plan Monte le partage en read/write (lecture criture) (dfaut) Monte le partage en read only (lecture seule) Autorise lutilisation de programmes suid (dfaut) Interdit lutilisation de programmes suid (dfaut) En cas dchec, recommence lopration jusqu sa russite (dfaut) Abandonne lopration en cas dchec

Les options du serveur sont prioritaires face celles du client : si le serveur permet client1 de monter /data en Read Only (lecture seule) et que le client monte en Read/Write (lecture/criture), alors le partage sera mont en Read Only.

NFS

79

Example 5.7. Montage NFS manuel


Le rpertoire /data de la machine 'server' sera mont dans /mnt/nfs en readonly/nosuid.only/nosuid. [root@linux ~]# mount -t nfs -o ro,nosuid server:/data /mnt/nfs/

5.5.2. Montage dun rpertoire au dmarrage du systme


Pour monter un rpertoire au dmarrage du systme, il est ncessaire dajouter une entre dans le fichier / etc/fstab (comme pour les priphriques locaux). Syntaxe : serveur:/partage /point_de_montage nfs options 0 0

'options' correspond aux options cites ci-dessus, il est important de laisser le dump/pass 0 (ne pas vrifier l'intgrit du rpertoire NFS chaque dmarrage).

Example 5.8. Montage NFS automatique


server:/data /mnt/nfs nfs ro,nosuid 0 0

5.6. Conclusion
NFS est un systme de partage robuste et qui a t longtemps prouv. Son implmentation souffre, malgr toutes ces annes, d'un systme d'authentification. Cependant il reste toujours flexible et s'apprte particulirement aux environnements htrognes.

80

Chapter 6. Samba
Table of Contents
6.1. Pr requis .....................................................................................................................80 6.2. Samba ..........................................................................................................................81 6.2.1. Historique ..........................................................................................................81 6.2.2. Daemons ............................................................................................................81 6.2.3. Nouveauts .........................................................................................................81 6.3. Le protocole SMB ..........................................................................................................82 6.3.1. Le format SMB ...................................................................................................82 6.4. Le protocole NetBIOS .....................................................................................................84 6.4.1. Fonctionnement de NetBIOS .................................................................................84 6.5. Utilisation du client ........................................................................................................85 6.6. smbmount .....................................................................................................................86 6.7. nmblookup ....................................................................................................................86 6.8. findsmb ........................................................................................................................86 6.9. smbstatus ......................................................................................................................87 6.10. Le ficher /etc/samba/lmhosts ...........................................................................................87 6.11. Smb4k ........................................................................................................................87 6.12. Configuration du serveur ................................................................................................87 6.13. Prsentation des diffrentes sections .................................................................................88 6.13.1. Section global ....................................................................................................88 6.13.2. Section homes ...................................................................................................89 6.13.3. Section printers et print$ ......................................................................................89 6.13.4. Section netlogon ................................................................................................90 6.13.5. Sections de partages ...........................................................................................90 6.14. Validit du fichier smb.conf ............................................................................................91 6.15. Gestion des utilisateurs ..................................................................................................91 6.16. SWAT ........................................................................................................................91 6.16.1. Installation ........................................................................................................91 6.16.2. Utilisation .........................................................................................................92 6.17. Utilisation de Samba en Contrleur de domaine ..................................................................92

6.1. Pr requis
Les connaissances ncessaires sont : Connaissances de base en rseau (TCP/IP) Connaissances de base en Linux et Windows Les prrequis techniques sont : au moins deux ordinateurs relis en rseau, une distribution GNU/Linux oprationnelle, les packages Samba, installs ou non.

Samba

81

6.2. Samba
6.2.1. Historique
Samba a t cr par Andrew Tridgell (actuellement chef de file de l'quipe de dveloppement du projet Samba) en 1992. Il travaillait sur le dveloppement d'un programme de gestion de fichiers bas sur le protocole propritaire SMB (Server Message Block) implment par Microsoft et IBM. Le nom de Samba t trouv grce la commande UNIX suivante: [mandriva@linux ~]$ grep -i 's.*m.*b' /usr/dict/words rsultat: salmonberry samba sawtimber scramble

En d'autres termes Samba est l'implmentation libre (sous licence GNU General Public License) du protocole de communication SMB. Il permet de: partager des systmes de fichiers, jouer le rle de contrleur de domaine Windows 2000/NT fournir un serveur WINS (Windows Internet Name Service) Le protocole SMB tant propritaire, tout le travail a t fait par du reverse engineering, c'est dire en observant le fonctionnement du protocole SMB entre des clients et serveur Microsoft Windows, et en analysant les binaires Microsoft Windows.

6.2.2. Daemons
Samba est compos de deux daemons fournissant des services : smbd est un daemon qui prend en charge le partage de fichiers, d'imprimante, et l'authentification des clients SMB. nmbd est un daemon qui supporte les services NetBIOS et WINS.

6.2.3. Nouveauts
PDC (Prilmary Domain Controler) pour clients de type Windows 2000/XP. Jusque l Samba pouvait servir de PDC un ensemble de machines Windows 95/98/Me et NT. A partir de la 2.2, le serveur Samba peut galement agir comme PDC au sein dun rseau Windows 2000/XP. Le support du Microsoft DFS permet de regrouper aux yeux des utilisateurs, un ensemble de ressources, situes sur des serveurs diffrents, dans un mme rpertoire sur un serveur. Ceci simplifie beaucoup la vie des utilisateurs. Ce protocole est support partir de Samba 2.2. Support d'impression Windows NT/2000 Samba peut comprendre et donc traduire en consquence les ACL UNIX et Windows NT/2000/XP. L'intgration de Winbind permet aux utilisateurs dont les logins sont stocks sur un serveur Windows de s'authentifier sur un systme Unix. Ceci permet une uniformisation de l'environnement de logon qui est bien

Samba

82

plus facilement administrable que deux systmes que l'on doit synchroniser. Les extensions CIFS d'UNIX permettent samba de supporter le systme d'attributs de fichiers Unix et ainsi de servir de remplacement un serveur NFS. L'avantage tant que l'authentification se fait par utilisateur et non pas par IP, ce qui garantit une meilleure scurit. Authentification Kerberos v5 et LDAP. Ceci permet une intgration dans un rseau Active Directory. Le support de l'Unicode permet de simplifier l'internationalisation des langues.

6.3. Le protocole SMB


Nous allons dans cette section dcrire plus en dtail le protocole SMB lui-mme. D'un point de vue haut niveau, le protocole SMB est relativement simple. Il inclut un jeu de commandes ncessaire aux diverses oprations relatives aux fichiers et aux imprimantes partages. On pourra par exemple : Ouvrir et fermer des fichiers Crer et supprimer des fichiers et des rpertoires Lire et crire des fichiers Chercher des fichiers Grer les fichiers d'impression Chaque opration peut tre encode en un message SMB et transmise depuis et vers un serveur. Ces commandes sont au format Server Message Blocks.

6.3.1. Le format SMB


Le protocole SMB est principalement un protocole de requte/rponse. En effet, dans la majeure partie du temps, un client envoie une requte SMB au serveur et celui-ci renvoie une rponse SMB au client. Un message SMB nest pas si complexe. Regardons sa structure interne d'un peu plus prs. On peut la sparer en deux grandes parties : Un en-tte de taille fixe et une chane de commande fixe de longueur trs variable en fonction du message. Voici les diffrents champs d'un en-tte de message : Champs 0xFF 'SMB' COM RCLS Taille (octets) 1 1 1 Description Identifiant du protocole Code commande, de 0x00 0xFF Classe d'erreur

Samba

83

REH ERR REB RES TID

1 2 1 14 2

Rserv Code d'erreur Rserv Rserv Identifiant unique pour une ressource utilise par le client ID du processus appelant ID utilisateur Multiplex identifier; utilis pour router les requtes dans un processus

PID UID MID

2 2 2

Le champs COM identifie la commande excuter. Toutes les commandes ne remplissent pas tous les champs chaque requte. Prenons par exemple la premire demande de connexion d'un client vers un serveur, le client ne pourra fournir un identificateur d'arborescence (TID), la valeur de ce champs sera alors NULL. D'autres champs peuvent tres gaux 0 lorsqu'ils ne sont pas utiliss. Juste aprs l'en-tte se trouve un nombre variable doctets qui constitue une commande ou une rponse SMB. Chaque commande comme Open File (COM=SMBopen) ou Get Print (COM=SMBsplretq) possde son propre jeu de paramtres et de donnes. Comme pour l'en-tte tous les champs nont pas forcment tre remplis. De par son volution le jeu de commandes SMB se trouve de plus en plus enrichi. Cependant il garde une compatibilit ascendante, ainsi des entits utilisant diffrentes versions du protocole pourront communiquer entre elles. Voici titre indicatif l'ensemble des dialectes du protocole SMB : Nom du protocole Core Core Plus LAN Manager 1.0 LAN Manager 2.0 LAN Manager 2.1 NT LAN Manager 1.0 Samba's NT LM 0.12 Common Internet File System Identificateur PC NETWORK PROGRAM 1.0 MICROSOFT NETWORKS 1.03 LANMAN1.0 LM1.2X002 LANMAN2.1 NT LM 0.12 Samba CIFS 1.0 Windows NT 4.0 Samba Windows 2000/XP Utilis par

Une connexion SMB simple: Le client et le serveur doivent accomplir trois tapes afin d'tablir une connexion

Samba

84

une ressource Etablir une session NetBIOS. Le client envoie une requte douverture de session et le serveur lui rpond en accordant une session, un canal de communication est alors ouvert. Dterminer le dialecte du protocole employer. Le client envoie maintenant un message au serveur afin de ngocier le dialecte du protocole SMB employer. La commande encapsule dans le message est SMBnegprot, le client envoie au serveur la liste des dialectes qu'il comprend et vice versa. Le serveur rpond en fournissant l'index de la valeur supporte (0xFF si aucun protocole n'est valide). Dfinir les paramtres de session et tablir la connexion la ressource. Enfin pendant la dernire tape, les paramtres de session et de connexion sont changs grce au message SMBSesssetupX. Parmi les paramtres on trouve : Le nom du compte et le mot de passe (quand il y en a un), Le nom du groupe de travail (workgroup), La taille maximum des donnes qui peuvent tre transfres, Le nombre de requtes en attente dans la file.

6.4. Le protocole NetBIOS


La communication rseau via le protocole NetBIOS est assez diffrente d'une communication classique TCP/IP utilise par des protocoles comme FTP ou Telnet. Nous allons commencer par voir les concepts de base du protocole NetBIOS, puis quelques implmentations que Microsoft en a fait, et enfin nous exposerons les situations qui sont ou non propices l'utilisation dun serveur Samba.

6.4.1. Fonctionnement de NetBIOS


Note
Ces documents continuent aujourd'hui de rgir toutes les implmentations y compris celles de Microsoft ou mme Samba.

En 1984, IBM cra une simple API (Application Programming Interface) pour mettre en rseau ses ordinateurs : Network Basic Input/Output System (NetBIOS). L'API NetBIOS permet aux applications de se connecter et de partager des donnes entre elles de manire rudimentaire. Considrez l'API NetBIOS comme une extension de l'API BIOS qui contient du code de bas niveau permettant d'effectuer les oprations sur le systme de fichiers local. Au dbut NetBIOS a t mis en oeuvre sur les rseaux de type TokenRing, puis sur des rseaux IPX de Novell. Le protocole TCP utilise des ips pour reprsenter les adresses des machines (192.168.0.2) tandis que NetBIOS nutilise que des noms. Certains problmes se sont poss lorsque l'on essaya de faire cohabiter les deux protocoles, c'est cet effet que les RFC 1001 et 1002 (documents de standardisation) furent publis et dcrivent comment NetBIOS doit fonctionner sur un rseau de type TCP/UDP. Ce protocole est communment appel NBT (NB over TCP/IP).

Samba

85

6.4.1.1. Rcuprer un nom NetBIOS


Dans le monde de NetBIOS, lorsqu'un ordinateur se connecte, il effectue une requte d'enregistrement de son nom NetBIOS. Cependant il est impossible que deux ordinateurs du mme groupe de travail aient le mme nom. Deux approches permettent de s'assurer que ce cas ne se produise jamais : Utiliser un NBNS (NetBIOS Name Server) pour garder une trace de toutes les machines qui ont enregistr un nom NetBIOS sur le rseau. Autoriser chaque ordinateur du rseau dfendre son enregistrement dans le cas ou un autre ordinateur essaye d'enregistrer le mme. Afin dutiliser NetBIOS dans un environnement TCP/IP,il doit y avoir un moyen de rsoudre un nom NetBIOS partir d'une adresse IP. Chaque ordinateur renvoie son IP lorsqu'il entend une requte de type broadcast de son nom NetBIOS. Utiliser un NBNS pour rsoudre les noms NetBIOS vers des adresses IP. (ex: wins) La mise en place dun NBNS permet daccrotre grandement les performances du rseau en vitant une tempte de broadcast inutile pour le simple enregistrement de nom. Pour savoir comment une machine Windows va ragir pour l'enregistrement et la rsolution de nom on pourra taper ipconfig /all dans un terminal MS-DOS et rechercher la ligne contenant Node-Type. Voici les valeurs que vous pourrez trouver : Type de nud (machine) b-node Description Utilise la mthode de broadcast pour lenregistrement et la rsolution. Utilise la mthode d'enregistrement et de rsolution en Point To Point (NBNS) Utilise le broadcast pour la rsolution et lenregistrement puis informe un serveur NBNS de ses rsultats Utilise un NBNS sil existe, dans le cas contraire il effectue un broadcast.

p-node

m-node (mixed)

h-node (hybrid)

6.5. Utilisation du client


La commande smbclient est la commande de base pour lutilisation cliente de samba (do son nom!!). Elle permet par exemple de rcuperer la liste des partages dun hote: [mandriva@linux ~]$ smbclient -L host_distant -U login Password: ( entrez votre mot de passe ici)

Cette commande est galement un ftp - like. Elle permet de se connecter au partage et dexcuter des commandes dans lenvironnement du partage.

Samba

86

[mandriva@linux ~]$ smbclient //host_distant/partage -U login Password:

une invite de commande de type samba apparat smb: \>

Pour rcuprer toutes les commandes il suffit de taper: ? smb: \> ? ? altname archive blocksize cancel

6.6. smbmount
Cette commande permet de monter les partages distants dans le systme de fichiers. [mandriva@linux ~]$ smbmount //hostname/partage /mnt/mount_point \ -o username=login Password:

Cette commande est quivalente : [mandriva@linux ~]$ mount t smbfs //hostname/partage /mnt/mount_point \ -o username=login Password:

Et pour dmonter: [mandriva@linux ~]$ smbumount //mnt/mount_point

6.7. nmblookup
Cette commande permet de rcuprer ladresse IP dun hte partir de son nom NetBIOS : [mandriva@linux~]$ nmblookup hostname querying hostname on 10.1.19.255 10.1.16.86 hostname<00>n

6.8. findsmb
Cette commande est en fait un script perl bien sympathique, permettant de rcuprer une liste dordinateurs proposant des services compatibles Samba.

Samba

87

Ce script nest pas disponible sur toutes les distributions il faut parfois aller le chercher sur le site de Samba.

6.9. smbstatus
Cette commande permet d'obtenir des informations sur les connexions en cours : Samba version 3.0.28 PID Username Group Machine ------------------------------------------------------------------Service pid machine Connected at ------------------------------------------------------toto 6366 127.0.0.1 Mon May 5 14:40:30 2008 No locked files

6.10. Le ficher /etc/samba/lmhosts


Alors que le fichier /etc/hosts effectue l'association adresse IP -> nom DNS, le fichier /etc/samba/lmhosts, spcifique samba effectue l'association adresse IP -> nom Netbios. Il utilise le mme formalisme que le fichier /etc/hosts : 127.0.0.1 LOCALHOST

6.11. Smb4k
Juste pour le citer, il sagit dun client graphique trs pratique et efficace qui permet de trouver tous les groupes de travail, les ordinateurs proposant des partages et il permet dy accder en quelques clics.

6.12. Configuration du serveur


La configuration de Samba se fait essentiellement dans le fichier /etc/samba/smb.conf. Par dfaut Samba vrifie son fichier de configuration toutes les 60 secondes. Sil trouve des changements ceux-ci sont immdiatement appliqus. Si les modifications sont mineures cela ne posera pas de problme, mais en cas de modification plus importante cela peut devenir problmatique : Si durant la reconfiguration le fichier est erron, Samba risque de faire quelque chose d'imprvu lorsqu'il va recharger sa configuration. Il est donc conseill de copier le fichier de configuration, le modifier, vrifier sa syntaxe, puis le remettre en place. Il est galement conseill de redmarrer le serveur, pour rinitialiser les connexions avec les clients, et donc les privilges des utilisateurs. Ce fichier tant lui-mme divis en diffrentes sections contenant chacune ses paramtres, que nous dtaillerons ensuite. [nom_de_section] paramtre = valeur paramtre2 = valeur2

Samba

88

6.13. Prsentation des diffrentes sections


6.13.1. Section global
La section global permet de configurer toutes les options concernant le serveur en lui-mme. Voici la plupart des paramtres configurables : [global] #workgroup correspond au nom du groupe de travail SMB workgroup = WORKGROUP #Le nom NetBIOS du PC netbios name = hostname #Description du serveur server string = Serveur de partage Samba #Respect des droits rwx des fichiers obey pam restrictions = yes #Pour interdire la connexion de certains utilisateurs invalid users = root #Pour forcer lauthentification: security = user #Pour utiliser cups comme serveur dimpression: printing = cups printcap name = cups #Autoriser uniquement certaines adresses IP hosts deny = ALL hosts allow = 192.168.0.1 127.0.0.1 #Pour ajouter le compte invit guest account = nobody #Pour faire de samba un server WINS name resolve order = wins host lmhosts bcast wins support = yes

Nous n'allons pas dtailler toutes les options car elles ont des noms assez explicites. Cependant nous allons apporter une prcision propos de la scurit et du mode d'authentification. La scurit et l'authentification des utilisateurs va dpendre de l'option security. Cette option peut prendre plusieurs valeurs telles que user, share, server ou domain. D'autres options telles que guest ok vont aussi jouer sur le type de connexion. Voici les diffrentes configurations avec leur fonctionnement.

6.13.1.1. Authentification de type : user


La valeur user est celle par dfaut depuis Samba 3. L'identifiant de connexion Windows et le mot de passe seront automatiquement utiliss pour tenter une authentification sur le serveur Samba. Si l'authentification choue, un nouveau couple identifiant mot de passe sera demand. L'utilisateur sera connect tous les partages du serveur avec le mme couple d'identifiants. Si le client n'arrive pas s'authentifier, il n'aura accs aucun partage, mme ceux ayant l'option guest ok. On peut changer ce refus d'accs grce l'option map to guest. Par dfaut cette dernire est dsactive (Never). On peut faire en sorte que toutes connexions choues se transforment en connexions guest (Bad User).

Samba

89

Example 6.1. Exemple de configuration

security = user guest account = nobody map to guest = Bad User

6.13.1.2. Authentification de type : share


La valeur share fonctionne l'inverse de la valeur user. Cette fois-ci le client ne s'authentifie plus sur le serveur mais sur chaque partage. Il est donc possible de lister les partages disponibles sans s'authentifier.

6.13.1.3. Authentification de type : server ou domain


Ce mode de fonction ragit comme le mode share. Cependant les comptes utilisateurs seront stocks sur un autre serveur Samba ou sur un domaine Windows.

6.13.2. Section homes


Cette section permet de configurer comment seront partags les dossiers personnels des utilisateurs. Les paramtres disponibles: [homes] comment = Home Directories #Dfinir les utilisateurs accdant aux partages #(%S = lutilisateur connect) valid users = %S #Permettre la modification des fichiers read only = No #Empcher de parcourir les sous dossiers browseable = No

Pour dfinir les utilisateurs valides nous pouvons utiliser plusieurs symboles:

Table 6.1. Pour dfinir les utilisateurs


@groupe /home/%u %S Le groupe entier les utilisateurs possdants un repertoire home Empecher les utilisateurs d'accder aux autres fichiers homes d'autres utilisateurs.

6.13.3. Section printers et print$


Ces deux sections permettent de grer le partage dimprimantes, la premire configure le spooler dimpression :

Samba

90

[printers] comment = All Printers printable = yes #Chemin du spooler dimpression path = /var/spool/samba create mode = 0700 #Accessible de lextrieur guest ok = Yes #Laisser le client utiliser son propre driver use client driver = Yes

La deuxime elle, cre le partage que les clients Windows cherchent pour rcuprer les drivers de limprimante. [print$] comment = Printer Drivers #Chemin vers les drivers des imprimantes path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no

6.13.4. Section netlogon


Partage contenant les scripts net logon, utile seulement si vous utilisez ce service. [netlogon] comment = Network Logon Service path = /var/lib/samba/netlogon/scripts admin users = ed, john, sam guest ok = No browseable = N writable = No

6.13.5. Sections de partages


Pour crer un nouveau partage, il suffit en fait de rajouter une section du nom du partage que vous voulez crer, cette section na quun seul paramtre obligatoire : "path". Exemple de cration de partage avec accs anonyme : [tmp] comment = Temporary file space path = /tmp read only = yes #Nimporte qui peut y accder public = yes

Samba

91

Exemple de partage accessible au groupe dutilisateurs en lecture et au groupe rseau en criture : [user_share] path = /var/user_share comment = Patarge des utilisateurs #Rendre le partage accessible uniquement ces 2 groupes public = no valid users = @users, @reseau #activer lcriture pour le groupe reseau #et la lecture pour le groupe users write list = @reseau read list = @users

6.14. Validit du fichier smb.conf


Pour tester la validit des configurations de Samba il suffit de lancer la commande testparm. [mandriva@linux ~]$ testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[print$]" Processing section "[Partage]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions

En pressant la touche "entrer" vous pourrez voir tous les paramtres entrs dans votre fichier de configuration.

6.15. Gestion des utilisateurs


Samba gre sa propre liste dutilisateurs, pour ajouter un utilisateur samba, il faut crer un utilisateur systme puis utiliser la commande smbpasswd -a. [mandriva@linux ~]$ smbpasswd -a toto New SMB password: Retype new SMB password: Added user toto.

6.16. SWAT
SWAT (Samba Web Administration Tool) est un outil permettant de configurer Samba grce une interface web.

6.16.1. Installation
SWAT dmarre grce inetd ou xinetd. Dans le cas o inetd est utilis, le fichier /etc/inetd.conf doit contenir la ligne :

Samba

92

swat

stream

tcp

nowait.400 root /usr/sbin/swat

swat

Dans le cas o xinetd est utilis il faut crer le fichier /etc/xinetd.d/swat dont le contenu est : service swat { port = 901 socket_type = stream wait = no only_from = 127.0.0.1 user = root server = /usr/sbin/swat log_on_failure += USERID } swat

Et /etc/services doit contenir : swat 901/tcp # samba web configuration tool

Il suffit ensuite de redmarrer inetd grce : killall -HUP inetd

6.16.2. Utilisation
Rendez vous l'adresse http://127.0.0.1:901 l'aide d'un navigateur. SWAT tant trs facile d'utilisation, son fonctionnement ne sera pas dtaill.

6.17. Utilisation de Samba en Contrleur de domaine


[global] #Le nom du serveur NetBIOS name = toltec #Le nom du groupe de travail workgroup = METRAN encrypt passwords = yes #Faire en sorte que le serveur soit le matre du domaine domain master = yes local master = yes preferred master = yes os level = 65 security = user domain logons = yes #Dit Samba o il doit placer les profils itinrants de

Samba

93

#Windows NT/2000/XP logon path = \\%L\profiles\%u\%m logon script = logon.bat logon drive = H: #Permet de spcifier la location des profils itinrants de #Windows 95/98/Me logon home = \\%L\%u\.win_profile\%m time server = yes domain admin group = root jay

Voici les nouveaux partages placer aprs la section [global] : [netlogon] path = /usr/local/samba/lib/netlogon writable = no browsable = no [profiles] path = /home/samba-ntprof browsable = no writable = yes create mask = 0600 directory mask = 0700 [homes] read only = no browsable = no guest ok = no map archive = yes

Le partage "[profiles]" est ncessaire l'utilisation de profils itinrants de Windows NT/2000/XP. Le chemin pointe sur un rpertoire du serveur Samba o seront stocks les profils, le client doit donc tre capable de lire et dcrire des donnes. Les directives create mask et directory mask permettent de s'assurer que seuls les utilisateurs autoriss puissent lire et crire dans ce rpertoire et personne d'autre. Le partage "[homes]" lui est ncessaire nos dfinitions de logon drive et logon home. Vous pouvez ds prsent lancer testparm pour vrifier l'exactitude de la syntaxe de votre fichier smb.conf. Les partages [netlogon] et [profiles] dfinis dans notre smb.conf rfrencent des rpertoires sur le serveur Samba, il est donc ncessaire de crer ces derniers avec les bonnes permissions bien sr ! [mandriva@linux [mandriva@linux [mandriva@linux [mandriva@linux ~]$ ~]$ ~]$ ~]$ mkdir chmod mkdir chmod /usr/local/samba/lib/netlogon 775 /usr/local/samba/lib/netlogon /home/samba-ntprof 777 /home/samba-ntprof

Les noms des rpertoires sont totalement arbitraires et choisis titre d'exemple. Afin d'interagir dans un domaine donn, un systme Windows NT/2000/XP doit tre membre de ce domaine. L'appartenance d'une machine un domaine s'implmente en utilisant des comptes machines. Ceux-ci sont comme nous le verrons, assez semblables des comptes utilisateurs et permettent au contrleur de domaine de

Samba

94

reconnatre les machines pouvant s'authentifier sur le domaine. Si le PDC est un Windows2000/Xp, ces comptes machine sont stocks dans la base de donne SAM.

95

Chapter 7. Maintenance
Table of Contents
7.1. Gestion des logs .............................................................................................................95 7.1.1. Syslog-ng ...........................................................................................................95 7.1.2. Lire ses fichiers de logs .........................................................................................97 7.2. (Re)Construire ses propres packages ..................................................................................98 7.2.1. Objectifs ............................................................................................................98 7.2.2. Avec le gestionnaire de packages RPM ....................................................................98 7.2.3. Avec le gestionnaire de packages DEB .................................................................. 104 7.3. Les sauvegardes sous Linux ........................................................................................... 107 7.3.1. Prparer sa stratgie de backups ............................................................................ 107 7.3.2. Appliquer votre stratgie de backups ..................................................................... 108 7.3.3. Automatisation des tches de sauvegardes .............................................................. 111

7.1. Gestion des logs


7.1.1. Syslog-ng
7.1.1.1. Prsentation et diffrences avec Syslog
Syslog-ng est en quelque sorte la version amliore de syslog. La grande nouveaut est la possibilit d'appliquer des filtres sur les messages de log gnrs. La partie log rseau a galement t amliore. Tout comme syslog, syslog-ng rcupre les messages de log des programmes puis les envoie vers diffrentes destinations, bases sur leurs facilities/priorits. Les destinations peuvent-tre a un fichier de log, un terminal TTY, un utilisateur actuellement loggu ou un serveur centralis de logs. La facility va dfinir implicitement la destination du message, la priorit va dfinir le niveau d'importance de ce message. Le soucis avec ce systme de facilities et de priorits de l'ancien syslog sont le fait que cette architecture soit trop restreinte (limit par le nombre de facilities existantes, non extensible). Certains deamons sont regroups dans la mme facilities alors que bien souvent, il n'ont pas vraiment de rapports entre-eux. Syslog-ng rsout ce problme en ajoutant un systme de filtre sur le contenu du message. Il en dcoule galement un plus grande flexibilit dans la gestion des messages travers le rseau. Sysklog est une implmentation du protocol syslog plus ancienne mais encore utilise sous certains UNIX. Compos de deux daemons: syslogd qui s'occupe du logging du systme et klogd qui s'occupe du logging du noyau.

7.1.1.2. Configuration
Le fichier de configuration de syslog-ng est /etc/syslog-ng/syslog-ng.conf. 5 mots cls dfinissent le comportement de syslog-ng : options : dfinit les options de syslog-ng source : dfinit les sources d'o syslog-ng rcuprera les messages de log destination : dfinit l'emplacement d'criture final des messages de log

Maintenance

96

filter : les filtres appliquer la source log : lment qui va lier les sources, un ou plusieurs filtres et une ou plusieurs destinations

7.1.1.2.1. source
Ce mot cl va nous permettre de dfinir une ou plusieurs "entre" dans le systme de traitement de syslog-ng. source s_all { # message generated by Syslog-NG internal(); # standard Linux log source (this is the default place for the syslog() # function to send logs to) unix-stream("/dev/log"); # messages from the kernel file("/proc/kmsg" log_prefix("kernel: ")); # use the following line if you want to receive remote UDP logging messages # (this is equivalent to the "-r" syslogd flag) # udp(); };

Dans cet example, nous crons une source que l'on nomme "s_all". Les noms sont importants car ils sont rutiliss dans l'lment log. Cette source contient plusieurs entres de types diffrents. Tout d'abord, une entre "internal()" spcifique syslog-ng. Nous pouvons ensuite lire l'intgralit des messages de log depuis le fichier /dev/log qui n'est rien d'autre que le point d'entre et de sortie des messages envoys par la fonction syslog() des librairies C. Le kernel fournit quand lui un point de lecture de ses propres messages grce au fichier /proc/kmsg. Si nous souhaitons que notre daemon syslog-ng agisse en tant que serveur rseau de logs, il suffit alors de placer la fonction "udp()". Comme indiqu dans le commentaire, ce paramtre agit comme l'option -r de l'ancien daemon syslogd.

7.1.1.2.2. filter
Cette section est trs importante et fait la force de syslog-ng. C'est ici que nous dfinissons les filtres qui seront appliqu (plus tard) aux messages sources. Il faut prciser ou non un ou plusieurs levels spars par des "," (tous les messages si non prciss) qui correspondent au niveau du message (debuggage, warning, information..etc.) une facility prcise. La facility peut tre une prdfinie ou bien une chaine de caractre comprenant du globbing. L'exemple suivant permet de rcuprer tous les messages en provenance de la facility cron et applique une restriction sur le niveau du message en ne rcuprant que les erreurs : filter f_cronerr { level(err) and facility(cron); };

Table 7.1. priorites possibles (level):


debug info warning/warn messages de debuggage messages d'informations mis par la facility prcise messages de warning mis par la facitily prcise

Maintenance

97

error/err crit alert emerg/panic

messages d'erreurs mis par la facitily prcise messages de critiques mis par la facitily prcise messages d'alertes mis par la facitily prcise messages de paniques mis par la facitily prcise

Les facility dj prdfinies peuvent tre: auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security (identique auth), syslog, user, uucp et local0 local7. Elles peuvent tre aussi sous la forme de globbing. Par exemple pour rcupprer toutes les logs concernant l'interface "eth0": pour cela on utilisera non pas facility mais match tel que :

filter f_eth0 { match('eth0'); };

7.1.1.2.3. destination
Cette section nous permettra de dfinir des fichiers de "sortie" des messages, les fichiers o ils apparaitront. On ne dfinit ici aucun traitement. On associe simplement un ou plusieurs fichiers des noms de destination. Exemple : destination df_auth { file("/var/log/auth.log"); }; destination df_syslog { file("/var/log/syslog"); }; destination df_cron { file("/var/log/cron.log"); };

Ici, la destination df_auth enverra les messages dans /var/log/auth.log dont le propritaire sera l'utilisateur news au lieu de root (la raison est que ces messages sont destins au systme news, c'est dire les daemons qui ont en gestion ces messages). destination df_news_dot_err { file("/var/log/news/news.err" owner("news")); };

Il est galement possible de dfinir l'utilisateur propritaire du fichier. Ici, la destination df_news_dot_err enverra les messages dans /var/log/news/news.err et l'utilisateur news sera le propritaire du fichier. Ceci est trs pratique pour des applications utilisateur.

7.1.1.2.4. log
Cette section permet tout simplement de relier les diffrents lments de la configuration . Cette section fait une liaison avec les deux dernires sections c'est dire la source, le filtre et la destination : log { source(s_all); filter(f_cronerr); destination(df_cron); };

7.1.2. Lire ses fichiers de logs


Pour lire les fichiers de logs d'un systme, on peut utiliser n'importe quelle commande vue prcdemment comme cat, head, less, more, etc ... Vous pouvez aussi utiliser votre diteur de texte prfr qu'il soit en disponible en CLI ou en mode graphique. Certaines commandes peuvent aussi se rvler plus pratiques que d'autres pour lire les fichiers de logs comme tail qui permet d'afficher uniquement la fin du fichier de log.

Maintenance

98

[root@linux ~]# tail /var/log/auth

Vous pouvez aussi voir les logs en temps rel grce l'option -f de la commande tail. [root@linux ~]# tail -f /var/log/auth

7.2. (Re)Construire ses propres packages


7.2.1. Objectifs
Pourquoi construire ou reconstruire ses packages ? Tout d'abord savoir construire ses paquets est un moyen d'intgrer dans son systme Linux une application non supporte par dfaut. Par exemple si je possde une distribution linux debian et que je souhaite installer un lecteur vido mais que je ne dispose que des sources de ce dernier, la meilleure solution est de gnrer un package DEB et de l'ajouter ensuite avec la commande dpkg. Les avantages sont nombreux, on peut ensuite facilement le dsinstaller, le mettre jour, le distribuer, ... Enfin on peut aussi reconstruire un package pour l'optimiser ou le personnaliser, si l'on souhaite par exemple recompiler une application pour des architectures 64 bits, pour des processeurs supportant le jeu d'instructions i686, .. On peut aussi simplement ajouter un patch ou modifier la faon dont il est compil, par exemple on pour un lecteur multimdia on pourrait supprimer le support de tel ou tel format audio/vido.

7.2.2. Avec le gestionnaire de packages RPM


7.2.2.1. Introduction
Le format Red hat Package Manager (RPM), est une archive contenant les binaires d'un programme ainsi que des scripts d'installation pour ce dernier. Ces RPM sont crs partir des sources d'une application qui est d'abord dcompresse, patche puis compile. Le rsultat de cette compilation est donc notre fameux fichier RPM ainsi qu'un fichier RPM source, par exemple : Binaire RPM : mc-4.6.1.i586.rpm. Ici l'archive RPM contient les binaires compils pour une architecture i586 du programme mc. Source RPM : mc-4.6.1.src.rpm. Ici l'archive RPM contient les sources du programme mc ainsi que tous les fichiers, toute la configuration ncessaire pour la cration du package RPM contenant les binaires.

Note
Il est possible de voir ce que contient une arhive RPM sans l'installer en utilisant le programme mc (Midnight Commander), celui-ci est capable d'ourvir et de parcourir tous les fichiers qu'elle contient. Il existe aussi un outil nomm rpm2cpio qui permet de convertir un RPM vers une archive au format cpio que l'on peut ensuite extraire avec l'outil cpio.

Bref lorsque nous souhaitons juste recompiler un package RPM, il suffit de rcuprer les sources du RPM (extension .src.rpm), effectuer les changements voulus puis crer nouveau le packages rpm contenant les binaires.

Maintenance

99

Pour finir il est interressant de savoir que lors de la cration d'un package RPM, divers scripts sont excuts pour automatiser la compilation et toutes les tapes qui l'accompagnent. Nous le verrons dans les chapitres qui suivent, tout le processus repose sur un fichier SPEC, qui dfinit et paramtre notre package RPM. Voici donc les diffrents rpertoires et dossiers qui contiennent ces librairies, scripts : /var/lib/rpm : Ce dossier contient plusieurs petites base de donnes fichiers qui indexent tout les packages rpm du systme. Voici quelques exemples : /var/lib/rpm/Packages : Base de donnes des packages installs /var/lib/rpm/Conflict, /var/lib/rpm/Requirename, ... : Base de donnes pour indexer les fichiers ou dossiers installs par les packages, indexer les dpendances entres les packages, ... /usr/lib/rpm : Contient les librairies et scripts utiliss par les archives rpm, contient galement la configuration par dfaut utilise pour la cration de packages. /usr/lib/rpm/rpmrc : configuration par dfaut utilis pour la cration des packages RPM. On peut y dfinir l'architecture de sortie, par exemple i386, ou i586 ou 64 bits, ... /usr/lib/rpm/macros : contient l'ensemble des macros (scripts), variables, appels par dfaut lors de la cration d'un package. /usr/lib/rpm/* : tout le reste des fichiers sont des scripts et des librairies utiliss par le gestionnaire de package rpm.

7.2.2.2. Les prrequis pour (re)crer un package


Nous avons besoins de diffrents outils pour crer nos packages rpm, les plus importants sont les commandes rpm et rpmbuild mais elles sont prsentes par dfaut grce votre gestionnaire de package. Il ne nous reste plus donc qu' installer tout le ncessaire de compilation : gcc : le compilateur GNU pour le langage C g++ : le compilateur GNU pour le langage C++ D'autres outils comme automake, autoconf, les headers des librairies essentiels qui sont normalement installs automatiquement avec gcc et g++ si vous utilisez le gestionnaire de package de votre distribution (urpmi, yum, yast, ...). L'tape suivante consiste maintenant prparer le dossier o nous allons gnrer nos packages, c'est dire notre chantier de construction. Par dfaut ce rpertoire est /usr/src/packages mais il n'est pas forcment cr sur toutes les distributions ou bien son nom n'est pas tout fait le mme, par exemple /usr/src/redhat. Voici le dtail de tous les composants de ce rpertoire : [root@linux /usr/src/packages] # ls BUILD/ RPMS/ SOURCES/ SPECS/ SRPMS/

BUILD : Le rpertoire o la compilation des sources est effectue RPMS : Le rpertoire de destination du package rpm binaire aprs la compilation, il sera ensuite plac dans un sous rpertoire correspondant l'architecture-cible. Par exemple RPMS/i586/mc-4.2.1.i586.rpm. SOURCES : Contient toutes les archives, patches et sources des programmes. Par exemple SOURCES/

Maintenance

100

mc-4.2.1.tar.gz. SPECS : Contient des fichiers SPECS, c'est dire le fichier qui dfinit comment crer le package rpm. SRPMS : Contient les RPMs sources des packages aprs compilation. Par exemple SRPMS/ mc-4.2.1.src.rpm Si on doit donc crer tous ses dossiers la main voici la commande qu'il faudrait utiliser : # mkdir -p /usr/src/packages/{BUILD,RPMS/$ARCH,RPMS/noarch,SOURCES,SRPMS,SPECS}

Ici $ARCH correspond l'architecture de notre machine, par exemple i586. Enfin procdons la dernire tape la configuration des options globales pour la cration de nos packages rpm, c'est dire la modification des paramtres dans les fichiers rpmrc et macros. Comme vu prcdemment ces 2 fichiers sont situs dans /usr/lib/rpm mais nous ne les modifierons pas cet endroit l mais plutt ici : /etc/rpmrc : pour modifier les paramtres d'architecture-cible pour tous les utilisateurs. ~/.rpmrc : pour modifier les paramtres d'architecture-cible uniquement pour l'utilisateur courant. /etc/rpm/macros : options valables pour tous les utilisateurs. ~/.rpmmacros : uniquement pour l'utilisateur courant. Le fichier rpmrc va donc nous permettre de choisir l'architecture cible de nos packages rpm, dans le cas d'une recompilation de package on parlera d'optimisation. En effet si je dcide de choisir i686 alors que tout mes packages sont en i386, je pourrais alors convertir tous mes packages si je les recompile. Par exemple : buildarchtranslate: buildarchtranslate: buildarchtranslate: buildarchtranslate: i386: i486: i586: i686: i686 i686 i686 i686

Quant au fichier macros, il va nous permettre de dfinir des options globales tous nos packages rpm, comme mon nom, le rpertoire o se trouve mon chantier de construction, ajouter une signature gpg ses packages, ... Par exemple : %_topdir /usr/src/packages %_tmppath /tmp/rpm %_signature gpg %_gpg_name OpenSuSE %_gpg_path ~/.gnupg %distribution OpenSuSE %vendor Vincent

7.2.2.3. Recompiler un package RPM


A prsent que tout est prt nous pouvons enfin crer des packages rpms. Notre premier test va tre de recompiler

Maintenance

101

un package RPM ce qui est trs simple car il nous suffit d'utiliser le rpm source et pour cela, 2 choix s'offrent nous. Soit simplement recompiler le package sans rien modifier ni patcher, ce moment l on fera appel la commande rpmbuild : # rpmbuild --rebuild <nom-version>.src.rpm

Soit nous souhaitons modifier un peu le package avant de le recompiler, ce moment l nous installons d'abord le package rpm source : # rpm -ivh <nom-version>.src.rpm

Note
Dans la plupart des distributions vous pouvez rcuprer les rpm sources de vos programmes en ajoutant dans le gestionnaire de package l'adresse d'un nouveau serveur contenant ces rpms (Voir la documentation/aide de votre distribution). Ensuite il suffit de les installer avec urpmi (mandriva), yum (redhat) ou yast (suse) : # yum install mc-src

Une fois install, votre package de source est clat dans tous les dossiers que nous avons prcdemment cr. Un fichier "package.spec" doit apparatre dans le dossier SPECS ainsi qu'une archive et tous les patchs du programme dans le dossier SOURCES. Admettons prsent que nous souhaitons intgrer un nouveau patch notre programme :

1. 2.

Copiez le dans le dossier SOURCES Modifier le fichier package.spec pour ajouter ci-dessous les lignes qui sont en gras : BuildRoot: %{_tmppath}/%{name}-%{version}-build Source: ... Patch0: package-1.0.patch ... %prep %setup -q %patch0 -p1 ...

3.

Enfin dernire tape, la compilation : # rpmbuild -ba SPECS/package.spec

Maintenance

102

Au final nous obtenons un nouveau package RPM dans le rpertoire RPMS/<arch> (par exemple RPMS/i586) et dans le rpertoire SRPMS. Il existe cependant diffrentes options pour la commande rpmbuild qu'il est ncessaire de connatre :

Table 7.2. Les options de la commande rpmbuild


Option Description --rebuild <fichier.src.rpm> Recompile un package partir du rpm source spcifi. Sont pris en compte uniquement les changements effectus dans les fichiers rpmrc et macros. Compile un package partir de son fichier de spec puis gnre 2 packages : 1 binaire rpm et 1 rpm source. Compile un package partir de son fichier de spec mais gnre uniquement un binaire rpm. Compile un package partir de son fichier de spec mais gnre uniquement un rpm source.

-ba <file.spec>

-bb <file.spec> -bs <file.spec>

7.2.2.4. Crer un package avec les sources d'un programme


Dans cette dernire partie nous allons dtailler comment gnrer un package rpm partir des sources d'un programme. L'objectif est donc de crer nous-mme un fichier de spec pour la commande rpmbuild. Ce dernier est organis en plusieurs sections que voici : Une section globale qui renseigne le nom du package, le fichier contenant les sources, sa version, ... Une section o l'on prcise les tapes de compilation et les ventuels patches Une section o l'on prcise comment installer le programme sur le systme, les rpertoires de destinations, les permissions, ... Des sections post et pr installation o l'on peut lancer des scripts, effectuer diverses actions Une section description et une section changelog pour renseigner le maximum d'informations propos du package.

7.2.2.4.1. La section globale du fichier de spec


Voici toutes les options que l'on peut retrouver dans cette section : Name: BuildRequires: License: Group: Requires: Version: Release: Summary: Url: BuildRoot: Source:

gnome-bluetooth fdupes gob2 intltool libbtctl-devel libglade2-devel libgnomeui-devel . GPL v2 or later; LGPL v2.1 or later System/GUI/GNOME gnome-vfs2 python-gnome 0.11.0 6.2 GNOME Bluetooth Support http://usefulinc.com/software/gnome-bluetooth/ %{_tmppath}/%{name}-%{version}-build ftp://ftp.gnome.org/pub/gnome/sources/%{name}/0.8/%{name}-%{version}.t

Maintenance

103

Name : le nom du package sans la version BuildRequires : la liste des packages ncessaires uniquement lors de la compilation Group : Utile pour le gestionnaire de package afin de classer le package dans un groupe (dpend de votre distribution). Requires : liste des packages requis uniquement pour l'utilisation de la forme compil du package Version : version du programme que l'on souhaite compiler Release : version du package ( patchs, ... ) BuildRoot : rpertoire utilis pour la compilation du package Source : Url utilis pour rcuprer puis extraire le package dans le BuildRoot. On peut prciser une adresse ftp, http ou locale la machine. Il existe encore d'autre options moins importantes que nous n'abordons pas ici, cependant on peut noter que si vous souhaitez ajouter des patchs, il faut utiliser l'option Patch0, Patch1, ... de la mme manire que Source.

7.2.2.4.2. Les tapes de compilation dans le fichier de spec


%prep %setup -q %build

7.2.2.4.3. Les tapes d'installation


Il y a plusieurs tapes configurer pour la compilation : %install %makeinstall # Fichiers suppl. copier mkdir -p $RPM_BUILD_ROOT/etc/gnome-blue cp -a sample.conf $RPM_BUILD_ROOT/etc/gnome-blue %clean rm -rf "$RPM_BUILD_ROOT" %files %defattr(-, root, root,755) /usr/bin/* /usr/lib/*

%makeinstall : Equivaut la commande "make install", tous les binaires sont installs dans une arborescense temporaire (le BuildRoot) avant d'tre packags. %clean : Supression de tous les fichiers du BuildRoot %files : Dans cette section on indique tous les fichiers qui doivent tre inclus dans le package. Il faut donc tablir une liste prcise de tout les binaires/fichiers gnrs lors de la compilation et choisir ceux qui doivent tre install sur le systme.

Maintenance

104

%defattr(-, root, root, 755) : Utilise avec %files, cette option permet de dfinir le propritaire, groupe et permissions qui seront appliqus aux fichiers lors de l'installations du package.

7.2.2.4.4. Description et changelog


Les options descriptions et changelog permettent d'crire librement du texte la suite : %description This package contains a controller class, GnomebtController, to controlBluetooth devices and a simple GUI to explore which devices ... %changelog * Fri Feb 1 2008 rodrigo@suse.de - Update to version 0.11.0: * Remove gnome-obex-send as it's replaced by bluez-gnome's bluetooth-sendto ...

7.2.3. Avec le gestionnaire de packages DEB


7.2.3.1. Introduction
Le gestionnaire de package de debian diffre de son homologue de chez red hat en employant un autre format d'archive (extension .deb). On peut manipuler ces archives grce la commande dpkg dont voici quelques rappels : # Installer un package debian : root@linux # dpkg -i mon-package.deb

# Dsinstaller un package debian : root@linux # dpkg -r mon-package.deb

Table 7.3. options de dpkg


-i installe un paquet mais ne gre pas les dpendances. La commande apt-get -f monpaquet permet de pouvoir complter l'installation. Supprime un paquet Purge un paquet c'est dire qu'il supprime les fichiers de configurations associs dans /etc Liste les paquets satisfaisant le motif de recherche liste les paquets contenant le fichier indiqu

-r -P -l -S

Tout comme les packages rpm, les packages debian contiennent des binaires prt tre installer sur le systme ainsi que des scripts excuter. On peut d'ailleurs explorer ces packages grce la commande suivante : STCdebian:~# tar tv at_3.1.10_i386.deb rw-r--r-- 0/0 4 Jan 3 08:15 2006 debian-binary

Maintenance

105

rw-r--r-- 0/0 rw-r--r-- 0/0

1066 Jan 40354 Jan

3 08:15 2006 control.tar.gz 3 08:15 2006 data.tar.gz

debian-binary : simple fichier contenant le numro de version du systme de package debian, c'est dire 2.0 control.tar.gz : archive contenant les scripts lancs lors de l'installation ainsi que le fichier control contenant toutes la description du package. data.tar.gz : archive contenant tous les binaires/fichiers du programme.

Note
Sous debian, les packages sont tlchargs et installs grce au systme apt. Le dossier de destination des archives tlcharges est /var/cache/apt/archives et peut s'avrer trs pratique si vous voulez manipuler des packages debian sans avoir en chercher sur internet.

7.2.3.2. prrequis
Nous souhaitons donc crer un nouveau package debian pour une application ou un script, que doit-on installer pralablement ? Un compilateur, les outils debian, ... mais grce apt nous pouvons installer tout cela trs facilement : # apt-get install build-essential

Ensuite si nous souhaitons crer un package partir des sources d'un programme, il faudra d'abord manuellement compiler ce programme. Pour rappel afin d'effectuer cette opration vous devez possder toutes dpendances requises ( librairies, ... ) du dit pogramme. Puis : # mkdir /tmp/my-package # ./configure --prefix=/tmp/my-package # make && make install

Tous les fichiers et binaires seront alors copis dans /tmp/my-package et prt tre utilis pour crer le package debian.

Note
Il existe des solutions pour compiler le programme et crer le package automatiquement mais elles ne sont pas au programme de la LPI. Ceci vous pouvez faire une recherche sur "checkinstall" par exemple.

7.2.3.3. Crer un package debian

Maintenance

106

L'objectif atteindre pour crer notre package debian est de reproduire une arborescence contenant : L'arborescence et les binaires du programme Le fichier de control (description du package) Un fichier md5sums qui contient le hash md5 de tous les fichiers du package Bref il faut tout d'abord crer un dossier comme /tmp/my-package puis y copier tous les lments vus ci-dessus : # ls -lR tmp/my-package drwxr-xr-x 2 root root 96 Mar 20 11:22 DEBIAN drwxr-xr-x 2 root root 80 Mar 20 11:23 etc drwxr-xr-x 3 root root 72 Mar 20 11:22 usr ./DEBIAN: total 0 -rw-r--r-- 1 root root 0 Mar 20 11:22 control -rw-r--r-- 1 root root 0 Mar 20 11:22 md5sums ./etc: total 0 -rw-r--r-- 1 root root 0 Mar 20 11:23 sample.conf ./usr: total 0 drwxr-xr-x 2 root root 72 Mar 20 11:22 bin ./usr/bin: total 0 -rw-r--r-- 1 root root 0 Mar 20 11:22 my-cmd

Interressons nous maintenant ce que contient le fichier de control, la description de notre package. Voici un exemple du fichier control du package at sous debian :

Package: at Version: 3.1.10 Section: admin Priority: important Architecture: i386 Depends: libc6 (>= 2.3.5-1), libpam0g (>= 0.76), mail-transport-agent, lsb-base (>= 3. Installed-Size: 128 Maintainer: Ryan Murray <rmurray@debian.org> Description: Delayed job execution and batch processing At and batch read shell commands from standard input storing them as a job to be scheduled for execution in the future. . Use at to run the job at a specified time batch to run the job when system load levels permit

Pour le comparer son homologue prsent dans les pacakages rpm, on peut remarquer qu'il est beaucoup plus simple. Voici une petite description des options importantes : Package: nom du package Architecture: architecture-cible des binaires deu package. Section : catgorie du package.

Maintenance

107

Depends : liste des dpendances avec leur version. Terminons avec l'tape finale, la cration du package, que nous allons raliser grce la commande dpkg-deb : root@linux # dpkg-deb -b my-package-1.0 root@linux # tar tv my-package-1.0.deb rw-r--r-- 0/0 4 Jan 3 08:15 2006 debian-binary rw-r--r-- 0/0 1066 Jan 3 08:15 2006 control.tar.gz rw-r--r-- 0/0 40354 Jan 3 08:15 2006 data.tar.gz

7.2.3.3.1. Fichiers facultatifs d'un package debian


Dans un package debian on peut ajouter la suite du fichier control, des scripts qui seront excuts avant ou aprs l'installation et la dsinstallation ou bien ajouter contenant des informations sur les fichiers de configurations du programme. DEBIAN/postinst : Shell script excut aprs l'installation. Pratique pour ajuster des permissions, crer des fichiers ou faire tout autre opration sur le systme de fichiers. DEBIAN/postrm : Idem mais excut aprs la dsinstallation. DEBIAN/prerm : Idem mais excut avant la dsinstallation. DEBIAN/preinst : Idem mais excut avant l'installation. DEBIAN/conffiles : Contient la liste des fichiers de configuration installs avec par le package. DEBIAN/md5sums : Contient le hash de chaque fichier install par le package.

7.3. Les sauvegardes sous Linux


7.3.1. Prparer sa stratgie de backups
7.3.1.1. Que dois-je sauvegarder sur mon F.S. ?
1re question cruciale que tout chacun doit se poser face son systme Linux, quoi sauvegarder ? Il faut donc tablir un inventaire prcis des services et donnes de la machine pour localiser les fichiers de configurations, donnes importantes, ... Nous allons donc parler ici de gnralit sur un serveur Linux, il convient aprs de vrifier que si vous possder un service "alpha", les fichiers de configurations et la base de donnes se trouve bien dans les rpertoires que vous allez sauvegarder. Pour une sauvegarde des donnes et configuration de chaque service, les dossiers suivant sont trs critiques : /var : Il contient par dfaut vos base de donnes, sites web, ... /etc : Il contient par dfaut tous vos fichiers de configuration Pour une sauvegardes des documents et profils de tous vos utilisateurs, on sauvegardera par dfaut le rpertoire /home. Et enfin pour une sauvegarde complte du systme on sauvegardera tous les rpertoires du systme l'exception

Maintenance

108

de ceux lists ci-dessous : /tmp : Il ne contient que des fichiers temporaires /sys, /proc, /dev : Ce sont des rpertoires spciaux utiliss pour vos priphriques et par votre noyaux, ils ne contiennent pas de vritables donnes. /mnt, /media : Ce sont des rpertoires utiliss uniquement pour crer des points de montage.

7.3.1.2. O et comment sauvegarder ?


A cette question s'en ajoute d'autres car on doit rflchir : La priodicit de nos sauvegardes : hebdomadaires ? journalires ? ... L'accessibilit : Doit-on tre en mesure de restaurer un fichier rapidement en cas de problme ? La taille : combien nous estimons la taille de nos sauvegardes aujourd'hui et que prvoyons nous pour dans 1 semaine, 1 mois, ... La fiabilit du mdia : pour archiver les donnes long terme, quel support choisir ? Disque dur, bandes, .. Bref pour y rpondre dans l'ordre, si l'on souhaite faire des sauvegardes trs rgulirement il sera avantageux d'utiliser des sauvegardes diffrentielles, incrmentielles, ... mais viter les sauvegardes compltes. On conseillera ce type de sauvegarde pour vos services, documents, ... mais pas pour la totalit du systme. Ensuite pour la question de l'accessibilit, si ces donnes doivent tre rapidement restaures en cas de problme, on penchera alors pour une sauvegarde via le rseau depuis le disque dur d'une machine distante. Par la suite on pourra si on le souhaite faire des sauvegardes sur bande (hebdomadaires ou mensuelles) du disque de cette machine. Enfin pour ce qui est de la taille de notre sauvegarde, la solution base de disque dur est trs adapte mais pas pour de l'archivage long terme. On prfrera alors la sauvegarde sur bande. Le but de ce chapitre n'est pas de donner la solution idale toute les situations mais de prsenter les diffrents choix qu'il faut se poser. En fonction de ces choix nous pourrons alors nous orienter vers diffrentes mthodes de sauvegardes : Sauvegarde locale : utilisation de commandes comme tar, cpio, ... Sauvegarde sur bandes : utilisation de commandes comme tar, dump, mt, ... Sauvegarde par le rseau : utilisation de commandes comme tar, rsync, scp, ... Image complte d'un systme : utilisation de commandes comme dd, partimage, ...

7.3.2. Appliquer votre stratgie de backups


7.3.2.1. Sauvegardes locales
Faire une sauvegarde locale a intrt court terme. L'objectif est de sauvegarder des donnes, documents, .. et des les restaurer trs rapidement sans tre dpendant d'une bande, d'un cdrom, du rseau, ... Ce type de sauvegarde est par contre totalement inefficace contre une panne de disque dur, il faut donc l'utiliser en parallle avec une sauvegarde plus fiable (bande, rseau, ...). Dans l'idal nous devons tout d'abord crer un rpertoire dans lequel nous archiverons toutes nos sauvegardes :

Maintenance

109

Un rpertoire avec des bonnes permissions, c'est dire accessible uniquement par root ou l'utilisateur en charge des sauvegardes. Un rpertoire situ sur un disque dur ddi pour diminuer le risque de perdre ces sauvegardes locales. Ensuite on peut librement utiliser la commande tar, en prenant d'utiliser les bonnes options : root@linux # cd /backups root@linux # tar -czvpf linux_home-and-docs_12-02-2008.tar.gz /home /docs

Table 7.4. Les options de la commande tar


option -p -z -j -v -c A prsent si on souhaite restaurer un fichier/dossier de l'archive : root@linux # mkdir /tmp/dest-back root@linux # tar -C /tmp/dest-back \ > -xzvpf /backups/linux_home-and-docs_12-02-2008.tar.gz home/fred root@linux # ls /tmp/dest-back home/ description Permet de conserver les permissions de tous les fichiers sauvegards Compresse l'archive avec gunzip Compresse l'archive avec bunzip2 Affiche le dtail de l'opration Ordonne tar de crer une archive

Ou si on souhaite simplement restaurer l'archive complte : root@linux # mkdir /tmp/dest-back root@linux # tar -C /tmp/dest-back \ > -xzvpf /backups/linux_home-and-docs_12-02-2008.tar.gz

7.3.2.2. Sauvegardes sur bandes ou cdrom


Pour crire sur bande depuis linux, on peut directement employer la commande tar qui on donnera comme destination le priphrique du lecteur de bande, gnralement /dev/st0. Notons qu'un priphrique de bande ne se comporte pas comme un priphrique de stockage classique, on ne peut pas le monter mais juste lire ou crire un flux de donnes. On peut donc n'envoyer qu'une archive (ou un seul fichier) sur la bande mais on peut par contre mettre autant de fichiers que l'on souhaitent dans l'archive. Si on reprend les exemples prcdents, cela donne : root@linux # tar -czvpf /dev/st0 /home

Maintenance

110

La bande est ensuite rembobine automatiquement. Cependant il est possible d'empcher le rembobinage en utilisant comme priphrique /dev/nst0 au lieu de /dev/st0 afin d'viter que la sauvegarde soit crase si par erreur quelqu'un tente d'crire sur la bande. root@linux # tar -czvpf /dev/nst0 /home

La restauration des donnes se droulent de la mme manire que pour une archive tar classique ceci prs qu'il faut avant s'assurer que la bande est rembobine. Pour le vrifier : root@linux # mt -f /dev/st0 status

mt est une commande qui permet donc de grer l'tat du lecteur de bande, voici la liste des autre options qui sont disponibles :

Table 7.5. la comande mt et ses options


commande et options mt -f <device> retension mt -f <device> rewind mt -f <device> erase description Permet de retendre la bande du lecteur spcifi Permet de rembobin la bande du lecteur spcifi Permet d'effacer la bande du lecteur spcifi

7.3.2.3. Sauvegardes par le rseau


Pour raliser une sauvegarde par le rseau, nous devons nous appuyer sur l'un protocole d'change/transfert de fichiers disponible sous linux : Le protocole SSH avec notamment les commandes scp et ssh. Il est trs scuris et assez simple. Le protocole NFS. Il permet de monter directement un partage sur une machine pour aller lire ou crire les sauvegardes. Le protocole SMB implment avec samba. Idem mais avec des machines Windows. Nous utiliserons le protocole NFS afin de prsenter les diffrents outils pour sauvegarder nos donnes par le rseau. Dans ces outils nous retrouvons toujours tar mais cette fois-ci nous introduirons galement rsync qui permet de faire des copies incrmentales. Si vous souhaitez plus d'informations concernant NFS ou Samba, consultez vos essentiels de LPI101. Nous admettrons que nous disposons d'un partage /mnt/backups qui est le point de montage d'un partage rseau avec NFS. Voyons alors comment effectuer une sauvegarde d'un simpl rpertoire : root@linux # rsync -avz /etc /mnt/backups/linux-server

L'option -a demande rsync de transferrer tous les fichiers en mode archive afin de prserver les permissions, liens symboliques, ... L'option -v permet d'avoir le dtail de l'opration, de voir tous les fichiers copis.

Maintenance

111

L'option -z permet de compresser les fichiers durant le transfert afin d'optimiser la bande passante entre la machine locale et le serveur de sauvegardes. Grce rsync la prochaine sauvegarde se fera de faon incrmentale, c'est dire seuls les fichiers modifis ou les nouveaux fichiers seront copis. Une bonne ide serait ensuite de crer rgulirement une archive , sur le serveur, de la sauvegarde fate avec rsync.

7.3.2.4. Images compltes d'une partition ou d'un disque dur


Cette dernire partie se dtache un peu du programme de la LPI mais est trs interressante pour une sauvegarde d'une partition complte. Il existe nanmoins une grosse contrainte avec cette solution, il faut obligatoirement teindre la machine, le serveur, pour redmarrer sur un livecd, ou tout autre systme d'exploitation lanc depuis un autre mdia que le disque dur dont on souhaite faire une image. La raison est simple : si on fait une sauvegarde d'un systme avec des fichiers encore ouverts, celle-ci ne sera pas cohrente. des solutions comme LVM fournissent un moyen de contourner le problme sans redmarrer mais nous n'en parlerons pas ici. Une fois redmarrer sur un autre systme d'exploitation, on peut utiliser la commande "dd" pour faire une image trs basique d'une partition ou du disque entier : root@linux # dd if=/dev/sda1 of=/mnt/backup/linux-sda1.img

Plus tard, l'image pourra tre restaur sur la mme partition ou sur une partition de taille identique : root@linux # dd if=/mnt/backup/linux-sda1.img of=/dev/sda1

Pour aller plus loin il existe une application nomm partimage qui permet de faire la mme chose de faon plus intelligente : Calcul de l'espace libre/utilis sur la partition pour ne copier uniquement ce qui est ncessaire : au final l'image est moins volumineuse. Compression Mode client/serveur travers un rseau, ...

7.3.3. Automatisation des tches de sauvegardes


Toutes les tches de sauvegardes que nous avons vu peuvent tre utilis dans un shell script et ensuite lanc de faon rgulire l'aide d'un plannificateur de tche comme cron.

112

Chapter 8. Dpannage
Table of Contents
8.1. Avant-propos ............................................................................................................... 112 8.2. Disques de rcupration ................................................................................................. 112 8.2.1. Disquettes de dmarrage ..................................................................................... 112 8.2.2. Cration d'un disque de dmarrage ........................................................................ 113 8.3. Les tapes de dmarrage ................................................................................................ 113 8.3.1. Secteur de dmarrage ......................................................................................... 113 8.3.2. Chargeur de dmarrage ....................................................................................... 113 8.3.3. Noyau ............................................................................................................. 113 8.3.4. Init .................................................................................................................. 114 8.3.5. Processus ......................................................................................................... 114 8.4. Problmes avec le chargeur de dmarrage ......................................................................... 114 8.4.1. LILO ............................................................................................................... 114 8.4.2. Grub ............................................................................................................... 114 8.5. Dpannage .................................................................................................................. 114 8.6. Systme ...................................................................................................................... 115 8.6.1. Variables d'environnement et shell ........................................................................ 115 8.6.2. Environnement du shell ...................................................................................... 116 8.6.3. Les diteurs ...................................................................................................... 116 8.6.4. Paramtres du noyau .......................................................................................... 116 8.7. Configuration de l'environnement .................................................................................... 116 8.7.1. Authorisations ................................................................................................... 116 8.7.2. Crontabs .......................................................................................................... 116 8.7.3. Erreurs au niveau des logs ................................................................................... 116

8.1. Avant-propos
Le troubleshooting demande avant tout de bonnes habitudes, de bonnes mthodes et de la logique. Lorsqu'un problme survient, des fichiers de log sont associs. Gnrallement situs dans le repertoire /var/log/. Si le problme provient d'un daemon, regarder le fichier de configuration il est possible que le chemin d'un fichier de log bien particulier associ au daemon soit associ. Autre chose sur les daemons, nombres de services proposent des outils de tests comme testparm pour samba, apachectl pour apache. NE PAS OUBLIER DE LES UTILISER. Les modes verbeux des daemon sont aussi trs utiles. Ils sont l pour surveiller le comportement en temps rel et peut vous apporter des rponses. Durant l'analyse du problme bien chercher savoir quel est la source de ce problme: le noyau? le systme? le daemon? la configuration? Lorsque vous aurez bien situ la source du problme alors vous pourrez vous atteler le rparer. Pour cela vous pourrez utiliser le man, les newsgroups, ou internet. Parfois c'est un bug logiciel connu des patchs sont disponibles.

8.2. Disques de rcupration


8.2.1. Disquettes de dmarrage

Dpannage

113

Si vous ne possdez pas de disquettes de dmarrage, vous pouvez en crer une facilement grce la commande dd. root@linux ~ # dd if=/mnt/cdrom/images/boot.img of=/dev/fd0

Il convient bien entendu de remplacer les points de montages dans cette commande par ceux appropris.

8.2.2. Cration d'un disque de dmarrage


8.2.2.1. Systmes de type Red Hat
Pour crer un disque de dmarrage sur un systme de type Red Hat, il suffit d'indiquer la version du kernel que l'on souhaite dmarrer la commande mkbootdisk. Il vous sera demander d'insrer une disquette pour terminer le processus. root@linux ~ # mkbootdisk 2.6.25.6smp

8.2.2.2. Systmes de type Debian


Les systmes de type Debian fournissent eux aussi une commande permettant de crer facilement un disque de dmarrage. Il faut cependant donner en argument le nom du fichier kernel que l'on souhaite utiliser pour dmarrer. root@linux ~ # mkboot vmlinux

8.3. Les tapes de dmarrage


Pendant le dmarrage, des erreurs peuvent se produire diffrents niveaux.

8.3.1. Secteur de dmarrage


Une erreur du secteur de dmarrage intervient juste aprs le BIOS et signifie que ce secteur ne peut tre trouv ou charg. Plusieurs cas sont possibles : Le secteur de dmarrage est corrompu et doit tre rinstall. La partition active ne possde pas de secteur de dmarrage. Une mauvaise partition a t marque comme active.

8.3.2. Chargeur de dmarrage


En cas d'erreur ce niveau, votre chargeur de dmarrage (Lilo ou Grub) vous indiquera une erreur.

8.3.3. Noyau

Dpannage

114

Une erreur de chargement du noyau peut intervenir dans plusieurs cas : Impossibilit de trouver le noyau ou un module. La partition racine ne peut tre lues.

8.3.4. Init
Il arrive parfois que Init ne puisse tre lanc ou qu'il ne puisse pas rentrer dans un certain runlevel. Dans ces cas l, la configuration d'Init (/etc/inittab) comporte souvent une erreur.

8.3.5. Processus
Si un processus ne peut tre dmarr pendant le dmarrage de votre machine, c'est souvent l'application elle mme qui est en cause. Il faudra surement revoir le fichier de configuration de l'application.

8.4. Problmes avec le chargeur de dmarrage


Un des meilleurs moyens pour rsoudre une erreur au niveau du chargeur de dmarrage est simplement de regarder les diffrents messages d'erreurs qui sont affichs.

8.4.1. LILO
L : Le premier stage du chargeur de dmarrage est charg et dmarr. LI : Le second stage est charg. LIL : Le second stage est dmarr. LIL? : Le second stage a t charg une adresse incorrecte. LIL- : La table de description est corrompue. LILO : LILO a t charg avec succs. Une erreur courante avec LILO est d'oublier de le rinstaller dans la MBR aprs chaque modification du fichier de configuration : root@linux ~ # /sbin/lilo

8.4.2. Grub
Grub est compos de 3 stages : Stage 1, Stage 1.5 et Stage 2. Gnralement, une erreur la premire tape rsulte de l'impossibilit de situer les stages suivants. Une erreur au Stage 2 vous affichera un message d'erreur. Pour la rsoudre, il est conseill de consulter la page suivante : http://www.gnu.org/software/grub/manual/html_node/Stage2-errors.html#Stage2-errors .

8.5. Dpannage

Dpannage

115

Le dpannage d'un systme peut se rvler trs complexe. Voici quelques conseils qui peuvent se rvler utiles : Ne jamais se prcipiter sur la conclusion. Il convient toujours de bien analyser le problme. Vous avez besoin d'une description complte et dtaille du problme. Il est toujours plus simple de rsoudre un problme que vous arriv reproduire. En cas de problmes matriels, le fichier de logs /var/log/dmesg peut vous aider. Vous pouvez le consulter l'aide de la commande dmesg. Il contient tous les messages kernel. La commande lsdev vous fournira aussi de nombreuses informations sur votre matriel en se basant sur le contenu du rpertoire /proc. Vous pouvez aussi utiliser lspci pour afficher des informations sur les priphriques connects vos bus PCI. Si votre matriel semble fonctionner correctement, le noyau peut tre la cause de vos problmes. Vous pouvez facilement lister les modules actuellement chargs grce la commande lsmod. Suivant le rsultat, vous pourrez dcider d'ajouter ou de supprimer un module avec insmod ou rmmod. Vous pouvez aussi utiliser la commande modprobe qui pour objectif de remplacer lsmod, insmod ou rmmod. Cette commande permet de tenir compte des dpendances entre les diffrents modules. Pour tous les autres problmes, un bon point de dpart peut tre les logs situs dans /var/log. Vous pouvez aussi tenter de lancer un programme en utilisant ltrace ou strace pour afficher ce que le programme fait actuellement au moment o une erreur se produit.

8.6. Systme
Dans certains cas, le problme ne vient pas forcment du matriel ou d'un programme en particulier. Le systme d'exploitation lui mme peut tre en cause.

8.6.1. Variables d'environnement et shell


Certains programmes utilisent des variables pour modifier leur comportement. Voici certains variables d'environnement importantes :

Table 8.1. Variables d'environnement courantes


Variables EDITOR LANG PAGER PATH PS1 SHELL TERM UID USER Description Editeur utilis lorsque l'intervention de l'utilisateur est requise. Langue utilise par le systme Programme utilis pour mettre en page la sortie de certaines commandes comme less, more, etc .... Liste des rpertoires contenant des xcutables Prompt Shell courant Type de terminal utilis (linux, vt100) UID de l'utilisateur courant Nom de l'utilisateur courant

Dpannage

116

Bash est le shell intractif de login le plus connu et le plus utilis mais il existe d'autre possibilits. Le fichier / etc/shells contient la liste des shells actuellement installs sur votre machine.

8.6.2. Environnement du shell


Le shell est configur grce des variables d'environnement qui sont dfinies dans diffrents fichiers de configuration. Le fichier de configuration globale le plus courant est /etc/profile. Toute la configuration de ce fichier est applique tous les utilisateurs mme si ils peuvent passer outre en utilisant les fichiers de configuration stocks dans leurs rpertoires personnels qui sont lus juste aprs.

8.6.3. Les diteurs


Il existe de nombreux diteurs de texte sous Linux mme si deux diteurs dominent : vi et emacs. Vi existe depuis de nombreuses annes. Il ncessite trs peu de ressources pour fonctionner et est utilisable sans touches de navigation. Une version amliore de vi existe apple VI Improved qui ajoute de nombreuses choses comme le copier/coller, une aide intgre, etc ... Emacs est bas sur le langage ELISP. Il consomme beaucoup plus de ressources que vi mais permet de faire de nombreuses choses comme lancer des jeux ou lire vos mails. Peut importe quel diteur vous prfr, vous devez matriser vi qui est install sur la majorit des machines.

8.6.4. Paramtres du noyau


Il est possible de modifier rapidement le comportement du noyau en modifiant certains paramtres. Ces paramtres sont stocks dans le systme de fichiers /proc. Vous pouvez aussi vous aider de la commande sysctl pour visualiser ces paramtres sans naviguer dans l'arborescence de /proc.

8.7. Configuration de l'environnement


8.7.1. Authorisations
Lorsqu'un problme d'autorisations survient, le problme provient souvent des fichiers spciaux comme / etc/passwd, /etc/shadow, /etc/group. Sur certaines distributions plus rcentes, d'autres systmes d'authentification comme PAM ou SELInux.

8.7.2. Crontabs
Un problme avec cron peut intervenir lorsqu'une tche ne peut tre xcuter suite un problme de permissions. Il se peut qu'un simple utilisateur n'ai pas les droits de lancer un script. Il convient aussi de vrifier le contenu des fichers /etc/cron.allow et /etc/cron.deny. Si un utilisateur est situ dans ce dernier, il n'aura pas le droit d'xcuter des tches rcurrentes.

8.7.3. Erreurs au niveau des logs


La configuration des logs se fait gnralement avec le fichier /etc/syslog.conf ou / etc/syslog-ng/syslog-ng.conf. C'est dans ce fichier que sont gnralement prsentes les erreurs qui empchent d'obtenir des logs.

Vous aimerez peut-être aussi