F.4 Modification des fichiers de ressource de création d'image ZENworks

Dans certains cas, vous pouvez souhaiter modifier une distribution de création d'image en ajoutant vos propres fichiers. Il peut s'agir de programmes, de scripts, de fichiers de données ou de pilotes Linux mis à jour supplémentaires.

Vous pouvez utiliser les méthodes suivantes pour mettre à jour les fichiers de ressource de création d'image :

Les sections suivantes offrent différentes méthodes pour modifier les fichiers de ressource de création d'image :

F.4.1 Ajout de fichiers à un CD d'amorçage de création d'image

Si vous avez des fichiers à ajouter à un CD amorce de création d'image pour qu'ils soient utilisables lorsque vous entrez réellement dans le processus de création d'image (par exemple les scripts, mais normalement pas les modules de pilote), vous pouvez copier les fichiers dans le répertoire /addfiles sur le CD de création d'image. C'est une méthode simple pour insérer votre script ou d'autres fichiers dans la distribution sans modifier les systèmes de fichier initrd ou root. Toutefois, ces fichiers ne sont pas disponibles au cours des phases de démarrage et de chargement de module.

Les fichiers doivent être placés sous le répertoire /addfiles du CD amorce de création d'image sous leurs noms de répertoires corrects. Ils sont ensuite disponibles dans cette structure de répertoire au cours du processus de création d'image.

Voici un exemple de la manière dont vous pouvez ajouter des fichiers :

  1. Si vous voulez exécuter votre script plutôt que le processus normal de création d'image, créez un fichier de script nommé myscript.s et placez-le sur le CD de démarrage. Par exemple, /addfiles/bin/myscript.s.

    IMPORTANT :ce fichier de script doit avoir des fins de ligne LF correctes requises par Linux, et non les caractères de fin de ligne DOS CR et LF. Pour créer le script, vous ne pouvez donc pas utiliser Notepad.exe. En revanche, vous devez utiliser un éditeur de texte compatible avec Linux ou UNIX (par exemple, TextPad).

  2. Pour placer la ligne suivante dans le fichier settings.txt, saisissez :

    export IMGCMD=/bin/myscript.s
    

    Lors de l'exécution de la création d'image, /bin/myscript.s est exécuté au lieu d'utiliser la commande img auto normale.

F.4.2 Ajout de fichiers au système de fichiers initrd ou root

Il s'agit de la méthode de prédilection pour mettre à jour les fichiers de ressources de création d'image, qui doit être utilisée dans un environnement Linux.

Avant d'effectuer la procédure ci-dessous, assurez-vous que vous avez créé des copies de sauvegarde des fichiers que vous envisagez de modifier, en particulier du fichier /srv/tftp/boot/initrd. Si vous voulez modifier les fichiers d'un CD de création d'image, vous devez utiliser un éditeur ISO ou un autre processus pour extraire et remplacer le fichier dans le fichier d'image bootcd.iso.

IMPORTANT :lorsque vous mettez à jour ou ajoutez des fichiers et des pilotes Linux au système de fichiers initrd ou root, décrivez les modifications apportées. Lorsque vous recevez des fichiers de ressource de Novell, ils ne contiennent pas vos modifications personnalisées. Si la version du kernel a changé dans les nouveaux fichiers de ressource de Novell, les pilotes ajoutés précédemment doivent être mis à jour. Pour ce faire, obtenez une nouvelle version du fabricant ou recompilez le pilote à l'aide de la source correcte de la version du kernel Linux.

Vous pouvez utiliser la procédure suivante pour le système de fichiers root en remplaçant simplement "initrd" par "root" dans les différentes étapes. Cependant, les pilotes Linux doivent toujours être placés dans le système de fichiers initrd et non dans le système de fichiers root.

Pour ajouter des fichiers au système de fichiers root, vous pouvez également utiliser la méthode driverupdate décrite à la Section F.4.3, Utilisation du fichier driverupdate.

Pour modifier le système de fichiers initrd ou root :

  1. En utilisant un périphérique Linux, créez un répertoire de travail et accédez à ce répertoire.

  2. Pour copier initrd du serveur PXE ou du CD de démarrage vers le nouveau répertoire de travail :

    • Pour PXE, copiez \tftp\boot\initrd dans le répertoire de travail du poste de travail Linux.

    • Pour le CD, extrayez initrd du répertoire \boot\loader sur le CD d'amorçage, puis copiez le initrd extrait dans le répertoire de travail du poste de travail Linux.

  3. Pour renommer initrd en initrd.gz, saisissez :

    mv initrd initrd.gz
    
  4. Pour dézipper le fichier initrd.gz, saisissez :

    gunzip initrd.gz
    
  5. Pour créer un autre répertoire de travail utilisable comme point de montage dans les étapes suivantes, saisissez :

    mkdir work
    
  6. Pour monter le système de fichiers initrd dans le répertoire /work, entrez :

    mount -o loop initrd work
    
  7. Pour copier vos fichiers ou le pilote mis à jour dans le système de fichiers initrd monté, saisissez :

    cp /your_path/module.ko work/lib/modules/2.6.5-override-default/initrd
    

    your_path est le chemin d'accès au fichier module.ko et module est le nom du module.

    Les autres fichiers à inclure dans le système de fichiers initrd doivent être copiés dans le répertoire approprié.

  8. Pour démonter le système de fichiers initrd, saisissez :

    umount work
    
  9. Pour zipper le nouveau fichier initrd, saisissez :

    gzip -v9c initrd > initrd.gz
    
  10. Pour renommer initrd.gz en initrd, saisissez :

    mv initrd.gz initrd
    
  11. Pour recopier le fichier :

    • Pour PXE, copiez le fichier initrd mis à jour dans le répertoire \tftp\boot du serveur PXE.

    • Pour le CD, copiez le fichier initrd mis à jour dans le répertoire \boot\loader du CD d'amorçage.

