Distribution/Centos/Customize

De TartareFR
Aller à la navigation Aller à la recherche

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}
Idea.png
Exploration du CD
On peut explorer l'arborescence de l'ISO ( n'affiche que les répertoires ):
tree -d ${iso_centos_dir}

Synchronisation du contenu de l'ISO

  1. 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}/
  2. Créartion du répertoire qui contiendra les RPM
    • Pour CentOS 5
      mkdir ${isodatadir}/CentOS
    • Pour CentOS 6
      mkdir ${isodatadir}/Packages
  3. Création d'un répertoire temporaire qui accueillera nos RPM téléchargés
    mkdir /tmp/rpm
  4. Création de la liste des RPM installés
    rpm -qa > /root/rpm.log
  5. On installe yum-utils pour la récupération des paquets en local:
    yum install -y yum-utils 
  6. Téléchargement des paquets RPM
    for i in $(cat /root/rpm.log) ; do yumdownloader $i --destdir=/tmp/rpm ; done
  7. 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/

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:

  1. Installation de l'outil
    • Pour CentOS 5
      yum install mkcdrec
    • Pour CentOS 6
      yum install isomd5sum
  2. Implantation de la somme de contrôle
    • Pour CentOS 5
      /var/opt/mkcdrec/bin/implantisomd5 $isofilename
    • Pour CentOS 6
      implantisomd5 $isofilename


L'ISO customisé est maintenant prêt à être utilisé.