Création d'une image d'installation personnalisée d'Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Modification du contenu du fichier manifeste

Tous les champs des fichiers manifestes contiennent des valeurs par défaut prédéfinies qui créent le type d'image ISO dont vous avez besoin. Vous pouvez modifier manuellement ces champs prédéfinis dans un fichier manifeste afin de personnaliser davantage l'image obtenue.

Le tableau suivant décrit les principaux éléments des exemples de fichiers manifestes.

Table 2-3  Eléments du fichier manifeste
Elément
Description
<distro name="Oracle_Solaris_Text_X86"
add_timestamp="false">
Spécifie le nom de l'image avec un horodatage facultatif
<boot_mods>
Spécifie les modifications du menu GRUB à appliquer à l'image
<target>
Définit le jeu de données ZFS dans lequel l'image est créée
<software name="transfer-ips-install" type="IPS">
Spécifie la source des packages logiciels à installer
<software_data action="install">
Répertorie les packages à installer
<software_data action="uninstall">
Répertorie les packages à désinstaller
<software name="set-ips-attributes">
Définit différents attributs pour l'IPS au terme de l'installation
<software name="ba-init">
Spécifie le contenu de l'archive d'amorçage

Mise en garde  -  Modifiez cet élément avec précaution. Si l'archive d'amorçage est incorrecte, le système installé ne sera pas en mesure de s'initialiser.

<execution stop_on_error="true">
<checkpoint name="transfer-ips-install"/>
Répertorie les points de contrôle de création
<configuration name="pre-pkg-img-mod" type="sysconf"
 
source="/etc/svc/profile/generic_limited_net.xml">
Spécifie les services SMF à appliquer aux médias lors de la création

Mise en garde  -  Modifiez cet élément le plus rarement possible.

Indication d'un titre pour l'image

Utilisez l'élément suivant pour attribuer un nom personnalisé ou par défaut à l'image que vous allez créer :

<distro name="Oracle_Solaris_Text_X86" add_timestamp="false">

Si vous envisagez de créer toute une série de versions d'une image et de conserver les images incrémentielles, vous pouvez définir la variable d'horodatage sur "true". Ainsi, la date et l'heure seront automatiquement ajoutées au nom de chaque image.

Si vous devez spécifier un proxy HTTP, supprimez les marques de commentaire de l'élément distro name incluant la variable de proxy, puis saisissez l'emplacement du proxy.

Modification du menu d'initialisation

L'élément boot_mods indique les modifications du menu d'initialisation à appliquer à l'image.

Dans l'exemple ci-dessous, un menu d'initialisation spécialisé portant le titre "boot1" sera appliqué à l'image. L'attribut de délai d'attente spécifie la durée avant l'activation automatique de l'entrée d'initialisation par défaut.

<boot_mods title="boot1" timeout="5">

Pour ajouter une entrée de menu d'initialisation individuelle, il suffit d'insérer un nouvel élément boot_entry dans l'élément du menu d'initialisation. Les entrées sont ajoutées séquentiellement au menu d'initialisation, dans l'ordre défini par la valeur d'attribut insert_at “start” ou “end” de chaque entrée d'initialisation.


Remarque - Ajoutez les nouvelles entrées avant l'entrée "with magnifier" existante.

Reportez-vous à l'exemple ci-après d'un élément boot_entry individuel.

<boot_entry>
   <title_suffix>with screen reader</title_suffix>
   <kernel_args>-B assistive_tech=reader</kernel_args>
</boot_entry>

Pour plus d'informations, reportez-vous à la page de manuel dc_manifest(4).

Spécification de la zone de compilation

Vous pouvez personnaliser l'élément target. Cet élément définit le jeu de données ZFS à utiliser pour la création. Ce jeu de données correspond à la zone où l'image sera créée. Il faut indiquer un emplacement de jeu de données valide. Vérifiez la zone de compilation par défaut afin de garantir que la compilation ne détruira pas le contenu que vous devez conserver sur le système. Modifiez la zone de compilation si nécessaire.


Remarque - Le nom du système de fichiers ne doit pas inclure le nom du zpool.

L'exemple suivant illustre un élément target.

 <target>
   <logical>
     <zpool action="use_existing" name="rpool">
       <dataset>
         <filesystem name="dc/sample-dataset-location" 
         action="preserve"/>
       </dataset>
     </zpool>
   </logical>
 </target>

Spécification de l'éditeur