F.4.3 Utilisation du fichier driverupdate

Une autre manière de personnaliser la distribution de création d'image consiste à utiliser le mécanisme de mise à jour du pilote qui est intégré à toutes les distributions SUSE. Cela permet de modifier un fichier nommé driverupdate situé dans le répertoire /srv/tftp/boot de votre serveur de création d'image ou à la racine (/) d'un CD amorce de création d'image.

Cette méthode est moins intrusive que la modification du système de fichiers initrd ou root. Il vous suffit de créer un fichier supplémentaire incorporé au système d'exploitation de création d'image au cours du démarrage.

Trois types d'opérations de mise à jour de pilote peuvent être effectués :

  • Installation des modules de kernel ou des pilotes du matériel

  • Installation des fichiers et exécution d'un script

  • Simple placement des fichiers dans le système d'exploitation

Cette section décrit la deuxième méthode. Pour plus d'informations sur les autres méthodes, reportez-vous à "Tech Talk #3 - Spittin’ Image" dans le Magazine Connection de Novell.

L'exemple de cette section prend le programme "tree" qui n'est pas actuellement disponible dans la distribution de création d'image et l'installe lors du démarrage.

Le mécanisme de mise à jour du pilote recherche le fichier driverupdate contenant une structure de répertoire qui imite celle du système d'exploitation après le démarrage d'un périphérique avec la distribution ZENworks. S'il est présent, linuxrc le télécharge au cours du démarrage et l'incorpore de façon dynamique au système d'exploitation.

Le fichier driverupdate appartient à un système de fichiers de tout type (par exemple, EXT3 ou REISER). Pour des raisons de simplicité, nous utiliserons le système de fichiers CRAMFS dans notre exemple.

Pour placer le programme tree dans le fichier driverupdate :

  1. Créez un répertoire de travail sur votre serveur de création d'image, par exemple /work.

  2. (Conditionnel) Si vous utilisez le fichier driverupdate, téléchargez le fichier driverupdate.tgz dans le répertoire /work, puis faites un untar en saisissant :

    mkdir work
    cd work
    wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz
    tar -xzvf driverupdate.tgz
    

    Le fichier driverupdate.tgz contient la même structure de répertoire que celle créée à l'Étape 3.

  3. (Conditionnel) Si vous créez manuellement les répertoires, créez la structure de répertoire suivante sous le répertoire /work :

    `-- dirstruct
        `-- linux
            `-- suse
                |-- i386-9.2
                    |-- dud.config
                    |-- inst-sys
                        `-- lib
                        `-- bin
                    |-- adddir.s
    

    Le contenu du fichier dud.config doit comporter des lignes similaires à celles ci-dessous. Gérez les mots-clés en fournissant vos propres données. Vous pouvez toutefois utiliser les valeurs indiquées :

    UpdateName:     ZENworks 7 Patch 1
    UpdateID:       a37f92556e4dd99e
    UpdatePriority: 100
    

    Le fichier adddir.s doit être un script exécutable comportant les lignes suivantes :

    echo "Processing: adddir.s" > /dev/tty3 2>&1
    # driver update: add files to inst-sys
    for i in /update/[0-9]*/inst-sys ; do
         [ -d "$i" ] && adddir "$i" /
    done
    
    # driver update: run update.pre scripts
    for i in /update/[0?9]*/install/update.pre ; do
         echo "Processing: $i" > /dev/tty3 2>&1
         [ -x "$i" ] && "$i"
    done
    
  4. Pour copier le programme tree dans le répertoire /bin, saisissez :

    cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
    
  5. Pour créer le fichier CRAMFS, entrez :

    mkfs.cramfs dirstruct/ driverupdate
    
  6. Pour copier le fichier driverupdate dans /srv/tftp/boot, saisissez :

    cp driverupdate /srv/tftp/boot
    
  7. Ajoutez les lignes suivantes à la fin du fichier /srv/tftp/boot/settings.txt :

    # SUSE driver update
    for i in /update/[0?9]*/install/adddir.s ; do
         [ -x "$i" ] && "$i"
         rm $i
    done
    

    Cette opération entraîne l'exécution du script adddir.s (qui crée des liens logiques vers tous les nouveaux fichiers en cours de copie).

    Ces lignes peuvent être déjà présentes dans le fichier settings.txt.

  8. Redémarrez le périphérique PXE.

    Vous devez voir le texte "ZENworks 7 Patch 1" à l'invite bash après le démarrage du système d'exploitation.

  9. Exécutez le programme tree.

Tous les fichiers que vous placez dans le fichier driverupdate se trouvent désormais sous le répertoire /update dans le système d'exploitation après le démarrage. Ensuite, le script adddir.s (ou le code que vous avez ajouté au fichier settings.txt à l'Étape 7) crée des liaisons logicielles sous le système de fichiers root qui pointent vers les fichiers correspondants sus la structure de répertoire /update. Vous pouvez le vérifier en exécutant :

/# which tree
/bin/tree
/# ll /bin/tree
lrwxrwxrwx  1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree

Si vous souhaitez simplement inclure un nouveau pilote matériel ou module kernel dans le système d'exploitation de création d'image, une procédure plus simple pourrait consister à copier le fichier .ko dans le répertoire/dirstruct/linux/suse/i386-9.2/modules/. Ensuite, le système d'exploitation de création d'image charge automatiquement les fichiers .ko qui se trouvent dans ce répertoire.