5. Inclure les mises à jour

Il y a trois étapes, les deux premières étant (pratiquement) identiques pour toutes les versions, alors que la dernière change un peu en raison des modifications de l'installateur anaconda :

  1. Corriger les modes de protection des fichiers

  2. Remplacer les RPM mis à jour

  3. Reconstruire l'installateur

Pour incorporer les mises à jour, vous aurez besoin d'avoir un accès en écriture au répertoire de la distribution à partir d'une machine Linux, avec une version fonctionnelle de rpm installée, alors que pour reconstruire l'installateur anaconda, vous aurez besoin d'utiliser une version du Linux RedHat égale à celle pour laquelle vous reconstruisez l'installateur (sinon la procédure échouera). Si vous maintenez à jour un miroir du répertoire updates, vous pourrez à tout moment produire un CD incluant les dernières mises à jours en répétant ces étapes.

5.1. Corriger les modes de protection des fichiers

Durant le processus d'installation des versions jusqu'à la 6.2 incluse, certains programmes sont lancés directement depuis le CD. Malheureusement, le programme FTP ne préserve pas toujours les droits des fichiers et des répertoires copiés. Donc, il est nécessaire de s'assurer que les droits d'exécution sont bien donnés aux programmes, scripts shells et bibliothèques partagées, avant que le répertoire ne soit gravé sur le CD. Ceci est fait en lançant le script updatePerm.sh sur votre copie locale de la distribution. C'est réellement nécessaire pour les versions 6.2 et précédentes. La seule partie utile de cette procédure pour les versions 7.3, 8.0 et 9 est la mise à jour des droits des répertoires, le reste ne fera aucun mal et cela maintient les choses cohérentes. Ce script est quasi-identique au script updatePerm inclus dans la version précédente de ce guide pratique, seuls quelques changements mineurs ont été réalisés. Avant d'utiliser ce script, vous devez paramétrer le fichier rhcd.conf et exporter la variable RHCDPATH pointant vers le répertoire où se trouve ce fichier.

$ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
$ sh updatePerm.sh

5.2. Remplacer les RPM mis à jour

Le script updateCD.sh copie tous les nouveaux fichiers du répertoire update vers le répertoire RPMS (et SRPMS). Le script utilise le programme rvc qui a été présenté dans la section comparer les versions des RPM pour déterminer quels sont les paquets du répertoire update qui sont plus récents. Les paquets plus anciens sont déplacés dans le répertoire ${OLDDIR}. Si la variable CHECKSIG est positionnée à « yes », tous les paquets de l'arborescence principale verront leur signature vérifiée. Si la vérification de signature d'un paquet échoue (le type de vérification dépend de la variable USEGPG du fichier rhcd.conf), celui-ci est déplacé dans le répertoire OLDDIR avec une extension ajoutée, « CDcheckfail ».

Avant d'utiliser ce script, vous devrez paramétrer le fichier de configuration rhcd.conf et exporter la variable RHCDPATH pointant vers le répertoire où se trouve ce fichier.

$ export RHCDPATH=/home/luigi/tmp/rhcd-scripts
$ sh updateCD.sh
[Note] Note

Après avoir incorporé les mises à jour dans le répertoire principal RedHat/RPMS, votre copie de la distribution n'est plus un miroir du site de la distribution RedHat. En fait, elle est plus à jour ! Donc, si vous essayez de resynchroniser votre distribution en utilisant mirror, les anciennes versions des paquets RPM qui ont été mis à jour seront téléchargées une nouvelle fois et les mises à jour supprimées. La procédure basée sur bash et wget ne souffre pas de ce problème, mais laissera l'arborescence principale dans un état incohérent. Les anciens et les nouveaux paquets seront dans ce cas mélangés ensembles. Cependant, vous pourrez les trouver et les supprimer en intégrant l'exécutable rvc à un script shell simple (que je laisserai comme exercice pour le lecteur…).

5.3. Reconstruire l'installateur

Les choses ont bien changé dans cette section avec l'arrivée de l'installateur anaconda (version 6.1) et la considérable augmentation de taille (et… du nombre de CD) que les distributions 7.x et 8.0 ont connue. Jusqu'à la version 6.2, la seule étape composant cette section était la génération d'un nouveau fichier hdlist. Avec la version 6.2, cela ne reste vrai que jusqu'à un certain point, en raison des changements dans l'installateur anaconda, dans le logiciel rpm lui-même (qui est passé des versions 3.x aux versions 4.x) et de la migration des paquets mis à jour vers cette nouvelle version (les mises à jour de la version 6.2 sont en fait empaquetées pour les deux versions majeures du logiciel rpm). Nous envisagerons trois procédures différentes en essayant de couvrir toutes les versions.

