Distribution/Centos/Customize
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é.