Personnalisation d'un livecd (CentOS 5.2) Le LiveCD a donc été créé en fonction de vos besoins. Il est possible d'aller plus loin et de vouloir inclure dans le CD des fichiers indépendants du système. Par exemple un répertoire contenant des documents, des fichiers de configuration ou de simulation. Le principe choisi est de fabriquer son propre paquetage (avec rpmbuild et autospec) contenant des fichiers, puis de «fabriquer» son propre dépôt qui sera copié sur le serveur local qui contient déjà le dépôt de CentOS 5.2. Je rappelle que cette documentation ne se veut pas une explication détaillée mais plutôt un «tableau de bord» fonctionnel destiné à donner une procédure améliorée pour la création d'un CD personnalisé. Vous pourrez trouver par la suite sur Internet, ou ailleurs, bien d'autres explications plus complètes pour vos besoins plus personnels. Création du rpm (paquetage) La première étape consiste à installer les programmes nécessaires à la création de mon fichier rpm. Le paquetage va contenir un répertoire dans lequel seront copiés tous les fichiers personnels. Autospec va générer un fichier contenant toutes les informations dont rpm a besoin pour utiliser le paquetage. Il sera nécessaire de modifier ce fichier avant de lancer rpmbuild. Dans un premier temps, récupérer autospec sur Internet puis l'installer: rpm -i autospec-0.8-1.noarch.rpm Dans un deuxième temps, installer rpmbuild: yum install rpm-build Les outils installés, copier tous les fichiers dans un répertoire, dans notre cas ils sont tous regroupés dans le répertoire utiles (un fichier pdf et un shell script), puis taper tar cvzf utiles-bin.tar.gz utiles Bien respecter le format nom-bin.tar.gz où nom sera le nom de votre paquetage. Taper la commande: tar tfz utiles-bin.tar.gz autospec -b > utiles.spec Autospec génère un fichier utiles.spec qui contient toutes les informations relatives à l'utilisation de votre paquetage par rpm. Le fichier utiles.spec doit être modifié pour pouvoir correctement être utilisé par rpmbuild. Group, License et Name sont nécessaires. Bien penser à modifier la ligne contenant le nom de votre fichier source (ligne Source). Remarque: vérifiez bien dans la section %files le nom des fichiers à inclure dans le paquetage (le fichier généré dans notre cas comportait une ligne supplémentaire dans laquelle apparaissait le fichier pdf mais dans le répertoire racine. Cette ligne provoquait une erreur avec rpmbuild).
utiles.spec # Initial spec file created by autospec ver. 0.8 with rpm 3 compatibility Summary: root # The Summary: line should be expanded to about here -----^ #Summary(fr): (translated summary goes here) Name: utiles Version: Salle_simu Release: 1 Group: Fichiers #Group(fr): (translated group goes here) License: RADIAC Source: utiles-bin.tar.gz #NoSource: 0 BuildRoot: %{_tmppath}/%{name}-root # Following are optional fields #URL: http://www.example.net/root/ #Distribution: Red Hat Contrib-Net #Patch: root-%{version}.patch #Prefix: /utiles #BuildArch: noarch #Requires: #Obsoletes: #BuildRequires: %description root version unknown #%description -l fr #(translated description goes here) %prep %setup -c root #%patch %install % cp -a. "${RPM_BUILD_ROOT-/}" %clean [ "$RPM_BUILD_ROOT"!= "/" ] && rm -rf "$RPM_BUILD_ROOT" %files %defattr(-,root,root) %dir /utiles/ %doc /utiles/memoire-gdesmottes-2006.pdf /utiles/script_centos %changelog * Mon Jul 28 2008 root <root@centos.ies.univ-montp2.fr> - Initial spec file created by autospec ver. 0.8 with rpm 3 compatibility Copier le fichier archive dans le répertoire SOURCES ou dans le répertoire utilisé par votre système à cet effet (le rpmbuild vous indiquera le chemin en cas d'erreur). cp utiles-bin.tar.gz /usr/src/redhat/sources/
Taper: rpmbuild -bb utiles.spec Ci-dessous le message renvoyé par cette commande qui aide à mieux comprendre ce que fait rpmbuild. Vous pourrez notamment obtenir l'emplacement de votre fichier rpm (Ecrit: /usr/src/redhat/rpms/i386/utiles-salle_simu-1.i386.rpm). rpmbuild -bb utiles.spec Exécution_de(%prep): /bin/sh -e /var/tmp/rpm-tmp.14045 + umask 022 + rm -rf utiles-salle_simu + /bin/mkdir -p utiles-salle_simu + cd utiles-salle_simu + /bin/gzip -dc /usr/src/redhat/sources/utiles-bin.tar.gz + tar -xvvf - drwxr-xr-x root/root 0 2008-07-28 16:58:36 utiles/ -rw-r--r-- root/root 1180892 2008-07-28 16:58:23 utiles/memoire-gdesmottes-2006.pdf -rwx------ root/root 272 2008-07-28 16:58:36 utiles/script_centos + STATUS=0 + '[' 0 -ne 0 ']' ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chown -Rhf root. ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chgrp -Rhf root. + /bin/chmod -Rf a+rx,u+w,g-w,o-w. + exit 0 Exécution_de(%install): /bin/sh -e /var/tmp/rpm-tmp.14045 + umask 022 + cd utiles-salle_simu + /bin/cp -a. /var/tmp/utiles-root + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip + /usr/lib/rpm/brp-strip-static-archive + /usr/lib/rpm/brp-strip-comment-note Traitement des fichiers: utiles-salle_simu-1 Requires(rpmlib): rpmlib(compressedfilenames) <= 3.0.4-1 rpmlib(payloadfileshaveprefix) <= 4.0-1 Vérification des fichiers non empaquetés: /usr/lib/rpm/check-files /var/tmp/utiles-root Ecrit: /usr/src/redhat/rpms/i386/utiles-salle_simu-1.i386.rpm Exécution_de(%clean): /bin/sh -e /var/tmp/rpm-tmp.14097 + umask 022 + cd utiles-salle_simu + '[' /var/tmp/utiles-root '!=' / ']' + rm -rf /var/tmp/utiles-root + exit 0
Vous pouvez tester la création de votre rpm, copier le dans le répertoire local: cp /usr/src/redhat/rpms/i386/utiles-salle_simu-1.i386.rpm./ Installer le paquetage créé: rpm -i utiles-salle_simu-1.i386.rpm Il suffit de vérifier que le répertoire /utiles a bien été créé et contient bien les fichiers attendus. Le nom du paquetage est utiles-salle_simu-1, il suffit de taper rpm -qa grep utiles pour le confirmer et rpm -e utiles-salle_simu-1 pour constater que le système l'enlève bien. Notre paquetage est prêt, il ne reste plus quà le placer dans un dépôt repomd (méta-données rpm basées sur rpm). Création d'un dépôt Sur CentOS le gestionnaire de paquets est yum. La démarche sera la suivante, d'abord tester la validité de notre dépôt créé puis modifier le fichier de configuration kickstart pour que livecdcreator récupère le paquetage et l'intègre sur le CD. Il existe un outil dédié à la création des dépots, il s'agit de createrepo. Pour l'installer taper: yum install createrepo La liste des commandes suivantes créé un répertoire depot et RPMS (dans depot), copie le rpm «personnalisé» dans le répertoire RPMS, génére (createrepo) les fichiers nécessaires à l'installation du dépôt. mkdir depot cd depot mkdir RPMS cp../utiles-salle_simu-1.i386.rpm./rpms/ createrepo /root/depot/rpms cd RPMS cd repodata Les paquetages peuvent donc être copiés dans le répertoire RPMS avant de lancer la commande createrepo. Après la commande createrepo, le répertoire RPMS contient les paquetages et un répertoire repodata qui contient les fichiers de méta-données repomd.xml, primary.xml.gz, filelists.xml.gz, filelists.xml.gz et other.xml.gz qui listent et décrivent les paquetages du dépôt. Pour installer le dépôt il suffit alors de créer un répertoire sur le serveur web dans le répertoire réservé aux fichiers CentOS, et d'y copier le contenu de notre répertoire RPMS. Sur le serveur web un répertoire radiac a été créé avec comme contenu le répertoire repodata et le paquetage utiles- Salle_simu-1.i386.rpm. Le dépôt est maintenant disponible a l'adresse http://www.ies.univ-montp2.fr/centos/radiac. Il faut donc rajouter ce dépôt pour yum. Les fichiers de configuration des dépots sont dans le répertoire /etc/yum.repos.d. Créer un fichier centos-radiac.repo dans ce répertoire avec le contenu suivant: /etc/yum.repos.d/ centos-radiac.repo
# Name: CentOS LiveCD repository [radiac] name = CentOS $releasever - Radiac baseurl = http://www.ies.univ-montp2.fr/centos/radiac enabled=1 protect=0 gpgcheck=0 Le tour est joué, il suffit de taper yum install utiles-salle_simu-1 et vous devez avoir en sortie un message dans le style suivant: yum install utiles-salle_simu-1 Loading "fastestmirror" plugin Loading mirror speeds from cached hostfile * livecd: www.nanotechnologies.qc.ca * base: mirror.in2p3.fr * updates: mirror.in2p3.fr * radiac: www.ies.univ-montp2.fr * addons: mirror.in2p3.fr * extras: mirror.in2p3.fr radiac 100% ========================= 951 B 00:00 primary.xml.gz 100% ========================= 656 B 00:00 radiac : ################################################## 1/1 Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package utiles.i386 0:Salle_simu-1 set to be updated --> Finished Dependency Resolution Dependencies Resolved ====================================================== ======================= Package Arch Version Repository Size ====================================================== ======================= Installing: utiles i386 Salle_simu-1 radiac 997 k Transaction Summary ====================================================== ======================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 997 k Is this ok [y/n]: y Downloading Packages: (1/1): utiles-salle_simu- 100% ========================= 997 kb 00:00
Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: utiles ######################### [1/1] Installed: utiles.i386 0:Salle_simu-1 Complete! Votre dépôt est fonctionnel. L'étape suivante est simplement d'indiquer dans le fichier de configuration de kickstart (pour livecd-creator) le lieu du dépôt et le nom du paquetage à installer. Il suffit de reprendre le fichier systeme.ks de création du livecd modifications du fichier systeme.ks repo --name=a-base --baseurl=http://www.ies.univ-montp2.fr/centos/os/i386 repo --name=a-updates --baseurl=http://www.ies.univmontp2.fr/centos/updates/i386 repo --name=a-extras --baseurl=http://www.ies.univmontp2.fr/centos/extras/i386 repo --name radiac --baseurl=http://www.ies.univ-montp2.fr/centos/radiac #repo --name=base --baseurl=http://isoredirect.centos.org/centos/5/os/ $basearch #repo --name=updates --baseurl=http://isoredirect.centos.org/centos/5/updates/ $basearch #repo --name=extras --baseurl=http://isoredirect.centos.org/centos/5/extras/ $basearch repo --name=live --baseurl=http://www.nanotechnologies.qc.ca/propos/linux/centos-live/ $basearch/live # other usefull packages Cluster_Administration-en-US Deployment_Guide-en-US Global_File_System-en-US Virtualization-en-US busybox mailx memtest86+ patch yum-fastestmirror yum-metadata-parser # Personnalisation RADIAC # Avant le post, ici par exemple utiles-salle_simu-1
Une fois systeme.ks modifié, le nouveau fichier systeme.iso est créé par la commande. LANG=C livecd-creator --config=systeme.ks fslabel=systeme Ca y est le CD peut être maintenant gravé avec le fichier systeme.iso, le CD permet de démarrer sur CentOS 5.2 avec un répertoire /utiles qui contient tous les fichiers choisis sans aucune intervention après le démarrage. Un peu plus d'infos repomd.xml le fichier principal du dépôt, très petit, contient des références aux autres fichiers ainsi que des sommes de contrôle et les dates des fichiers. primary.xml.gz contient les informations les plus importantes: la liste des paquetages(avec les version et les plateformes correspondantes), les prérequis, la taille des paquetages, un résumé et une description des paquetages... filelists.xml.gz contient la liste des fichiers inclus dans chacun des paquetages other.xml.gz n'est pas exploité par tous les gestionnaires de paquetage, il contient les informations sur les changements de chaque paquetage. Le fichier repomd est l'index du dépôt. Il liste une ou plusieurs métadonnées, utilisant le tag de données qui peut être : un fichier principal (listes de paquetage) filelists (fichiers dans les paquetages) groupes (sélections prédéfinies de paquetages) listes de correctifs autres (journaux de changements et données supplémentaires) Stephane.Arnal@ies.univ-montp2.fr