« Distribution/Centos/Customize » : différence entre les versions

De TartareFR
Aller à la navigation Aller à la recherche
(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.


= Création des repertoires =
= Customisation =
On commence par crée les répertoires nécessaires:
== Export des variables ==
mkdir /mnt/cdimages/
mkdir /mnt/cdimages/CentOS-5.5-x86_64
mkdir /mnt/cdimages/CentOS-5.5-x86_64-core


= Montage de l'iso =
export centmaj=5
On monte ensuite l'ISO du CD1 de CentOS (qu'il faut bien entendu avoir téléchargé au préalable), on travaille avec la version x86_64 dans notre cas:
export centmin=5
  mount -t iso9660 -oloop,ro /home/admin/CentOS-5.5-x86_64-bin-1of8.iso /mnt/cdimages/CentOS-5.5-x86_64
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 peut explorer l'arborescence de l'ISO:
== Création des repertoires ==
  cd /mnt/cdimages
On commence par crée les répertoires nécessaires:
tree -d
  mkdir -p ${isodir} ${isodatadir}


= Installation des paquets prérequis =
== Montage de l'iso ==
On installe maintenant mkisofs et cdrecord pour la création de l'ISO et yum-utils pour la récupération des paquets en local:
On monte ensuite l'ISO du CD1 de CentOS (qu'il faut bien entendu avoir téléchargé au préalable)
  yum install mkisofs cdrecord yum-utils -y
  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 donc synchroniser le contenu de l'ISO qui est monté vers le répertoire avec lequel on va crée l'ISO customisé:
# 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é:
rsync -av --exclude CentOS/ /mnt/cdimages/CentOS-5.5-x86_64/ /mnt/cdimages/CentOS-5.5-x86_64-core/
#* Pour CentOS 5<pre>rsync -av --exclude CentOS/ ${iso_centos_dir}/* ${isodatadir}/</pre>
mkdir /mnt/cdimages/CentOS-5.5-x86_64-core/CentOS && mkdir /tmp/rpm
#* Pour CentOS 6<pre>rsync -av --exclude Packages/ ${iso_centos_dir}/* ${isodatadir}/</pre>
rpm -qa > /root/rpm.log ; for i in $(cat /root/rpm.log) ; do yumdownloader $i --destdir=/tmp/rpm ; done
# Créartion du répertoire qui contiendra les RPM
cp -r /tmp/rpm/* /mnt/cdimages/CentOS-5.5-x86_64-core/CentOS/
#* 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&nbsp;comps&nbsp;définit la façon dont les paquets seront regroupés durant l'installation:
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 /mnt/cdimages/CentOS-5.5-x86_64-core
  cd ${isodatadir}
  wc -l repodata/comps.xml11418 repodata/comps.xml
  compsname=$(ls repodata/*comps.xml | xargs basename)
grep "xml:lang" repodata/comps.xml | wc -l8811
  grep -v "xml:lang" repodata/${compsname} > /tmp/no-lang.comps.xml
  grep -v "xml:lang" repodata/comps.xml > /tmp/no-lang.comps.xml
wc -l /tmp/no-lang.comps.xml2607 /tmp/no-lang.comps.xml
  rm repodata/* -f
  rm repodata/* -f
  cp /tmp/no-lang.comps.xml repodata/comps.xml
  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é:
cd /mnt/cdimages/CentOS-5.5-x86_64-core/CentOS
* 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 repo =
== 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:
yum install createrepo -y
  cd ${isodatadir}
  cd /mnt/cdimages/CentOS-5.5-x86_64-core
  cat .discinfo
  cat .discinfo
  export discinfo=$(head -1 /mnt/cdimages/CentOS-5.5-x86_64-core/.discinfo)
  export discinfo=$(head -1 ${isodatadir}/.discinfo)
  echo $discinfo
  echo $discinfo
  createrepo -u "media://$discinfo" -g repodata/comps.xml /mnt/cdimages/CentOS-5.5-x86_64-core
  createrepo -u "media://$discinfo" -g repodata/comps.xml ${isodatadir}
 
== Création de l'ISO bootable ==


= 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:
#export isofilename=/mnt/cdimages/CentOS-5.5-x86_64-core.iso
 
  #mkisofs -r -R -J -T -v \
  mkisofs -r -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table \
-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-5u5-core 64 bit" -p "CentOS_B2P" -A "CentOS-5u5-core 64 bit-2011/02/15" \
  -b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" \
  -b isolinux/isolinux.bin -c isolinux/boot.cat -x "lost+found" \
  -o $isofilename /mnt/cdimages/CentOS-5.5-x86_64-core
  -o ${isofilename} ${isodatadir}


= Implantation du MD5SUM dans L'ISO =
== 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:
#yum install mkcdrec
# Installation de l'outil
#updatedb
#* Pour CentOS 5<pre>yum install mkcdrec</pre>
#locate implantisomd5
#* Pour CentOS 6<pre>yum install isomd5sum</pre>
/var/opt/mkcdrec/bin/implantisomd5 $isofilename
# 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}
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é.