L'élément suivant spécifie un éditeur auprès duquel le constructeur de distribution peut obtenir des packages à télécharger et à utiliser pour créer l'image.

<software name="transfer-ips-install">

Dans l'élément source imbriqué dans la section software name, modifiez les éléments publisher name et origin name afin de spécifier l'éditeur à utiliser, ainsi que l'emplacement du référentiel de packages. L'emplacement du référentiel peut prendre la forme d'un chemin NFS ou d'un répertoire local. Plusieurs éditeurs peuvent être répertoriés. Quand le constructeur de distribution tente de localiser les packages à installer, les éditeurs sont parcourus dans l'ordre dans lequel ils sont répertoriés ici.

S'il faut spécifier des copies miroir d'un éditeur, supprimez les marques de commentaire et modifiez l'élément mirror name.

L'exemple suivant illustre un élément source imbriqué dans l'élément software name.

<source>
   <publisher name="publisher1">
      <origin name="http://example.oracle.com/primary-pub"/>
      <mirror name="mirror.example.com"/>
   </publisher>
   <publisher name="publisher2">
       <origin name="http://example2.com/dev/solaris"/>
   </publisher>
   <publisher name="publisher3.org">
       <origin name="http://example3.com/dev"/>
   </publisher>
   <publisher name="publisher4">
       <origin name="file:///net/myserver/publisher4/repo"/>
   </publisher>
</source>

Pour plus d'informations sur l'utilisation des éditeurs, reportez-vous à la section Ajout et mise à jour de logiciels dans Oracle Solaris 11.2 .

Spécification des packages à installer

L'élément software_data avec l'attribut install répertorie l'ensemble des packages à installer afin de créer un type d'image particulier, en fonction du manifeste utilisé. Par exemple, le fichier manifeste dc_livecd.xml répertorie les packages requis pour créer une image Live Media. Chaque balise name indique le nom d'un package individuel ou le nom d'un package de groupe contenant plusieurs packages.

<software_data action="install">
   <name>pkg:/group/system/solaris-desktop</name>
   <name>pkg:/system/install/gui-install</name>
   <name>pkg:/system/install/media/internal</name>
</software_data>

Si vous souhaitez ajouter des packages à l'image, ajoutez leur nom en insérant une balise name.

Par défaut, la version la plus récente du package disponible dans le référentiel spécifié est installée. Si une autre version est requise, ajoutez le numéro de version à la référence du package en respectant le format suivant :

<name>pkg:/group/system/solaris-desktop@0.5.11-0.build#</name>

Remarque - La version d'Oracle Solaris installée sur votre système doit être la même que celle de l'image que vous souhaitez créer avec le constructeur de distribution.

En outre, les packages d'une version particulière spécifiée risquent de ne pas être installés si d'autres packages d'une version en conflit sont en cours d'installation, comme indiqué par le fichier manifeste d'un service d'installation automatisée. Reportez-vous au Chapitre 9, Personnalisation des installations du manuel Installation des systèmes Oracle Solaris 11.2 .


Exemple 2-1  Ajout de packages et d'éditeurs supplémentaires

Dans cet exemple, un deuxième éditeur (mypublisher) est spécifié. Des packages supplémentaires (mypackage1 et mypackage2) sont spécifiés.

Au cours du processus de compilation, les éditeurs sont vérifiés dans l'ordre dans lequel ils sont répertoriés. Si les packages ne sont pas disponibles auprès du premier éditeur, l'éditeur suivant est parcouru à la recherche des packages spécifiés.

<software name="transfer-ips-install" type="IPS">
   <destination>
      <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
            href="/usr/share/distro_const/lang_facets.xml"/>
   </destination>
   <source>
      <publisher name="solaris">
          <origin name="http://pkg.oracle.com/solaris/release"/>
      </publisher>
      <publisher name="mypublisher">
         <origin name="http://mypublisher.company.com"/>
      </publisher>
   </source>
   <software_data action="install">
        <name>pkg:/group/system/solaris-large-server</name>
        <name>pkg:/system/install/text-install</name>
        <name>pkg:/system/install/media/internal</name>
        <name>pkg:/mypackage1</name>
        <name>pkg:/mypackage2</name>
   </software_data>
</software>

Spécification des packages à désinstaller

Il est possible de désinstaller un package individuel ou une définition de package de groupe par le biais de l'élément software_data avec l'attribut uninstall.


