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 :

F.4.1 Ajout de fichiers à un CD de démarrage 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 saisissez 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.

Le CD de démarrage du composant Images possède un répertoire nommé /addfiles dans lequel vous pouvez ajouter des fichiers. Ils doivent être placés sous ce répertoire dans les répertoires correspondant à leurs noms. 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 (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 les procédures ci-dessous, assurez-vous que vous avez créé des copies de sauvegarde des fichiers que vous envisagez de modifier, en particulier de /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.

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.

Ajout à Initrd

Pour modifier le système de fichiers initrd :

  1. À l'aide d'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/i386/loader du CD de démarrage, puis copiez-le 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
    
    cd work
    
  6. Pour extraire initrd dans le répertoire /work, saisissez :

    cpio -idmuv ../initrd >/dev/null 2>&1
    
  7. Pour copier vos fichiers ou le pilote mis à jour dans le système de fichiers initrd extrait, saisissez :

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

    votre_chemin représente le chemin d'accès au fichier module.ko et module 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 repackager le système de fichiers initrd, saisissez :

    cd work
    
    find . | cpio -quiet -o -H newc > ../initrd
    
    cd ..
    
  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/i386/loader du CD de démarrage.

Ajout à la racine

Pour modifier le système de fichiers root :

  1. À l'aide d'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 root du répertoire /boot/i386/ du CD de démarrage, puis copiez-le dans le répertoire de travail du poste de travail Linux.

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

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

    gunzip root.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, saisissez :

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

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

    votre_chemin représente le chemin d'accès au fichier module.ko et module 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 root, saisissez :

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

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

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

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

    • Pour le CD, copiez le fichier root mis à jour dans le répertoire /boot/i386/ du CD de démarrage.

F.4.3 Utilisation du fichier driverupdate

Une autre manière de personnaliser la distribution de création d'image Novell 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 de démarrage du composant Images.

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 comment installer des fichiers et exécuter un script. Pour obtenir des informations sur les deux autres méthodes, reportez-vous à Tech Talk #3 - Spittin' Image dans le Magazine Connection de Novell. En particulier, reportez-vous aux sections SUSE Linux Driver Updates (Mises à jour du pilote SUSE Linux) et Adding files to the distro root file (Ajout de fichiers au fichier distro root) de cet article.

L'exemple de cette section prend la planification « 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 la planification 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. 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. Si vous créez manuellement les répertoires, créez la structure suivante sous le répertoire /work :

    `-- linux
        `-- suse
            |-- i386-sles10
                |-- 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 10 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 la planification 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, saisissez :

    mkfs.cramfs work/ driverupdate
    

    Le fichier CRAMFS est requis par la distribution SUSE.

  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.

    Le texte « ZENworks 10 Patch 1 » doit s'afficher à l'invite du mode de gestion de la création d'image après le démarrage du système d'exploitation.

  9. Exécutez la planification 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.