Configuration matérielle et logicielle
Ce module portera sur la configuration des composants qui ont besoin du Noyau ainsi que les outils logiciels.
État :
Sommaire
Pré-requis
- Niveau LPIC 1
1. Le RAID logiciel
RAID est l'acronyme pour «Redundant Array of Inexpensive Disks» et a été initialement conçu pour combiner des disques durs ensemble. RAID peut soit augmenter la vitesse ou la fiabilité selon le niveau de RAID utilisé.
Les différents RAID
Disques de rechange
Si des disques de rechange sont configurés, ils seront utilisés dans la matrice du RAID, dès que l'un des disques de la matrice sera en panne .
Noyau et composant logiciel
Le raid logiciel est traité par les modules du Noyau suivant :
RAID0 |
raid0.o |
||
RAID1 |
raid1.o |
||
RAID4 ou RAID5 |
raid5.o |
Le paquet raidtools permettra d'avoir ces outils commun :
Outils |
Description |
/sbin/lsraid |
exécuter des requêtes sur les disque du raid |
/sbin/mkraid |
Créer un périphérique md depuis les instructions donnés dans /etc/raidtab |
/sbin/raidstart et raidstop |
démarre ou stop le périphérique md |
Une fois qu'un périphérique a été créer avec succès, les informations peuvent être trouver dans : /proc/mdstats
Démarrer depuis un périphérique RAID racine (exercice)
1.Créer 2 nouvelles partitions de la même taille que le périphérique racine de type Linux raid autodetect.
On peut faire une nouvelle partition racine plus petite en vérifiant l'espace réel utilisé sur le périphérique racine actuel
df -h / Filesystem Size Used Avail Use% Mounted on /dev/hda7 286M 71M 201M 27% /
Utiliser fdisk pour créer les nouvelles partitions (exemple /dev/hda14 et /dev/hda15), redémarrer.
2.Configurer un RAID 1 logiciel sur ces partitions
/etc/raidtab |
raiddev /dev/md0 raidlevel 1 nr-raid-disks 2 nr-spare-disks 0 chunk-size 4 persistent-superblock 1 device /dev/hda14 raid-disk 0 device /dev/hda15 raid-disk 1
Utiliser l'outil raidtools pour créer la grappe et la démarrer :
mkraid /dev/md0 raidstart /dev/md0
Créer un système de fichier EXT2 sur le nouveau périphérique et monter celui ci sur /mnt/sys:
mke2fs /dev/md0 mkdir /mnt/sys mount /dev/md0 /mnt/sys
3.Copier tous les fichiers du périphérique racine actuelle vers le nouveau périphérique racine :
(tar lcvf - /) | (cd /mnt/sys; tar xvf -)
L'option l de tar est une instruction pour rester sur le même système de fichier.
4.Préparer le redémarrage
Le script mkinitrd va lire /etc/raidtab et /mnt/sys/etc/fstab pour personnaliser un initrd.
Éditer /mnt/sys/etc/fstab et changer le périphérique racine en /dev/md0 tout comme le système de fichier en ext2.
/mnt/sys/etc/fstab |
/dev/md0 / ext2 defaults 1 1
Créer l'initrd et appeler le initrd-raid.img
mkinitrd --fstab=/mnt/sys/etc/fstab /boot/initrd-raid.img $(uname -r)
Décompressez /boot/initrd-raid.img et montez le sur un périphérique boucle pour vérifier que Linuxrc va insérer les bon modules.
Reconfigurer LILO/GRUB pour changer les lignes suivantes :
Simple lilo.conf:
image=/boot/vmlinuz-2.4.22-1.2115.nptl initrd=/boot/initrd-raid.img read-only root=/dev/md0 label=linux-raid
2. Configuration de LVM
Management de volume logique (LVM)
Le framework du management de volume logique permet de regrouper les périphériques bloc différent (Disques, partitions, RAID ...) ainsi qu' un seul appareil plus grand, le groupe de volumes (VG).
Le dispositifs individuels utilisés pour former un groupe de volumes sont appelés volumes physiques (PV).
Les volumes physiques une fois regroupés dans un groupe de volumes perdent leur caractère individuel.
En revanche, le groupe de volumes entier est divisé en étendues physiques (PE) de taille fixe (4 Mo par défaut) à partir de laquelle les volumes logiques (LV) sont créés. Un volume logique peut être considéré comme une partition.
Noyau et composant logiciel
Le module LVM du noyau est lvm-mod.o. Les outils logiciels sont installés par le paquet LVM qui prévoit en particulier /sbin/vgscan. Cette commande va démarrer l'environnement LVM par scanne de tous les groupes de volumes et construit le fichier /etc/lvmtab ainsi que les bases de données dans /etc/lvmtab.d qui sont utilisés par tous les autre outils LVM.
Principaux outils LVM
PV tools: |
pvcreate, pvmove, pvchange, pvdisplay, pvscan ... |
VG tools: |
vgcreate, vgremove, vgchange, vgdisplay, vgscan ... |
LV tools: |
lvcreate, lvextend, lvreduce, lvremove, lvchange, lvscan ... |
Nous n'aurons pas besoin d'utiliser ou de connaître tous les outils ci-dessus. Nous allons plutôt mettre l'accent sur les différents composants de LVM (comme représenté sur le schéma) et les commandes nécessaires pour créer ces composants: pvcreate, vgcreate et lvcreate.
Exemple:
Créer un groupe de volume appelé VolumeA avec 3 volumes physiques ( 3 partitions dans ce cas ) et créer un volume logique appelé lv0 de taille initial de 150 Mb.
1.Démarrer vgscan pour créer le fichier /etc/lvmtab
2.Créer 3 nouvelles partitions (/dev/hda16,/dev/hda17,/dev/hda18) de 100 Mb chacune. Assurez vous de marquer les partitions en type 8e (Linux LVM). Puis redémarrer.
3.Préparer les volume physiques
pvcreate /dev/hda16 pvcreate /dev/hda17 pvcreate /dev/hda18
4.Créer un groupe de volume appelé volumeA avec les volume physiques ce dessus:
vgcreate volumeA /dev/hda16 /dev/hda17 /dev/hda18
Cela créera un répertoire appelé /dev/volumeA/. La taille par défaut de 4 Mo sera utilisés, on peut changer cela avec l'option -s.
5.Créer un volume logique appelé lv0 de taille de 150 Mb sur ce groupe de volume
lvcreate -L 150M -n lv0 volumeA
Ceci va créer un périphérique bloc /dev/volumeA/lv0
6.Faire un système de fichier sur lv0 et monter celui ci dans /mnt/lvm
mkfs -t ext3 /dev/volumeA/lv0 mkdir /mnt/lvm mount /dev/volumeA/lv0 /mnt/lvm
Ce ne serait pas très différent des autres types de partitions si elle n'avait pas la possibilité de changer la taille du volume logique à tout moment.
Première vue, comment réduire le volume logique lv0 existant de 150 Mb avec l'outil esfsadm installé par le paquet lvm.
umount /mnt/lvm e2fsadm -L 25 /dev/volumeA/lv0
Informations
L'option -L se réfère à la taille en mégaoctets. C'est le cas avec la plupart des outils LVM. L'option -l peut être utilisée pour spécifier les extensions logiques (LE) à la place. La taille par défaut d'une LE est de 4MB.
La section suivante montre comment ajouter un nouveau volume physique (un disque) à un groupe de volumes et montre comment un volume logique existant peut être agrandie en incluant une étendue physique disponible dans le groupe de volume lui-même. Une fois cela fait, l'outil e2fsadm va redimensionner le système de fichiers à travers le volume logique.
Extension du groupe de volume avec un dispositif en RAID 0
Jusqu'ici nous avons : VG = /dev/hda16 + /dev/hda17 + /dev/hda18 et nous voulons ajouter un périphérique en RAID0 a celui ci.
1.Créer 3 partitions de plus (/dev/hda19, /dev/hda20 et /dev/hda21) de taille de 50Mb et de type "Linux Raid autodetect"(fd) - Redémarrez!
2. Éditer /etc/mtab et ajouter le périphérique RAID0 suivant :
raiddev /dev/md1 raid-level 0 nr-raid-disks 3 nr-spare-disks 0 persistent-superblock 1 chunk-size 4 device /dev/hda19 raid-disk 0 device /dev/hda20 raid-disk 1 device /dev/hda21 raid-disk 2
3.Démarrer le périphérique raid:
mkraid /dev/md1 raidstart /dev/md1
4. Ajouter ce périphérique au groupe de volume volumeA
Avant d'ajouter le périphérique au groupe de volume lancer pvscan pour voire quel sont les volumes physiques actif. Noter que /dev/md1 n'est pas listé.
Nous allons maintenant préparer /dev/md1 comme un PV (volume physique):
pvcreate /dev/md1
Quand on lance pvscan la sortie devrait ressembler a ceci. Noter que /dev/md1 est maintenant listé.
pvscan pvscan -- reading all physical volumes (this may take a while...) pvscan -- ACTIVE PV "/dev/md1" is in no VG [305.62 MB] pvscan -- ACTIVE PV "/dev/hda10" of VG "volumeA"[96 MB / 0 free] pvscan -- ACTIVE PV "/dev/hda11" of VG "volumeA"[96 MB / 0 free] pvscan -- ACTIVE PV "/dev/hda12" of VG "volumeA"[96 MB / 84 MB free] pvscan -- total:4[611.46 MB] /in use:3[305.83 MB] /in no VG:1 [305.62MB]
Ensuite, nous allons ajouter le périphérique /dev/md1 au groupe de volume volumeA
vgextend volumeA /dev/md1
A ce stade, le groupe de volumes a quatre dispositifs:
VolumeA = /dev/hda10 + /dev/hda11 + /dev/hda12 + /dev/md1 |
Nous pouvons prendre 50 Mo de /dev/md1 et les ajouter à lv0 (démonter le premier volume)
lvextend -L +50 /dev/volumeA/lv0 /dev/md1
Le volume original LV0 avait 150 méga-octets. Le drapeau + en face de la taille demandée permet d' ajouté 50 Mo sur le volume logique, il fait environ 200 méga-octets. Mais nous n'avons pas étendu le système de fichiers à travers l'ensemble du volume logique pour le moment.
La sortie de lvscan affiche 80 Mo disponibles. Ceci correspond au 25 Mb redimensionné précédemment avec e2fsadm plus les 50 Mb ajouté par lvextend ci-dessus.
lvscan lvscan -- ACTIVE "/dev/volumeA/lv0" [80 MB] lvscan -- 1 logical volumes with 80 MB total in 1 volume group lvscan -- 1 active logical volume
La prochaine commande va étendre le système de fichier a 80Mb:
e2fsadm -L 80 /dev/volume/lv0
Si vous remontez ce volume dans /mnt/lvm vous pourrez voire le nouvelle espace disponible avec df.
Attention redémarrage
Les outils LVM nécessite le module lvm-mod.o et dans notre cas le métapériphérique /dev/md1. Vous avez besoin de créer a un nouveau initrd avec mkinitrd ou ajouter les lignes suivantes au nouveau initrd:
insmod /lib/lvm-mod.o
raidautorun /dev/md1
Le groupe de volume est alors activé avec vgscan a partir du script rc.sysinit.
Démarrage a partir d'un volume logique racine
Comme pour le RAID logiciel, nous allons étudier certaines questions que nous devons prendre en compte lors l'utilisation de LVM sur le périphérique racine. Premièrement, assurez-vous que le volume que nous avons créé est déjà monté. Si ce n'est pas alors faite le :
mount /dev/volumeA/lv0 /mnt/lvm
Ensuite nous archivons le périphérique racine comme nous l'avons fait avec le RAID :
tar clvf - / | (cd /mnt/lvm/; tar xvf -)
Éditer /mnt/lvm/etc/fstab et entrer :
/dev/volumeA/lv0 / ext2 defaults 0 1
Éditer /etc/lilo.conf ou /etc/grub.conf pour ajouter une nouvelle entrée ou le Noyau pointe sur le nouveau volume périphérique racine. Pour un Noyau 2.4.22 un entrée additionnel dans /etc/grub.conf ressemble a ceci :
title lvm-root root (hd0,1) kernel /vmlinuz-2.4.22 ro root=LABEL=/ initrd /initrd-2.4.22-lvm.img
Tout ce que nous avons besoin est l'intrd initrd-2.4.22-lvm.img .
Encore une fois, nous allons lancer mkinitrd avec –-fstab=<fstab> lequel nous allons utiliser pour que le script lise notre nouveau fichier /mnt/lvm/etc/fstab.
Nous testons ceci :
mkinitrd --fstab=/mnt/lvm/etc/fstab /boot/initrd-lvm.img $(uname -r)
Si nous montons l'initial ram disk nous pouvons voire ce qui se passe en regardant le script Linuxrc.
linuxrc |
echo "Loading lvm-mod.o module" insmod /lib/lvm-mod.o echo Creating block devices mkdevices /dev echo Scanning logical volumes vgscan echo Activating logical volumes vgchange -ay ----couper---
3. Gravure de CD et Linux
Détection du matériel
Les outils disponibles en ligne de commande pour graver des CD suppose que le graveur de CD est un appareil SCSI. Cependant, la plupart des graveurs de CD moins chers sont les périphériques IDE. Le Noyau 2.4 permet de contourner ceci en fournissant un module ide-scsi.o pour gérer les périphériques de gravure de CD.
Si vous lancer cdrecord avec l'option -scanbus vous verrez que l'outil va chercher un périphérique SCSI.
Si le graveur de CD est attaché comme un master secondaire (/dev/hdc) nous verrons l'entrer suivante dans /etc/modules.conf qui activera le module ide-sci pour ce périphérique.
/etc/modules.conf |
options ide-scsi=/dev/hdb options ide-cd ignore=hdb alias scd0 sr_mod pre-install sg modprobe ide-scsi # load ide-scsi before sg pre-install sr_mod modprobe ide-scsi # load ide-scsi before sr_mod pre-install ide-scsi modprobe ide-cd # load ide-cd before ide-scsi
Le peripherique sera vu comme /dev/scd0 et peut etre ajouté a /etc/fstab avec lequel il peut être monté.
La commande suivante affiche le matériel qui a été correctement détecté:
cdrecord -scanbus Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 J�rg Schilling Linux sg driver version: 3.1.24 Using libscg version 'schily-0.7' cdrecord: Warning: using inofficial libscg transport code version (schily - Red Hat-scsi-linux-sg.c-1.75-RH '@(#)scsi-linux-sg.c 1.75 02/10/21 Copyright 1997 J. Schilling'). scsibus0: 0,0,0 0) 'PHILIPS ' 'CDRW48A ' 'P1.3' Removable CD-ROM 0,1,0 1) * 0,2,0 2) * 0,3,0 3) * 0,4,0 4) * 0,5,0 5) * 0,6,0 6) * 0,7,0 7) *
Graver une image ISO
L'outil cdrecord permet d'enregistrer des données ou des fichiers audio.
cdrecord [ general options ] dev=device [ track options ] track1...trackn
Le périphérique
De la sortie de cdrecord -scanbus nous allons utiliser le périphérique dev=0,0,0 pour nos exemples.
Options général
speed Spécifie la vitesse de gravure (ex: speed=8) -eject éjecte le CD quand l'enregistrement est terminé -multisession démarre plusieurs sessions d'enregistrement
options de piste
-data La piste contient des données -audio La piste est un fichier audio (.au,.wav ou .cdr)
Enregistrement de données
cdrecord -v speed=2 dev=0,0,0 -data cd_image.iso
Enregistrement audio
cdrecord -v speed=2 dev=0,0,0 -audio *.wav
Enregistrement Mixte
cdrecord -v speed=2 dev=0,0,0 -data cd_image.iso -audio *.wav
Système de fichier ISO9660 et gravure de CD
Issue de Wikipedia :
ISO 9660, une norme publiée par l'Organisation internationale de normalisation, définit un système de fichiers pour les médias CD-ROM. Il vise à soutenir les différents systèmes d'exploitation tels que Microsoft Windows,Mac OS et les systèmes qui suivent les spécifications Unix, afin que les données peuvent être échangées. Niveaux et restrictions : Il y a différents niveaux à cette norme. Niveau 1 Les noms de fichiers sont limités à huit caractères avec une extension de trois caractères, lettres majuscules,chiffres et soulignent; profondeur maximale est de huit des répertoires Niveau 2 Les noms de fichier peuvent être jusqu'à 31 caractères Niveau 3 Les fichiers autorisés à être fragmentés (principalement pour permettre l'écriture par paquets, ou d'enregistrement de CD supplémentaire). Extensions : Il existe des extensions commun à la norme ISO 9660 pour faire face aux limitations. Rock Ridge soutient la préservation des permissions Unix / Linux et ASCII ; Joliet prend en charge les noms enregistrés dans Unicode, ce qui permet presque tous les caractères à être utilisé, même à partir de scripts non latins; El Torito permet que le CD soit amorçable. L' ISO 13490 est essentiellement comme l'ISO 9660 avec le soutien de multisession.
Création d'une image CD
Stockez toutes les données qui doivent être copiés dans un répertoire séparé (sauvegardé par exemple /). Nous avons ensuite nécessité de créer une image iso de ce répertoire comme suit:
mkisofs -o baskups-image.iso backups/
Vérifier le fichier image par montage comme un périphérique boucle :
mount -o loop backups-image.iso /mnt ls /mnt umount /mnt
Enfin, gravez le CD avec cdrecord. De la sortie de cdrecord-scanbus sur le page précédente on voit que le graveur de CD est considéré comme dev = 0,0,0 nous avons donc:
cdrecord -v dev=0,0,0 backups-image.iso
4. CD-ROM de démarrage
Pour permettre au BIOS le démarrage à partir d'un CD-ROM, une extension de la spécification ISO-9660 appelé El Torito a été écrit en 1995 par Phoenix Technologies et IBM. Cette spécification utilise l 'ISO-9660 et fera que le BIOS permette le démarrage a partir d' une image disque à l'aide d'une émulation de disquette ou de disque dur.
La norme ISO -9660 spécifie qu'un CD-ROM doit contenir un nombre quelconque de descripteurs de volume. La spécification El Torito ajoute qu' un tel descripteur est appelé Boot Record.
le Boot record pointe vers un catalogue de démarrage qui peut contenir un liste des entrées de démarrage. Le catalogue de démarrage contient une entrée par défaut qui pointe vers une image de démarrage disquette ou disque dur.
L'outil mkisofs peut prendre une image de démarrage (disquette ou disque dur) et ajouter l'image dans le répertoire racine du CD-ROM (habituellement /boot).
Utiliser l'emulation de disque
En supposant que nous créons le CD dans un répertoire appelé CD-root, nous pouvons créer une image disque de démarrage avec dd.
dd if=/path/to/boot/image of=<CD-root>/boot/boot.img
L'image ISO est alors créé avec la commande suivante:
mkisofs -b boot/boot.img -c boot/boot.catalog -o boot-cd.iso .
Alternative sans l'émulation de disque
Il est possible de faire un CD bootable en utilisant le chargeur de démarrage ISOLINUX.
ISOLINUX est un chargeur de démarrage pour Linux/i386 qui fonctionne sur l'ISO 9660/El Torito dans un mode sans émulation. Cela évite la nécessité de créer une image d'émulation de disque avec espace limité (pour l'émulation de disquette) ou des problèmes de compatibilité (pour l'émulation de disque dur.)
Le paquet syslinux va installer le chargeur de démarrage isolinux.bin. En fonction de la distribution, il peut être trouvé dans /usr/lib/syslinux/ ou /usr/share/syslinux/.
Vous devez ensuite créer un CD amorçable.
1.Faire un répertoire dans /tmp
mkdir /tmp/boot-cd
2.Copier les fichiers nécessaires
cp /usr/share/syslinux/isolinux.bin /tmp/boot-cd cp /boot/vmlinuz-<full-version> /tmp/boot-cd/vmlinuz cp /boot/initrd-<full-version>.img /tmp/boot-cd/initrd
3.Éditer le fichier /tmp/boot-cd/isolinux.cfg avec les éléments suivant :
DEFAULT linux LABEL linux KERNEL vmlinuz APPEND initrd=initrd root=/dev/???
4.Créer l'image ISO avec l'option -no-emul-boot
cd /tmp/boot-cd/
mkisofs -o ../boot-cd.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./
Copier un CD de démarrage
Dans cette section nous supposons que nous avons déjà un CD-ROM bootable. Par exemple le premier disque d'un coffret de distribution Linux.
Insérez le CD bootable dans le lecteur de CD-ROM. Ne pas monter le disque!
Puis simplement écrire :
dd if=/dev/cdrom of=distro-inst1.iso
Cela va créer une image ISO du disque appelé distro-inst1.iso et peut être écrite dans un disque vierge avec cdrecord.
5. Configurer un périphérique PCMCIA
L'utilitaire cardmgr surveille les fentes PCMCIA. Il va scanner le fichier /proc/devices a la recherche d'une entrée pcmcia. Si cette entrée n'est pas là, cardmgr sera pas utilisé.
Afin d'obtenir que le Noyau écrive une entrée dans /proc/devices, il est nécessaire de charger le module correspondant. Seulement quand le support du Noyau sera activé cardmgr fonctionnera correctement. les noms des modules sont conservés dans les fichiers de configuration suivants:
Pour les distributions de type RedHat: /etc/sysconfig/pcmcia
Pour les distributions de type Debian: /etc/pcmcia.conf
Le module principal est appelé pcmcia_core et utilise deux autres modules appelés yenta_socket et DS.
On peut démarrer cardmgr en ligne de commande après avoir insérer les modules précédents :
modprobe pcmcia_core modprobe yenta_socket modprobe ds cardmgr cardmgr[18772]: watching 2 sockets
Mais la meilleure solution est d'utiliser le script rc fournit par le paquet pcmcia-cs:
/etc/rc.d/init.d/pcmcia restart
Le fichier de configuration avec une base de donnée des périphériques disponibles (modems, carte wifi, carte mémoire ...) est appelé /etc/pcmcia/config.
Pour obtenir des informations au sujet de votre carte pcmcia, utilisé l'utilitaire cardctl. Mettre la carte dans le slot pcmcia et lancer :
cardctl info ....Couper.... PRODID_1="Xircom" PRODID_2="CardBus Ethernet 10/100 + Modem 56" PRODID_3="CBEM56G" ....Couper....
On peut vérifier que cette carte se trouve dans /etc/pcmcia/config. Le tableau suivant montre les informations pertinentes au sujet de cette carte, en particulier le module nécessaire xircom_cb .
/etc/pcmcia/config - section relative à la carte numérisée |
card "Xircom CBEM56G-100 CardBus 10/100 Ethernet + 56K Modem" version "Xircom", "*", "CBEM56G" bind "xircom_cb" to 0