Remarque - Une définition de package de groupe lie tous les packages individuels qui font partie du groupe en une seule et même unité pouvant faire l'objet d'opérations spécifiques.

L'attribut uninstall s'avère particulièrement utile si vous souhaitez installer un package de groupe complet en excluant un ou plusieurs packages individuels. Vous pouvez utiliser l'attribut uninstall pour supprimer la définition de package de groupe en premier lieu. Vous pouvez ensuite désinstaller les packages précédemment installés dans le cadre d'un package de groupe.

Vous avez peut-être choisi de créer une image d'installation Live Media. L'image d'installation Live Media par défaut inclut un navigateur Firefox dans le package de groupe de bureau.

    Si vous voulez exclure le navigateur Firefox de l'image à créer, effectuez les opérations suivantes :

  1. Installez le package de groupe solaris-desktop qui inclut tous les logiciels du bureau Live Media classique. Reportez-vous à la section Spécification des packages à installer.

  2. Désinstallez la définition du package de groupe solaris-desktop à l'aide de l'attribut uninstall, comme suit :

    <software_data action="uninstall">
       <name>pkg:/group/system/solaris-desktop</name>
    </software_data>

    Remarque - L'exécution de l'attribut uninstall ne fait que supprimer la définition du package de groupe. Tous les packages individuels que le groupe englobe restent installés.
  3. Maintenant que les packages individuels ne sont plus liés ensemble dans une définition de groupe, vous pouvez exécuter à nouveau l'attribut uninstall pour désinstaller le package Firefox.

    <software_data action="uninstall">
       <name>pkg:/web/browser/firefox</name>
    </software_data>

    Vous pouvez éventuellement combiner les étapes 2 et 3 dans une seule entrée, comme suit :

    <software_data action="uninstall">
    		<name>pkg:/group/system/solaris-desktop</name>
    		<name>pkg:/web/browser/firefox</name>
    </software_data>

Ajoutez les packages supplémentaires à désinstaller à la fin de la section uninstall.

Spécification d'un éditeur pour un système installé

L'élément software name s'applique à un système une fois qu'il a été installé avec l'image générée à l'aide du constructeur de distribution.

<software name="set-ips-attributes">

Fournissez le nom de l'éditeur et des balises de nom de copie miroir facultatives pour spécifier l'endroit où le système installé peut accéder à d'autres packages à télécharger et à installer.

Vous pouvez également définir des attributs IPS dans cet élément. Reportez-vous aux informations de la propriété IPS de la page de manuel pkg(1).

Définition de points de contrôle de compilation

L'élément execution du fichier manifeste répertorie une série de points de contrôle exécutés lors de la compilation d'une image. Les points de contrôle sont exécutés dans l'ordre dans lequel ils sont répertoriés dans cette section. Les points de contrôle par défaut nécessaires à la compilation de l'image d'installation par défaut sont inclus dans chaque fichier manifeste.

Au cours du processus de génération de l'image, les points de contrôle modifient le contenu de la zone de compilation spécifiée dans le fichier manifeste.

    La zone de compilation contient les répertoires suivants :

  • ZFS dataset/build_data/pkg_image

  • ZFS dataset/build_data/boot_archive

La variable ZFS dataset est spécifiée par l'élément target dans le fichier manifeste.