5.3.1. RedHat ≤ 6.1

5.3.1.1. Régénérer le fichier hdlist

Lors de l'installation à partir du CD, le programme d'installation du CD se base sur le fichier RedHat/base/hdlist qui décrit quels sont les paquets RPM disponibles sur le CD. Le fichier hdlist peut être généré par le programme misc/src/install/genhdlist. Ce programme doit être lancé avec comme seul argument le chemin absolu vers la racine de la distribution. Voici le script updateHdlist qui appelle ce programme (depuis la version 1.34 de ce guide pratique) :

#!/bin/bash

RHVERSION=6.1
ARCH=i386

echo "Génération de hdlist..."
RACINERH=/home/luigi/tmp/redhat-${RHVERSION}
GENHDDIR=${RACINERH}/${ARCH}/misc/src/anaconda/utils
          
chmod u+x ${GENHDDIR}/genhdlist
chmod 644 ${RACINERH}/${ARCH}/RedHat/base/hdlist
${GENHDDIR}/genhdlist ${RACINERH}/${ARCH} || echo "*** ÉCHEC DE GENHDLIST ***"

exit 0
[Note] Note importante pour les RedHat < 6.1

L'installation de la Redhat 6.1 est complètement différente de celle des versions précédentes car RedHat a introduit anaconda. Le programme genhdlist est maintenant situé à un autre endroit, donc dans le script ci-dessus, nous utiliserons :

GENHDDIR=${RHROOT}/${ARCH}/misc/src/anaconda/utils

alors que pour les versions jusqu'à 6.0 (comprise), cette ligne doit être :

GENHDDIR=${RHROOT}/${ARCH}/misc/src/install

Dans certains cas, genhdlist n'arrive pas à démarrer, car l'exécutable n'est pas lié statiquement. Dans un tel cas, vous pouvez ajouter la ligne :

${RHROOT}/${ARCH}/RedHat/instimage/usr/lib

dans le fichier /etc/ld.so.conf et lancer la commande ldconfig -v.

Une autre solution est de recompiler genhdlist. La modification suivante du script updateHdlist fonctionnait sous Redhat 5.2 :

#!/bin/bash

RHVERSION=6.1
ARCH=i386

RACINERH=/misc/redhat/redhat-${RHVERSION}
GENHDDIR=${RACINERH}/${ARCH}/misc/src/anaconda/utils

echo "Compilation de hdlist..."
sed -e 's/FD_t/int/' \
    -e 's/fdOpen/open/' \
    -e 's/fdClose/close/' \
    -e 's/fdFileno//' < ${GENHDDIR}/genhdlist.c > /tmp/genhdlist.c
cc -o /tmp/genhdlist -I/usr/include/rpm /tmp/genhdlist.c -lrpm -lz

echo "Génération de hdlist..."
chmod 644 ${RACINERH}/${ARCH}/RedHat/base/hdlist
/tmp/genhdlist ${RACINERH}/${ARCH} || echo "*** ÉCHEC DE GENHDLIST ***"

exit 0

Dans cette version du script, une copie du source C de genhdlist.c, compilable sous RedHat 5.2, est créée dans /tmp. Cette copie est réalisée en filtrant le source C original avec sed via un tube. Cette version de genhdlist est alors utilisée pour créer le fichier hdlist.

[Note] Note importante pour la Redhat 5.2

Tel qu'il est distribué avec les RedHat versions 5.2 et précédentes, genhdlist PLANTE si le répertoire RedHat/RPMS contient des fichiers qui ne sont pas des fichiers RPM ! Cela pose problème car dans la distribution 5.2, il y a des fichiers non-RPM nommés ls-lR et ls-lR.gz situés dans RedHat/RPMS. Donc, vous devez supprimer tous les fichiers non-RPM de ce répertoire. Sinon, vous pouvez appliquer le correctif genhdlist.c.diff au fichier misc/src/install/genhdlist.c et faire un make. Ce correctif fait ignorer à genhdlist tout fichier non-RPM.

5.3.1.2. Créer l'image iso du CD

