Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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
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
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
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.
Noyau
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.
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.
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.
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.
http://www.kernel.org
Noyau
Il suffit ensuite de naviguer dans les menus et activer les options souhaites.
Noyau
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.
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.
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).
Note
Comme vous pouvez le constater, il s'agit ici d'un noyau compil pour processeur de type x86
Noyau
11
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.
--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;
Cration d'une image initrd avec ajout du module sata_sil pour le support des cartes SATA silicon image :
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.
Noyau
13
# 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.
Noyau
14
Note
Sous certaines distributions, boot/grub/grub.conf. le fichier de configuration de Grub peut tre /
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.
Noyau
15
Commande
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
Noyau
16
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
Dmarrage
18
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.
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
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
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.
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 :
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.
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
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.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
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.
Systmes de fichiers
27
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
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.
Systmes de fichiers
28
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.
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
nom_de_la_table options
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
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
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
Systmes de fichiers
33
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
Systmes de fichiers
34
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
Systmes de fichiers
35
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
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).
Matriel
38
Interface du BIOS du contrleur pas trs "user-friendly" par rapport une GUI.
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.
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.
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.
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
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
[root@linux ~]# mdadm --create /dev/md0 --level=raid5 --raid-devices=3 \ /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
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
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
Matriel
44
[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 -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.
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 :
Matriel
46
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
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
Matriel
48
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
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
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
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
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
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.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
Matriel
53
Puis l'on cr un groupe de volumes : root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda /dev/hdb /dev/hdc
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
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%
Matriel
55
2G 1G 3G
100% 100%
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
[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
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
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.
Matriel
58
Size 40912 43168 16512 3716 31936 7360 50384 8332 22088 5440
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
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 [...]
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)
Matriel
61
-c[0|1|3]
-d -g -i -k
-mnum
-r -S -u
-v -y -z
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
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
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.
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.
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
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.
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.
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 :
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.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.
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.
La commande rpcinfo permet de dialoguer avec un serveur RPC (visualisation des tables...). [root@linux ~]# rpcinfo -p nom_dhte
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
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)
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.
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
Avantage : rapidit pour l'utilisateur Inconvnient : dangereux, en cas de problme, lutilisateur na aucune certitude que les changements ont bien t pris en compte.
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.
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.
NFS
74
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
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.
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
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.
NFS
76
Note
Selon la distribution utilise d'autres options peuvent tre disponibles
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
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>
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
'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).
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.
Samba
83
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
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.
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
p-node
m-node (mixed)
h-node (hybrid)
Cette commande est galement un ftp - like. Elle permet de se connecter au partage et dexcuter des commandes dans lenvironnement du partage.
Samba
86
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:
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.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.
Samba
88
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.
Samba
89
Pour dfinir les utilisateurs valides nous pouvons utiliser plusieurs symboles:
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
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
En pressant la touche "entrer" vous pourrez voir tous les paramtres entrs dans votre fichier de configuration.
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
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
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.
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.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); };
Maintenance
97
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 :
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); };
Maintenance
98
Vous pouvez aussi voir les logs en temps rel grce l'option -f de la commande tail. [root@linux ~]# tail -f /var/log/auth
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.
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
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.
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 :
-ba <file.spec>
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.
%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.
-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
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.
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
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.
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
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
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 :
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.
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, ...
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.
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.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.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.
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.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.