Au cours du processus de compilation, toutes les entités incluses dans l'image finale sont ajoutées au répertoire à l'annuaire pkg_image. Les fichiers stockés dans le répertoire séparé boot_archive servent à créer une archive d'amorçage pendant le processus de création, qui est également ajoutée au répertoire pkg_image.

    La liste suivante décrit brièvement chaque de point de contrôle par défaut, dans l'ordre dans lequel ils sont exécutés dans la plupart des fichiers manifestes.

  • transfer-ips-install : au niveau de ce point de contrôle, le constructeur de distribution contacte les éditeurs IPS et ajoute à l'image les packages répertoriés dans l'élément software_data du fichier manifeste.

  • set-ips-attributes : au niveau de ce point de contrôle, le constructeur définit l'éditeur que le système installé doit utiliser. Les valeurs définies par ce point de contrôle n'ont aucune incidence si vous créez une image d'installation automatisée.

  • pre-pkg-img-mod : au niveau de ce point de contrôle, le constructeur importe dans l'image les fichiers de service SMF spécifiés dans l'élément configuration du fichier manifeste. Le constructeur modifie également certains fichiers pour optimiser l'image.

    Toutes les modifications apportées jusqu'ici sont incluses à la fois dans l'image en cours de création et dans l'archive root. Dans les scripts personnalisés, il faut ajouter les nouveaux points de contrôle qui doivent modifier aussi bien l'archive root que l'image avant ou juste après le point de contrôle pre-pkg-img-mod.

  • ba-init : au niveau de ce point de contrôle, le constructeur place les fichiers répertoriés dans la section ba-init du fichier manifeste dans l'archive root. Ces fichiers sont copiés de la zone pkg_image vers la zone root_archive.

  • ba-config : au niveau de ce point de contrôle, le constructeur apporte d'autres modifications aux fichiers précédemment copiés dans l'archive root. Le constructeur crée des liens symboliques pointant vers d'autres fichiers requis à une étape ultérieure du processus d'initialisation afin de réduire la taille de l'archive root.

  • ba-arch : au niveau de ce point de contrôle, le constructeur compresse l'archive root avant de la placer dans le répertoire pkg_image. Le constructeur effectue également les opérations possibles pour optimiser l'archive root en fonction du type de système en cours de création. Après ce point de contrôle, aucune modification définie dans des scripts personnalisés n'est intégrée dans l'archive root dans la mesure où celle-ci a déjà été compressée.

  • boot-setup : au niveau de ce point de contrôle, le constructeur définit le menu GRUB2 en fonction des entrées spécifiées dans la section boot_entry du fichier manifeste. Ce point de contrôle ne s'applique qu'aux images destinées aux systèmes x86.

  • pkg-img-mod : au niveau de ce point de contrôle, le constructeur crée les principales archives pour l'image en cours de création et optimise la zone pkg_image. Le constructeur déplace des fichiers dans le répertoire pkg_image en créant l'archive de l'image. Tous les fichiers stockés dans le répertoire pkg_image sont inclus dans l'image. Aucun fichier ajouté après ce point de contrôle ne sera inclus dans l'image.

  • create-iso : ce point de contrôle génère les fichiers .iso en incluant toutes les entités stockées dans le répertoire pkg_image.

  • create-usb : ce point de contrôle génère le fichier .usb à partir du fichier .iso généré.

Dans les champs spécifiques des sections de points de contrôle, chaque balise checkpoint name inclut l'attribut mod-path qui spécifie l'emplacement du script correspondant.

Certaines balises de points de contrôle par défaut incluent des arguments avec des valeurs par défaut fournies. L'exemple de point de contrôle suivant (extrait de l'exemple de fichier manifeste dc_ai_sparc.xml) crée l'archive d'amorçage pour la compilation de l'image et renvoie au script chargé d'accomplir cette tâche. L'exemple de point de contrôle inclut également des champs argitem avec des valeurs spécifiques fournies pour chaque argument.

<checkpoint name="ba-arch"
    desc="Boot Archive Archival"
    mod_path="solaris_install/distro_const/checkpoints/
    boot_archive_archive"
    checkpoint_class="BootArchiveArchive">
    <kwargs>
        <arg name="size_pad">0</arg>
        <arg name="bytes_per_inode">0</arg>
        <arglist name="uncompressed_files">
             <argitem>etc/svc/repository.db</argitem>
             <argitem>etc/name_to_major</argitem>
             <argitem>etc/minor_perm</argitem>
             <argitem>etc/driver_aliases</argitem>
             <argitem>etc/driver_classes</argitem>
             <argitem>etc/path_to_inst</argitem>
             <argitem>etc/default/init</argitem>
             <argitem>etc/nsswitch.conf</argitem>
             <argitem>etc/passwd</argitem>
             <argitem>etc/shadow</argitem>
             <argitem>etc/inet/hosts</argitem>
        </arglist>
    </kwargs>
</checkpoint>

Comme indiqué dans cet exemple, l'élément kwargs contient des arguments de type mot-clé à transmettre au point de contrôle au cours de la compilation. L'élément kwargs contient des éléments arg name qui permettent de spécifier des mots-clés individuels à transmettre au point de contrôle. Enfin, l'élément arglist contient une liste de valeurs argitem à transmettre au point de contrôle. Cet exemple inclut la liste des fichiers décompressés dans l'élément arglist.

Chaque élément de liste kargs est indiqué entre guillemets. En l'absence de guillemets ou si l'intégralité de la chaîne est indiquée entre guillemets, celle-ci (espaces et retours inclus) est interprétée comme un argument. N'insérez pas de virgules pour séparer les arguments.

