« Distribution/Centos/Customize » : différence entre les versions
(Page créée avec « = Introduction = Ce document décrit le déroulement de la customisation de l'ISO de CentOS. Cette opération vise à réduire au maximum la distribution et ainsi optimiser l... ») |
Aucun résumé des modifications |
||
| Ligne 2 : | Ligne 2 : | ||
Ce document décrit le déroulement de la customisation de l'ISO de CentOS. Cette opération vise à réduire au maximum la distribution et ainsi optimiser le temps nécessaire à l'installation. Cela va permettre également de fournir une image d'amorce au serveur cobbler qui permet de faire des installations via PXE. | Ce document décrit le déroulement de la customisation de l'ISO de CentOS. Cette opération vise à réduire au maximum la distribution et ainsi optimiser le temps nécessaire à l'installation. Cela va permettre également de fournir une image d'amorce au serveur cobbler qui permet de faire des installations via PXE. | ||
= | = Customisation = | ||
== Export des variables == | |||
= | export centmaj=5 | ||
export centmin=5 | |||
export curdate=$(date date '+%Y/%m/%d') | |||
export arch=$(uname -i) | |||
[ "${arch}" == "x86_64" ] && bits=64 || bits=32 | |||
export bits | |||
export isofilename=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch}-core.iso | |||
export isodatadir=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch}-core | |||
export iso_centos_dir=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch} | |||
export iso_centos_file=/home/admin/CentOS-${centmaj}.${centmin}-${arch}-bin-1of8.iso | |||
On | == Création des repertoires == | ||
On commence par crée les répertoires nécessaires: | |||
mkdir -p ${isodir} ${isodatadir} | |||
= | == Montage de l'iso == | ||
On | On monte ensuite l'ISO du CD1 de CentOS (qu'il faut bien entendu avoir téléchargé au préalable) | ||
mount -t iso9660 -oloop,ro ${iso_centos_file} ${iso_centos_dir} | |||
{{Admon/tip|Exploration du CD|On peut explorer l'arborescence de l'ISO ( n'affiche que les répertoires ):<pre>tree -d ${iso_centos_dir}</pre>}} | |||
= Synchronisation du contenu de l'ISO = | == Synchronisation du contenu de l'ISO == | ||
On va | # On va synchroniser le contenu de l'ISO qui est monté, exception faite du répertoires contenant les paquets RPM, vers le répertoire dans lequel on va crée l'ISO customisé: | ||
#* Pour CentOS 5<pre>rsync -av --exclude CentOS/ ${iso_centos_dir}/* ${isodatadir}/</pre> | |||
#* Pour CentOS 6<pre>rsync -av --exclude Packages/ ${iso_centos_dir}/* ${isodatadir}/</pre> | |||
# Créartion du répertoire qui contiendra les RPM | |||
#* Pour CentOS 5<pre>mkdir ${isodatadir}/CentOS</pre> | |||
#* Pour CentOS 6<pre>mkdir ${isodatadir}/Packages</pre> | |||
# Création d'un répertoire temporaire qui accueillera nos RPM téléchargés<pre>mkdir /tmp/rpm</pre> | |||
# Création de la liste des RPM installés<pre>rpm -qa > /root/rpm.log</pre> | |||
# On installe yum-utils pour la récupération des paquets en local:<pre>yum install -y yum-utils </pre> | |||
# Téléchargement des paquets RPM<pre>for i in $(cat /root/rpm.log) ; do yumdownloader $i --destdir=/tmp/rpm ; done</pre> | |||
# On copie nos paquets RPM dans notre répertoire de construction de l'ISO | |||
#* Pour CentOS 5<pre>cp -r /tmp/rpm/* ${isodatadir}/CentOS/</pre> | |||
#* Pour CentOS 6<pre>cp -r /tmp/rpm/* ${isodatadir}/Packages/</pre> | |||
= Edition du fichier comps.XML = | == Edition du fichier comps.XML == | ||
On va maintenant éditer le fichier comps.xml. Le fichier | On va maintenant éditer le fichier comps.xml. Le fichier <path>repodata/comps</path> définit la façon dont les paquets seront regroupés durant l'installation: | ||
cd | cd ${isodatadir} | ||
compsname=$(ls repodata/*comps.xml | xargs basename) | |||
grep -v "xml:lang" repodata/${compsname} > /tmp/no-lang.comps.xml | |||
grep -v "xml:lang" repodata/ | |||
rm repodata/* -f | rm repodata/* -f | ||
cp /tmp/no-lang.comps.xml repodata/ | cp /tmp/no-lang.comps.xml repodata/${compsname} | ||
= Test des dépendances RPM = | == Test des dépendances RPM == | ||
On peut maintenant vérifier qu'il n'y a aucun problème dans les dépendances des RPM de notre nouvel ISO customisé: | On peut maintenant vérifier qu'il n'y a aucun problème dans les dépendances des RPM de notre nouvel ISO customisé: | ||
* Pour CentOS 5<pre>cd ${isodatadir}/CentOS/</pre> | |||
* Pour CentOS 6<pre>cd ${isodatadir}/Packages/</pre> | |||
mkdir /tmp/testrpmdb | mkdir /tmp/testrpmdb | ||
rpm --initdb --dbpath /tmp/testrpmdb/ | rpm --initdb --dbpath /tmp/testrpmdb/ | ||
| Ligne 51 : | Ligne 63 : | ||
rm -rf /tmp/testrpmdb | rm -rf /tmp/testrpmdb | ||
= Création du | == Installation des paquets prérequis == | ||
On installe maintenant mkisofs et cdrecord pour la création de l'ISO, ainsi que createrepo pour initailiser le dépôt. | |||
yum install -y mkisofs cdrecord createrepo | |||
== Création du dépôt des RPMs == | |||
Ensuite on va créer le repo local contenu dans l'ISO: | Ensuite on va créer le repo local contenu dans l'ISO: | ||
cd ${isodatadir} | |||
cd | |||
cat .discinfo | cat .discinfo | ||
export discinfo=$(head -1 | export discinfo=$(head -1 ${isodatadir}/.discinfo) | ||
echo $discinfo | echo $discinfo | ||
createrepo -u "media://$discinfo" -g repodata/comps.xml | createrepo -u "media://$discinfo" -g repodata/comps.xml ${isodatadir} | ||
== Création de l'ISO bootable == | |||
On peut enfin créer notre ISO customisé après avoir déroulé toutes ces étapes: | On peut enfin créer notre ISO customisé après avoir déroulé toutes ces étapes: | ||
mkisofs -r -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table \ | |||
-V "CentOS-${centmaj}u${centmin}-core ${bits} bit" -p "CentOS_B2P" -A "CentOS-${centmaj}u${centmin}-core ${bits} bit-${curdate}" \ | |||
-V "CentOS- | |||
-b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" \ | -b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" \ | ||
-o $isofilename | -o ${isofilename} ${isodatadir} | ||
= Implantation | == Implantation de la somme de contrôle MD5 dans L'ISO == | ||
La dernière étape consiste à implanter le md5sum dans l'ISO: | La dernière étape consiste à implanter le md5sum dans l'ISO: | ||
# Installation de l'outil | |||
#* Pour CentOS 5<pre>yum install mkcdrec</pre> | |||
#* Pour CentOS 6<pre>yum install isomd5sum</pre> | |||
# Implantation de la somme de contrôle | |||
#* Pour CentOS 5<pre>/var/opt/mkcdrec/bin/implantisomd5 $isofilename</pre> | |||
#* Pour CentOS 6<pre>implantisomd5 $isofilename</pre> | |||
L'ISO customisé est maintenant prêt à être utilisé. | L'ISO customisé est maintenant prêt à être utilisé. | ||
Dernière version du 12 mars 2013 à 18:26
Introduction
Ce document décrit le déroulement de la customisation de l'ISO de CentOS. Cette opération vise à réduire au maximum la distribution et ainsi optimiser le temps nécessaire à l'installation. Cela va permettre également de fournir une image d'amorce au serveur cobbler qui permet de faire des installations via PXE.
Customisation
Export des variables
export centmaj=5
export centmin=5
export curdate=$(date date '+%Y/%m/%d')
export arch=$(uname -i)
[ "${arch}" == "x86_64" ] && bits=64 || bits=32
export bits
export isofilename=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch}-core.iso
export isodatadir=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch}-core
export iso_centos_dir=/mnt/cdimages/CentOS-${centmaj}.${centmin}-${arch}
export iso_centos_file=/home/admin/CentOS-${centmaj}.${centmin}-${arch}-bin-1of8.iso
Création des repertoires
On commence par crée les répertoires nécessaires:
mkdir -p ${isodir} ${isodatadir}
Montage de l'iso
On monte ensuite l'ISO du CD1 de CentOS (qu'il faut bien entendu avoir téléchargé au préalable)
mount -t iso9660 -oloop,ro ${iso_centos_file} ${iso_centos_dir}
Synchronisation du contenu de l'ISO
- On va synchroniser le contenu de l'ISO qui est monté, exception faite du répertoires contenant les paquets RPM, vers le répertoire dans lequel on va crée l'ISO customisé:
- Pour CentOS 5
rsync -av --exclude CentOS/ ${iso_centos_dir}/* ${isodatadir}/ - Pour CentOS 6
rsync -av --exclude Packages/ ${iso_centos_dir}/* ${isodatadir}/
- Pour CentOS 5
- Créartion du répertoire qui contiendra les RPM
- Pour CentOS 5
mkdir ${isodatadir}/CentOS - Pour CentOS 6
mkdir ${isodatadir}/Packages
- Pour CentOS 5
- Création d'un répertoire temporaire qui accueillera nos RPM téléchargés
mkdir /tmp/rpm
- Création de la liste des RPM installés
rpm -qa > /root/rpm.log
- On installe yum-utils pour la récupération des paquets en local:
yum install -y yum-utils
- Téléchargement des paquets RPM
for i in $(cat /root/rpm.log) ; do yumdownloader $i --destdir=/tmp/rpm ; done
- On copie nos paquets RPM dans notre répertoire de construction de l'ISO
- Pour CentOS 5
cp -r /tmp/rpm/* ${isodatadir}/CentOS/ - Pour CentOS 6
cp -r /tmp/rpm/* ${isodatadir}/Packages/
- Pour CentOS 5
Edition du fichier comps.XML
On va maintenant éditer le fichier comps.xml. Le fichier <path>repodata/comps</path> définit la façon dont les paquets seront regroupés durant l'installation:
cd ${isodatadir}
compsname=$(ls repodata/*comps.xml | xargs basename)
grep -v "xml:lang" repodata/${compsname} > /tmp/no-lang.comps.xml
rm repodata/* -f
cp /tmp/no-lang.comps.xml repodata/${compsname}
Test des dépendances RPM
On peut maintenant vérifier qu'il n'y a aucun problème dans les dépendances des RPM de notre nouvel ISO customisé:
- Pour CentOS 5
cd ${isodatadir}/CentOS/ - Pour CentOS 6
cd ${isodatadir}/Packages/
mkdir /tmp/testrpmdb rpm --initdb --dbpath /tmp/testrpmdb/ rpm --test --dbpath /tmp/testrpmdb/ -ivh *.rpm Préparation... ########################################### [100%]
On vérifie que la dernière comande a bien fonctionné en affichant la valeur de retour qui doit être nulle
echo $? 0
Et en affichant la taille du répertoire
du -sh /tmp/testrpmdb/644K /tmp/testrpmdb/ rm -rf /tmp/testrpmdb
Installation des paquets prérequis
On installe maintenant mkisofs et cdrecord pour la création de l'ISO, ainsi que createrepo pour initailiser le dépôt.
yum install -y mkisofs cdrecord createrepo
Création du dépôt des RPMs
Ensuite on va créer le repo local contenu dans l'ISO:
cd ${isodatadir}
cat .discinfo
export discinfo=$(head -1 ${isodatadir}/.discinfo)
echo $discinfo
createrepo -u "media://$discinfo" -g repodata/comps.xml ${isodatadir}
Création de l'ISO bootable
On peut enfin créer notre ISO customisé après avoir déroulé toutes ces étapes:
mkisofs -r -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table \
-V "CentOS-${centmaj}u${centmin}-core ${bits} bit" -p "CentOS_B2P" -A "CentOS-${centmaj}u${centmin}-core ${bits} bit-${curdate}" \
-b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" \
-o ${isofilename} ${isodatadir}
Implantation de la somme de contrôle MD5 dans L'ISO
La dernière étape consiste à implanter le md5sum dans l'ISO:
- Installation de l'outil
- Pour CentOS 5
yum install mkcdrec
- Pour CentOS 6
yum install isomd5sum
- Pour CentOS 5
- Implantation de la somme de contrôle
- Pour CentOS 5
/var/opt/mkcdrec/bin/implantisomd5 $isofilename
- Pour CentOS 6
implantisomd5 $isofilename
- Pour CentOS 5
L'ISO customisé est maintenant prêt à être utilisé.