Vous aurez besoin de créer un fichier image qui sera écrit sur le CD. Ce fichier fera au moins 500 Mo, donc trouvez une partition avec assez d'espace libre. Vous aurez peut-être besoin d'utiliser le compte root pour lancer les commandes mount et cdrecord. Ici, vous allez préparer l'image iso du CD amorçable que vous allez graver. Il n'est pas strictement nécessaire de créer un CD amorçable, car vous pourriez utiliser une disquette de démarrage à la place, mais c'est une fonctionnalité vraiment sympathique (et elle rend le comportement de votre disque plus similaire à celui du disque original). Voici les commandes que j'utilise pour réaliser cette tâche :

$ mkdir /repertoire-destination-images
$ mkisofs  -r  -J  -T  -v  -V "Red Hat 6.1 (Hedwig)" \
   -c boot.cat  -b images/boot.img \
   -o /repertoire-destination-images/i386-disc.iso .

C'est nécessaire pour graver le disque (amorçable) et cela doit être lancé à partir du répertoire de niveau supérieur de la distribution. Le répertoire /repertoire-destination-images est le réceptacle de l'image iso que vous allez générez et il doit (obligatoirement) exister avant de lancer la procédure. Dans la table suivante, vous pourrez lire une brève explication des nombreuses options et de leur signification (la plupart ont été extraites de la page de manuel de mkisofs).

Tableau 1. Options et paramètres de mkisofs

-r Extensions Rock Ridge, indiquant des valeurs utiles pour les droits.
-J Extensions Joliet pour utiliser le CD sous quelques autres systèmes d'exploitation.
-T Génère un fichier TRANS.TBL dans chaque répertoire afin que, même sur des systèmes non compatibles avec les extensions Rock Ridge, la correspondance des noms de fichier soit correcte.
-v Mode bavard
-V identifiant Indique l'identifiant du volume (nom ou label du volume) qui devra être écrit dans le bloc maître.
-c catalogue_de_démarrage Indique le chemin et le nom du fichier contenant le catalogue de démarrage, qui sera utilisé lors de la création d'un CD amorçable « El Torito ». Le chemin doit être relatif au chemin source indiqué à mkisofs.
-b image_eltorito Indique le chemin et le nom du fichier contenant l'image de démarrage à utiliser lors de la création du CD amorçable « El Torito ». Le chemin doit être relatif au chemin source indiqué à mkisofs. L'image doit être une image de disquette (ce qui explique pourquoi nous utilisons une des images de disquette trouvées sur le CD original). Vous pourrez choisir d'utiliser l'image pcmcia.img à la place si vous voulez réaliser une installation en utilisant des périphériques PCMCIA tels que des cartes réseau ou des lecteurs CDROM.
-o nom_du_fichier Nom du fichier contenant l'image iso générée
. Ceci est le répertoire racine de notre image iso (nous travaillons à partir du répertoire racine de chaque CD, donc un point est suffisant).

Vous trouverez plus d'informations sur la façon de graver une image sur un support dans graver le CD. Les étapes mkisofs et cdrecord peuvent être exécutées en utilisant une application graphique comme X-CD-Roast qui devrait actuellement permettre la création de CD amorçables (je ne l'ai jamais utilisé, donc ne vous attendez pas à ce que je vous donne des explications).

5.3.2. Redhat 6.2

Apparemment, c'est l'enfant difficile des distributions RedHat lorsque vient le moment de graver un CD à jour. L'arrivée de la version 4 du gestionnaire de paquets RedHat (RPM) a cassé la procédure de mise à jour de l'installateur anaconda. Les procédures que j'indique fonctionneront uniquement si les paquets mis à jour sont construits en utilisant une version du logiciel RPM postérieure ou égale à la version 3.0.4 (donc, en pratique, la version 3.0.4 ou 3.0.5).

Si vous utilisez les paquets originaux de RedHat, il faudra éviter d'utiliser les mises à jour publiées après le 28 mars 2001 (ce qui est un peu inutile selon moi). Une autre solution est de reconstruire les paquets en utilisant l'ancien format rpm. Vous trouverez des informations sur cette procédure et les outils nécessaires sur la page « rpmhack ». Je n'ai pas personnellement essayé cette procédure, mais, d'après les listes de discussion anaconda-devel et kickstart[2], elle semble fonctionner.