Si vous rédigez un script personnalisé à utiliser lors de la génération d'une image, il faut ajouter un élément de point de contrôle renvoyant à l'emplacement du script. Le point de contrôle nécessite un seul élément args pointant vers le script personnalisé. Pour plus d'informations et d'exemples, reportez-vous à la section Création et utilisation de scripts personnalisés.

Utilisez les options de la commande distro_const pour contrôler l'interruption et le redémarrage du processus de compilation au niveau de points de contrôle particuliers. Reportez-vous à la section Création d'une image en plusieurs étapes.

Exemple 2-2  Ajout de packages SVR4

Dans cet exemple, un nouveau point de contrôle est ajouté au fichier manifeste. Ce nouveau point de contrôle répertorie les packages SVR4 à ajouter à l'image, ainsi que leur emplacement. Ensuite, ce nouveau point de contrôle est référencé dans la section execution.

Tout d'abord, le nouveau point de contrôle est créé par l'ajout d'un nouvel élément software. Ce point de contrôle indique SVR4 comme type de logiciel, l'emplacement des packages et la destination d'installation.

En outre, les packages SVR4 spécifiques à installer sont répertoriés dans l'élément software_data.

<software name="transfer-svr4-install" type="SVR4">
   <destination>
       <dir path="{PKG_IMAGE_PATH}"/>
   </destination>
   <source>
    <publisher/>
      <origin name="/path/to/packages"/>
    </publisher>
   </source>
   <software_data action="install">
      <name>SUNWpackage1</name>
      <name>SUNWpackage2</name>
   </software_data>
</software>

Si les valeurs {PKG_IMAGE_PATH} et {BOOT_ARCHIVE} sont incluses dans le point de contrôle, l'utilitaire distro_const les remplace respectivement par ZFS dataset/build_data/pkg_image et ZFS dataset/build_data/boot_archive. Dans cet exemple, les packages SVR4 sont installés sous ZFS dataset/build_data/pkg_image.

Enfin, ce nouveau point de contrôle est référencé dans la section execution. Le nom du point de contrôle peut être n'importe quelle chaîne, mais pour cet exemple checkpoint_class doit être TransferSVR4.

<execution stop_on_error="true">
   <checkpoint name="transfer-ips-install"
       desc="Transfer pkg contents from IPS"
       mod_path="solaris_install/transfer/ips"
       checkpoint_class="TransferIPS"/>
   <checkpoint name="set-ips-attributes"
       desc="Set post-install IPS attributes"
       mod_path="solaris_install/transfer/ips"
       checkpoint_class="TransferIPS"/>
   <checkpoint name="transfer-svr4-install"
      desc="Transfer pkg contents from SVR4 packages"
      mod_path="solaris_install/transfer/svr4"
      checkpoint_class="TransferSVR4"/>

Notez que le nom du logiciel doit correspondre au nom du point de contrôle. Dans cet exemple, les deux sont "transfer-svr4–install".

Exemple 2-3  Création de hachages d'un média

Ce point de contrôle permet aux utilisateurs de générer automatiquement des hachages du média généré par distro_const à l'aide des sommes de contrôles du manifeste DC.

    <checkpoint name="checksums" 
      desc="Checksum calculation for media" 
      mod_path="solaris_install/distro_const/checkpoints/checksums"
      checkpoint_class="Checksums"> 
      <kwargs> 
        <arglist name="algorithms"> 
          <argitem file_path="/tmp/md5sums.txt">md5</argitem> 
          <argitem>sha1</argitem> 
          <argitem>sha224</argitem> 
          <argitem>sha256</argitem> 
          <argitem>sha384</argitem> 
          <argitem>sha512</argitem> 
        </arglist> 
      </kwargs> 
    </checkpoint>
  

arglist inclut tous les algorithmes utilisés pour générer des hachages pour le média généré. Chaque argitem spécifie un algorithme. Les algorithmes valides peuvent être déterminés en exécutant /usr/bindigest -l. Chaque argitem peut avoir un attribut path qui spécifie le chemin absolu d'un fichier supplémentaire ajouté avec les hachages produits par cet algorithme. Si aucun algorithme n'est spécifiée, la valeur par défaut est md5.

Lors de l'image est créée, les fichiers seront générés pour chaque algorithme contenant les sommes de contrôle de chaque média.