Si vous décidez de rester sur les anciens paquets originaux et de compléter la mise à jour (en utilisant les paquets rpm 4.0.2 après la fin de l'installation), il existe deux façons de le faire, en fonction du type de mise à jour que vous souhaitez effectuer. Si certaines des mises à jour dépendent directement du processus d'installation (c'est-à-dire le noyau, python, kudzu), vous devrez utiliser la procédure de reconstruction de l'installateur expliquée dans le document Construire un CDROM Red Hat Linux 6.2. Sinon vous pourrez utiliser l'ancienne procédure (celle pour les versions précédentes jusqu'à la 6.1 incluse, telle qu'elle est expliquée dans la section précédente). Les deux dernières étapes, qui sont la création de l'image iso et la gravure du support, sont décrites respectivement dans créer des images iso et graver le CD.

5.3.3. Redhat 9, 8.0 et 7.3

Une fois encore, beaucoup de choses ont été changées avec la sortie de la série 7.x. Il faut maintenant réaliser un plus grand nombre d'opérations pour obtenir une série de CD frais et à jour. En réalité, le CD a cessé d'être unique avec la version 7.0. L'arborescence doit maintenant être divisé pour tenir sur le support. Ce qui est fait en utilisant le script splitdistro, qui est écrit en python comme beaucoup d'éléments de l'installateur anaconda. Pour terminer cette partie, vous devrez utiliser une machine Linux utilisant la distribution Redhat 7.3, 8.0 ou 9 sur laquelle soit installé le paquet anaconda-runtime (il aura probablement la version 7.3.7, 8.0.4 ou 9.0.4), en fonction de la version que vous voulez reconstruire. La procédure est composée de sept étapes :

  1. Régénérer les fichiers hdlist et hdlist2

  2. Mettre à jour le fichier comps.xml (ou comps)

  3. Reconstruire l'installateur

  4. Diviser la distribution en plusieurs parties de la taille d'un CD

  5. Régénérer (encore) les fichiers hdlist et hdlist2

  6. Générer les images iso

  7. Ajouter et vérifier les signatures md5 dans les images iso

Toutes ces étapes sont regroupées en un seul script qui sera présenté dans la section « le script updateBuild.sh ».

5.3.3.1. Opérations préliminaires sur l'arborescence principale

Quelques-uns des scripts inclus dans le paquet anaconda-runtime ont besoin de l'arborescence principale, qui doit être déplacée dans un sous-répertoire nommé comme l'architecture que nous allons construire (donc i386/ chez moi). Nous déplacerons tout vers ce répertoire avant de lancer la procédure. Nous corrigerons également les appels des scripts qui n'ont pas besoin de cette modification.

Pour la Redhat 9 et 8.0 :

$ chmod  -R  u+w  /chemin-absolu-de-la-racine
$ mkdir  -p  /chemin-absolu-de-la-racine/i386
$ cd /chemin-absolu-de-la-racine
$ /bin/mv  *  i386

Vous devrez remplacer /chemin-absolu-de-la-racine par le chemin absolu du répertoire où la racine de votre copie locale de la distribution est placée (peut-être quelque part sur l'un des disques durs). Vous obtiendrez une erreur, lors de l'exécution de la dernière commande, car le répertoire i386/ ne peut être déplacé sous lui-même, mais vous ne devez pas en tenir compte.

Pour Redhat 7.3 :

$ chmod  -R  u+w /chemin-absolu-de-la-racine
$ mkdir  -p  /chemin-absolu-de-la-racine/i386
$ cd /chemin-absolu-de-la-racine
$ for i in `ls` ; do [ $i != "SRPMS" -a $i != i386 ] && \
  /bin/mv $i i386 ; done

Cette fois-ci (je l'espère) la dernière commande ne devrait produire aucune erreur.

5.3.3.2. Régénérer les fichiers hdlist et hdlist2

Ceci est fait au moyen des deux commandes suivantes et avec l'aide du programme genhdlist.

$ /usr/lib/anaconda-runtime/genhdlist
/chemin-absolu-de-la-racine/i386
$ chmod  644
/chemin-absolu-de-la-racine/i386/RedHat/base/hdlist{,
2}

Une fois encore /chemin-absolu-de-la-racine est le chemin absolu du répertoire où la racine de votre copie locale de la distribution est placée. La seconde commande est nécessaire pour vous assurer que les droits de ce fichier sont corrects. Vous devez déjà avoir une idée de ce que sont ces fichiers si vous avez lu la section « le répertoire RedHat ».

5.3.3.3. Mettre à jour le fichier comps.xml

Avec la distribution Linux RedHat 8.0, le format du fichier comps a complètement changé et il est maintenant basé sur XML. Ce nouveau format apporte une plus grande flexibilité et facilité de personnalisation. La section « le fichier comps » vous donnera plus d'informations sur le sujet. Si vous avez modifié ou si vous souhaitez modifier la liste des paquets installés, vous aurez besoin de réaliser cette étape. Ce qui implique alors d'avoir installé une version modifiée du paquet comps-9.tar.gz (l'original ne fonctionne pas pour moi) ou comps-8.0.tar.gz (suivant la version que vous construisez) qui contient le fichier maître comps trouvé sur le site web de RedHat, ainsi que le paquet comps-extras. Suivez alors ces étapes pour la Redhat 9 et 8.0 :

$ cd /répertoire-de-votre-choix
$ tar xzvf
/chemin-vers-comps-9.tar.gz/comps-9.tar.gz 
$ cd comps
$ make
$ cat comps-milan.xml |sed 's!</comps>!!g' >comps-tmp.xml
$ /usr/share/comps-extras/getfullcomps.py  comps.xml \
   /chemin-absolu-de-la-racine i386 >>
comps-tmp.xml
$ echo '</comps>' >> comps-tmp.xml
$ cp comps-tmp.xml
/chemin-absolu-de-la-racine/i386/RedHat/base/comps.
xml

En plus de /chemin-absolu-de-la-racine , vous devrez prendre soin d'indiquer des noms valides pour /répertoire-de-votre-choix et /chemin-vers-comps-9.tar.gz . Le reste des commandes pourra simplement être recopié. Et vous devrez évidemment changer 9 en 8.0 si vous construisez une version 8.0.

De nouveau, avant de lancer la commande make, vous devrez modifier le fichier comps-milan.xml.in en utilisant votre éditeur de texte favori et en suivant les lignes de conduite et suggestions de la section « le fichier comps » et de la page « anaconda comps » du site web RedHat.

Toutes les étapes nécessaires après la commande make seront réalisées par le script de la section « le script updateBuild.sh ». Ce script utilise la variable COMPSFILE, pour trouver le fichier comps-milan.xml (il n'a pas besoin d'avoir ce nom, j'utilise juste le nom original, mais vous pouvez le changer si vous le voulez).

Si vous utilisez la distribution Redhat 7.3, le fichier comps (avez-vous remarqué la différence de nom ?) est un fichier de texte avec une syntaxe complètement différente. Cette syntaxe est décrite plus précisément dans le fichier comps. Pour cette distribution, les seules opérations nécessaires sont l'adaptation du fichier pour correspondre à vos besoins et la recopie du fichier RedHat/base/comps dans l'arborescence principale en remplacement de l'original.

5.3.3.4. Reconstruire l'installateur

Cette étape consiste à reconstruire l'installateur anaconda dans votre copie locale de la distribution en utilisant les paquets mis à jour. Pour la Redhat 9, lancez :

$ /usr/lib/anaconda-runtime/buildinstall  \
  --pkgorder /chemin-absolu-de-la-racine/pkgorder.txt
 \
  --comp dist-9 --product "Red Hat Linux" --version 9  \
  --release "Redhat 9 (Shrike)"
/chemin-absolu-de-la-racine/i386

Où, une fois encore, /chemin-absolu-de-la-racine est le répertoire où est placée la racine de votre copie locale de la distribution.

Pour la distribution Redhat 8.0, la procédure est pratiquement identique (l'option --product en moins) :

$ /usr/lib/anaconda-runtime/buildinstall  \
  --pkgorder /chemin-absolu-de-la-racine/pkgorder.txt
 \
  --comp dist-8.0 --version 8.0  --release "Redhat 8.0 (Psyche)" \
  /chemin-absolu-de-la-racine/i386  

Ou si, comme moi, vous utilisez toujours une Redhat 7.3 :

$ /usr/lib/anaconda-runtime/buildinstall  \
   --pkgorder
/chemin-absolu-de-la-racine/pkgorder.txt  \
   --comp dist-7.3 --version 7.3
/chemin-absolu-de-la-racine/i386  

L'absence de l'option (obligatoire pour la 8.0) --release est la seule différence notable.

5.3.3.5. Diviser la distribution

Dans cette étape, nous allons créer cinq répertoires, chacun correspondant à un CD différent et y placer des liens physiques vers les fichiers réels contenus dans votre copie locale de la distribution.

[Note] Note

Cette étape ne marchera pas du tout avec la distribution RedHat 7.3 si vous n'utilisez pas la version modifiée du script splitdistro présentée dans le prochain paragraphe. Pour les distribution RedHat 8.0 et 9, une version modifiée de splitdistro est proposée principalement parce que, même si les problèmes du script précédent ont été corrigés, l'exécution échouait systématiquement s'il n'existait pas suffisamment de paquets pour remplir tous les CD (les quatre premiers complètement et le dernier même seulement partiellement).

$ /usr/lib/anaconda-runtime/splitdistro  \
  --fileorder
/chemin-absolu-de-la-racine/pkgorder.txt  --release \
  "Redhat 9.0 (Shrike)"  /chemin-absolu-de-la-racine 
i386 

La seule chose que vous ayez besoin de changer pour les versions 8.0 et la 7.3 est le texte indiqué à l'option --release (qui doit être « Redhat 8.0 (Psyche) » ou « Redhat 7.3 (Valhalla) »).

Pour la distribution Redhat 7.3, la version du script (python) splitdistro7.3 utilisée a été extraite du paquet anaconda-runtime 7.3.7 et modifiée par moi. Vous pouvez le substituer à l'original, nommé /usr/lib/anaconda-runtime/splitdistro, après avoir éventuellement sauvegardé ce dernier.

La seule modification (en dehors de quelques petites corrections) que ce script aie subie est un changement de son comportement si le répertoire SRPMS n'est pas trouvé (il n'échoue pas, mais génère les CD sans paquets source).

Pour la distribution Redhat 8.0, la version du script (python) splitdistro8.0 utilisée a été extraite du paquet anaconda-runtime 8.0.4 et modifiée une nouvelle fois par moi pour obtenir quelques améliorations dont je ressentais le besoin. Vous devez le substituer au fichier original (peut-être après avoir sauvegardé ce dernier) nommé /usr/lib/anaconda-runtime/splitdistro. Néanmoins, l'original fonctionnera bien pour construire une distribution qui comprend tous les paquets SRPMS (et ainsi remplir les cinq CD, car sinon le script échouera).

La seule modification apportée au script est un changement dans son comportement s'il ne trouve pas le répertoire SRPMS (il n'échoue plus, mais génère les CD sans paquets source) ou s'il y a un CD sans paquet (le script générera un répertoire vide un lieu d'échouer).

Pour la distribution Redhat 9, vous trouverez une copie du script incluant les mêmes modifications que le script de la 8.0 ici : splitdistro9. Tout ce qui a été dit dans le paragraphe précédent pour la distribution Redhat 8.0 s'applique à la version 9.

5.3.3.6. Régénérer les fichiers hdlist et hdlist2

Il est nécessaire de recréer les fichiers hdlist et hdlist2, en utilisant certaines des informations obtenues dans les étapes précédentes. Il n'y a pas de différences entre 7.3, 8.0 et 9 pour l'exécution de ce programme. La commande à utiliser est la suivante :

$ /usr/lib/anaconda-runtime/genhdlist  \
  --fileorder
/chemin-absolu-de-la-racine/pkgorder.txt 
--withnumbers \
  /chemin-absolu-de-la-racine/i386-disc[1-3]

Comme vous pouvez le voir, comparé à la première utilisation de genhdlist, deux nouvelles options sont passées au programme. La première, --fileorder, indique à genhdlist d'utiliser le fichier pkgorder.txt que nous avons généré à la seconde étape (reconstruire l'installateur). Ce fichier contient la répartition des paquets sur les différents CD et est utilisé par l'installateur pour déterminer dans quel ordre les paquets doivent être installés. De manière simple, si vous ne l'utilisez pas, vous finirez probablement par changer très souvent de CD lors de l'installation. L'option --withnumbers est nécessaire pour associer un numéro de CD à chaque paquet (comme vous le voyez, un joker indiquant les trois premières images iso est utilisé).

5.3.3.7. Générer les images iso

Dans cette étape, vous allez préparer les images iso à graver sur les CD réels. Il y a deux commandes distinctes à utiliser, l'une pour le premier disque et l'autre pour le reste des CD. Ceci est dû au besoin de rendre amorçable le premier CD. Ce n'est pas strictement nécessaire car vous pouvez utiliser à la place une disquette de démarrage mais il s'agit d'une fonctionnalité intéressante (et elle rend le comportement de vos disques plus similaire aux originaux). Voici les commandes que j'utilise pour réaliser cette tâche :

$ mkdir /repertoire-destination-images
$ mkisofs  -r  -J  -T  -v  -V "Red Hat 9 (Shrike) disque 1" \
   -c isolinux/boot.cat  -b isolinux/isolinux.bin -no-emul-boot \
   -boot-load-size 4 -boot-info-table \
   -o /repertoire-destination-images/i386-disc1.iso .

Cela est nécessaire pour graver le premier disque (amorçable) pour les distributions Redhat 8.0 et 9 (sans émulation de disquette) et c'est exécuté à partir du répertoire racine de la distribution. Le répertoire /repertoire-destination-images est le contenant pour les cinq images iso que vous avez générées et il doit exister avant de pouvoir lancer la procédure. La seule modification à effectuer pour la distribution Redhat 8 est le nom du volume, qui devrait être « Red Hat 8.0 (Psyche) disque 1 ».

$ mkdir /repertoire-destination-images
$ mkisofs  -r  -J  -T  -v  -V "Red Hat 7.3 (Valhalla) disc 1" \
   -c boot.cat  -b dosutils/autoboot/boot.img \
   -o /repertoire-destination-images/i386-disc1.iso .

C'est nécessaire pour graver le premier disque (amorçable) sur la 7.3. Cette commande doit être exécutée à partir du répertoire racine de la distribution (cette fois-ci nous utilisons l'émulation de disquette).

Le reste des images peut être écrit au moyen d'une boucle « for » :

$ for i in `echo 2 3 4 5` ; do mkisofs  -r  -J  -T  -v  \
   -V "Red Hat 9 (Shrike) disc ${i}"  \
   -o /repertoire-destination-images/i386-disc${i}.iso . ; done

La boucle présentée va préparer les quatre dernières images en leur donnant les bons numéros. Comme vous pouvez le voir, il y a deux options manquantes par rapport à la commande précédente et, comme vous pouvez le deviner, ces commandes ne sont utiles que pour créer un CD amorçable. Dans créer des images iso, vous pourrez lire une brève explication sur des différentes options et de leurs significations (la plupart ont été extraites de la page de manuel). De nouveau, si vous construisez une distribution Redhat 8.0, vous devriez changer le nom du volume par « Red Hat 8.0 (Psyche) disc1 ».

5.3.3.8.  Implanter et vérifier les signatures md5 dans les images iso

C'est une étape optionnelle mais elle permet l'utilisation de l'option « checkmedia » pour vérifier les signatures des CD avant de les installer et donc de garantir leur intégrité.

Les commandes suivantes permettent d'injecter ou de vérifier une signature md5 sur une image iso :

$ /usr/lib/anaconda-runtime/implantisomd5 image-iso
$ /usr/lib/anaconda-runtime/checkisomd5 image-iso

Après avoir fini toutes ces étapes, nous aurons obtenu les cinq images CD à graver. Considérant que saisir tout ceci est un peu long, la prochaine section présentera un script qui réalise toutes ces opérations en une seule fois (n'oubliez pas de configurer correctement les paramètres).

5.3.3.9. Réunir toutes ces étapes

Le script updateBuild.sh exécutera toutes les étapes nécessaires à la reconstruction des CD des distributions Redhat 7.3, 8.0 et 9 en un seul lancement (sous le compte root). Avant d'utiliser ce script, vous devrez définir une variable RHCDPATH pointant vers le répertoire où se trouve le fichier rhcd.conf et paramétrer ce fichier. Si vous voulez inclure un fichier comps.xml modifié (ou comps) dans vos CD, comme expliqué dans le fichier comps, vous devrez le copier à l'emplacement défini par la variable COMPSFILE avant d'exécuter le script. Si vous en avez besoin, n'oubliez pas d'ajouter le script modifié splitdistro dans le répertoire /usr/lib/anaconda-runtime.

# export RHCDPATH=/home/luigi/tmp/rhcd-scripts
# sh updateBuild.sh


[2] Vous pourrez trouver ces listes dans la section des listes de discussion du site web de RedHat.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:24