  RedHat Linux KickStart HOWTO
  Martin Hamilton <martinh@gnu.org>
  Traduction: Laurent Martin <l_martin@worldnet.fr>
  v0.1, 28 septembre 1998

  Ce HOWTO dcrit brivement comment utiliser le systme _K_i_c_k_S_t_a_r_t de
  RedHat pour rapidement installer un grand nombre de systmes Linux
  identiques. Pour les utilisateurs expriments, on dcrit comment mod
  ifier la procdure d'installation de KickStart pour l'adapter  ses
  propres besoins et donne quelques indications pour crer des paque
  tages RPM.
  ______________________________________________________________________

  Table des matires


  1. Copyright

  2. Page sur la Toile

  3. Introduction

  4. Prrequis

  5. Prparation d'une disquette d'amorage

  6. Configuration de BOOTP/DHCP et NFS

  7. Le fichier de configuration de KickStart

     7.1 Information systme
     7.2 Paquetages  installer
     7.3 Commandes shell aprs l'installation

  8. L'installation

  9. Montage des disquettes d'amorage et supplmentaire

  10. Modifier l'installateur RedHat

  11. Crer vos propres RPM

  12. FAQ/Liste de voeux

  13. Crdits

  14. Annexe



  ______________________________________________________________________

  11..  CCooppyyrriigghhtt

  Copyright (c) 1998 Martin Hamilton, tous droits de reproduction
  rservs. Ce document est un  document libre . Vous pouvez le
  modifier ou le redistribuer si vous respectez les termes de la version
  2 ou ultrieure de la GNU General Public License
  <http://www.gnu.org/copyleft/gpl.html>



  22..  PPaaggee ssuurr llaa TTooiillee

  Si vous avez obtenu ce document dans le rpertoire HOWTO d'un site
  Linux ou sur un CD-ROM, vous pouvez vrifier la page KickStart HOWTO
  <http://wwwcache.ja.net/dev/kickstart/>

  pour voir s'il n'y a pas une nouvelle version de disponible.



  33..  IInnttrroodduuccttiioonn

  La version 5 de Linux RedHat est livre avec un utilitaire peu connu
  (et jusqu' aujourd'hui quasiment pas document) appel _K_i_c_k_S_t_a_r_t. Il
  vous permet d'automatiser (presque) toute l'installation d'une
  distribution Linux RedHat et notamment:


    la slection de la langue;

    la configuration rseau et la slection des sources de la
     distribution;

    la slection du clavier;

    l'installation de l'utilitaire de dmarrage (ex: lilo);

    le partitionnement du disque et la cration du systme de fichiers;

    la slection de la souris;

    la configuration du serveur X-Window;

    la slection de la zone gographique;

    la slection du mot de passe de l'utilisateur _r_o_o_t;

    la slection des paquetages  installer.


  Les utilisateurs perspicaces d'une distribution RedHat auront
  probablement ralis qu'il s'agit des principales tapes de
  l'installation manuelle d'une distribution RedHat. KickStart vous
  permet d'automatiser le processus d'installation en plaant les
  informations que vous rentreriez normalement au clavier dans un
  fichier de configuration.


  _M_a_i_s _a_t_t_e_n_d_e_z_, _i_l _y _a _m_i_e_u_x_!


  Une fois le processus d'installation achev, KickStart vous permet de
  spcifier une liste de commandes shell que vous souhaitez voir
  excutes. Cela signifie que vous pouvez automatiquement installer des
  logiciels locaux qui ne font pas partie de la distribution RedHat (et
  oui, il existe bien d'autres logiciels libres que ceux fournis avec la
  distribution RedHat! Certains ne peuvent, pour des raisons lgales,
  tre distribus par RedHat, par exemple: les systmes de cryptage ssh
  et PGP) et procder aux derniers rglages ncessaires pour rendre
  votre nouveau systme d'exploitation parfaitement oprationnel.



  44..  PPrrrreeqquuiiss

  Il y a deux manires d'utiliser KickStart. La premire est de copier
  le fichier de configuration de KickStart sur une disquette d'amorage
  RedHat. La seconde est d'utiliser une disquette d'amorage classique
  et de rcuprer ce fichier de configuration via le rseau.

  Dans les deux cas, vous aurez besoin:


  1. de machines utilisant un processeur Intel (i386) - KickStart ne
     semble marcher que sur ces machines au moment o j'cris ces
     lignes;

  2. du fichier de configuration de KickStart - nous en reparlerons dans
     la prochaine section;

  3. d'une disquette d'amorage RedHat - de prfrence celle du
     rpertoire _u_p_d_a_t_e_s, pour profiter des dernires mises  jour et
     corrections des gestionnaires de priphrique;

  4. des entres DNS pour les adresses IP que vous allez utiliser -
     optionnel, mais cela vitera que le processus d'installation ne
     vous demande sans cesse le domaine de votre machine;


  Si vous souhaitez rcuprer le fichier de configuration via le rseau,
  vous aurez galement besoin:


  1. d'un serveur BOOTP/DHCP pour le rseau sur lequel seront installes
     vos machines. Certains serveurs alloueront automatiquement les
     nouvelles adresses dans une plage donne (par exemple: le serveur
     BOOTP CMU <ftp://ftp.ntplx.net/pub/networking/bootp/> avec les
     extensions d'adressage dynamique).

  2. d'un serveur NFS sur la mme machine que le serveur BOOTP avec une
     copie de la distribution RedHat monte dessus et le fichier de
     configuration de KickStart dans un rpertoire _/_k_i_c_k_s_t_a_r_t export
     par NFS.


  Il doit tre possible de se passer du serveur BOOTP - cela est
  implicite dans la documentation de KickStart. Mais je n'ai pas essay
  moi-mme. De mme, il doit tre possible de procder  l'installation
  depuis un CD-ROM plutt que depuis un serveur NFS. Si vous essayez
  l'une de ces deux possibilits, faites moi savoir comment vous avez
  procder pour que je puisse l'indiquer dans ce document.


  Notez qu'il n'est pas absolument indispensable que le serveur NFS
  contienne la distribution RedHat et le fichier de configuration
  KickStart, cela rend juste les choses un petit peu plus simples de
  tout avoir  un seul endroit.



  55..  PPrrppaarraattiioonn dd''uunnee ddiissqquueettttee dd''aammoorraaggee

  Tout ce que vous avez  faire est de copier le fichier de
  configuration de KickStart sur la disquette d'amoage RedHat sous le
  nom _k_s_._c_f_g:



         mcopy ks.cfg a:







  La disquette est particulirement remplie, et vous pourriez avoir
  besoin de dtruire certains fichiers pour faire de la place. J'ai
  russi  mettre mon fichier de configuration sur la disquette en
  supprimant tous les fichiers de messages qu'affiche normalement
  SYSLINUX:



         mdel a:\*.msg





  Vous pouvez galement diter le fichier de configuration de SYSLINUX:
  _s_y_s_l_i_n_u_x_._c_f_g. Il est situ  la racine de la disquette d'amorage. Le
  fichier _s_y_s_l_i_n_u_x_._c_f_g suivant permet de passer immdiatement en mode
  KickStart lorsque la machine dmarre:



         default ks
         prompt 0
         label ks
           kernel vmlinuz
           append ks=floppy initrd=initrd.img






  66..  CCoonnffiigguurraattiioonn ddee BBOOOOTTPP//DDHHCCPP eett NNFFSS

  Si vous vous demandez ce que peuvent bien tre ces BOOTP et DHCP, une
  description dtaille est disponible sur le site DHCP
  <http://www.dhcp.org/>. NFS est document en dtail dans le NFS HOWTO.

  Dans la configuration NFS + BOOTP/DHCP que nous considrons, le
  fichier de configuration de KickStart doit tre montable par NFS par
  la machine que l'on installe  partir de _/_k_i_c_k_s_t_a_r_t_/_I_P_A_D_D_R_-_k_i_c_k_s_t_a_r_t
  sur le serveur BOOTP/DHCP, o _I_P_A_D_D_R est l'adresse IP de la nouvelle
  machine. Par exemple _/_k_i_c_k_s_t_a_r_t_/_1_9_8_._1_6_8_._2_5_4_._2_5_4_-_k_i_c_k_s_t_a_r_t pour la
  machine _1_9_8_._1_6_8_._2_5_4_._2_5_4.

  En thorie, il doit tre possible de modifier cet emplacement en
  renvoyant le paramtre bf (_b_o_o_t _f_i_l_e) dans la rponse du serveur
  BOOTP/DHCP. Il doit mme tre possible d'avoir ces fichiers monts par
  NFS  partir d'une autre machine.

  Pour exporter par NFS certains rpertoires  partir d'une machine
  Linux existante, crez le fichier _/_e_t_c_/_e_x_p_o_r_t_s avec un contenu
  ressemblant :



       /kickstart *.swedish-chef.org(ro,no_root_squash)
       /mnt/cdrom *.swedish-chef.org(ro,no_root_squash)




  Notez que si vous n'avez pas enregistrer les adresses IP que vous
  allez utiliser dans le DNS, le serveur NFS ou le portmapper RPC risque
  de vous rejeter. Vous pouvez probablement vous en sortir en indiquant
  les paires adresse IP/masque rseau dans les fichiers de
  configuration:



       /kickstart 198.168.254.0/255.255.255.0(ro,no_root_squash)





  et dans _/_e_t_c_/_h_o_s_t_s_._a_l_l_o_w:




       ALL: 194.82.103.0/255.255.255.0: ALLOW





  Soyez conscient que si vous indiquez le mot de passe de _r_o_o_t dans le
  fichier de configuration de KickStart ou exportez par NFS des
  rpertoires contenant des informations sensibles, vous devrez prendre
  soin de rendre ces informations accessibles  aussi peu de personnes
  que possible. Cela peut tre fait en restreignant les permissions des
  rpertoires exports, par exemple en indiquant un hte ou un sous-
  rseau particulier plutt qu'un domaine entier.

  La plupart des serveurs NFS requirent que vous indiquiez  mountd et
  nfsd (sur certaines versions d'Unix, ils sont prcds du prfixe
  rpc.) que le fichier _/_e_t_c_/_e_x_p_o_r_t_s a t modifi - habituellement en
  envoyant un SIGHUP. Il existe souvent un programme ou un script appel
  exportfs qui fera cela pour vous, par exemple:



       # exportfs -a





  Si NFS ne fonctionne pas lorsque votre machine dmarre, les
  rpertoires pourront ne pas tre exports automatiquement. Essayez de
  redmarrer la machine ou lancer les programmes suivants sous _r_o_o_t:



       # portmap
       # rpc.nfsd
       # rpc.mountd





  Comme mentionn prcdemment, sur certains systme le prfixe rpc.
  n'est pas utilis. Dans les distributions Unix les plus rcentes, ces
  programmes se trouvent dans le rpertoire _/_u_s_r_/_s_b_i_n qui peut ne pas
  encore tre dans votre variable PATH. Le programme portmap est parfois
  appel rpcbind, sous Solaris par exemple.

  Si vous utilisez le serveur BOOTP CMU avec DHCP et les extensions
  d'adressage dynamique voqu plus haut, une entre du fichier
  _/_e_t_c_/_b_o_o_t_p_t_a_b (_/_e_t_c_/_b_o_o_t_p_t_a_b est l'emplacement normal du fichier de
  configuration de BOOTP/DHCP) devrait ressembler  cela:



         .dynamic-1:ip=198.168.254.128:T254=0x30:T250="ds=198.168.254.2:
         dn=swedish-chef.org:sm=255.255.255.0:gw=198.168.254.1:
         dl=0xFFFFFFFF":





  (passages  la ligne pour plus de clart)

  Cette ligne indique que les nouvelles machines se verront affecter
  dynamiquement une adresse commenant  _1_9_8_._1_6_8_._2_5_4_._1_2_8 et continuant
  pour les 48 adresses (la valeur hxadcimale _3_0) suivantes. Chaque
  client recevra en retour la valeur de _T_2_5_0. Dans notre exemple, cela
  donne:


    le serveur DNS (ds)  _1_9_8_._1_6_8_._2_5_4_._2;

    le nom de domaine (dn)  _s_w_e_d_i_s_h_-_c_h_e_f_._o_r_g;

    le masque du sous-rseau  (sm)  _2_5_5_._2_5_5_._2_5_5_._0;

    la passerelle par dfaut (gw)  _1_9_8_._1_6_8_._2_5_4_._1;

    la dure de vie  (dl) (combien de temps l'adresse sera valide) 
      pour toujours .


  Il semble qu'un grand nombre de versions de ce serveur ne grent pas
  l'adressage dynamique. Pour celles-ci, vous devrez numrer les
  adresses physiques (typiquement MAC Ethernet) de chacune des machines
   installer dans _/_e_t_c_/_b_o_o_p_t_a_b. Ces entres devraient ressembler 
  quelque chose comme:



       bork.swedish-chef.org:\
         ip=198.168.254.128:\
         ha=0000E8188E56:\
         ds=198.168.254.2:\
         dn=swedish-chef.org:\
         sm=255.255.255.0:\
         gw=198.168.254.1:\
         dl=0xFFFFFFFF":




  Notez que le paramtre ha correspond  l'adresse physique de la
  machine  installer.


  77..  LLee ffiicchhiieerr ddee ccoonnffiigguurraattiioonn ddee KKiicckkSSttaarrtt

  Le fichier de configuration se compose de trois sections principales:


  1. informations sur le systme, partionnement des disques et
     configuration rseau;


  2. paquetages RedHat  installer;

  3. commandes shells  excuter aprs l'installation.

  Il existe d'autres possibilits que nous n'aborderons pas ici mais qui
  ppoouurrrraaiieenntt marcher. Pour de plus amples informations, regardez
  l'exmple de fichier de configuration de KickStart dans
  _m_i_s_c_/_s_r_c_/_i_n_s_t_a_l_l_/_k_s_._s_a_m_p et le fichier _d_o_c_/_R_E_A_D_M_E_._k_s dans le
  rpertoire _i_3_8_6 d'une distribution RedHat sur votre CD-ROM ou sur un
  site miroir de RedHat.



  77..11..  IInnffoorrmmaattiioonn ssyyssttmmee

  Les commandes que j'ai utilises sont:



     llaanngg
        Configuration de la langue, pour l'anglais:


          lang en




     nneettwwoorrkk
        Configuration du rseau, pour utiliser BOOTP/DHCP:


          network --bootp




     nnffss
        serveur NFS et rpertoire  partir duquel l'installation doit
        avoir lieu:


          nfs --server chicken.swedish-chef.org /mnt/cdrom




     pour utiliser le serveur NFS _c_h_i_c_k_e_n_._s_w_e_d_i_s_h_-_c_h_e_f_._o_r_g et essayer de
     monter la distribution RedHat  partir du rpertoire _/_m_n_t_/_c_d_r_o_m.

     kkeeyybbooaarrdd
        Slection du type de clavier, pour un clavier anglais:


          keyboard uk




     zzeerroommbbrr
        Efface le secteur d'amorage du disque (MBR) - enlve tous les
        programmes de lancement pouvant s'y trouver.

     cclleeaarrppaarrtt
        Efface les partitions existantes, pour supprimer toutes les
        partitions disque avant l'installation:
          clearpart -all




     ppaarrtt
        Partionne le disque, pour crer un systme de fichier de 500Mo:


          part / --size 500




     iinnssttaallll
        Effectue une nouvelle installation de RedHat.

     mmoouussee
        Dfinit la souris utilise, pour une souris PS/2 ou compatible:


          mouse ps/2




     ttiimmeezzoonnee
        Dfinit le fuseau horaire, pour l'heure anglaise:


          timezone --utc Europe/London




     rroooottppww
        Dfinit le mot de passe initial de _r_o_o_t, bas sur un mot de
        passe dj crypt:


          rootpw --iscrypted XaacoeGPmf/A.




     lliilloo
        Installe le programme LILO, pour l'installer dans le secteur
        d'amorage du disque (MBR):


          lilo --location mbr




     %%ppaacckkaaggeess
        Paquetages  installer - voir ci-aprs.

     %%ppoosstt
        Commandes shells  lancer aprs l'installation - voir ci-aprs.

  Notez que le rpertoire dans lequel KickStart va chercher la
  distribution RedHat doit contenir un sous-rpertoire _R_e_d_H_a_t qui
  contient la distribution RedHat pour la plate-forme considre. Dans
  notre exemple, nous devrions avoir quelque chose comme:

       /mnt/cdrom/RedHat
       /mnt/cdrom/RedHat/base
       /mnt/cdrom/RedHat/contents
       /mnt/cdrom/RedHat/i386
       /mnt/cdrom/RedHat/instimage
       /mnt/cdrom/RedHat/RPMS
       /mnt/cdrom/RPM-PGP-KEY





  Si vous souhaitez crer vos propres mots de passe crypts, il vous
  suffit d'utiliser Perl:



       % perl -e 'print crypt("schmurrdegurr", "Xa") . "\n";'p





  Autres options que je n'ai pas testes:


     ccddrroomm
        Installe  partir d'un CD-ROM plut que du rseau.

     ddeevviiccee
        Dclare explicitement les dtails d'un priphrique, par
        exemple:


          device ethernet 3c509 --opts "io=0x330, irq=7"




     D'autres valeurs de device sont possibles dont scsi pour les
     contrleurs SCSI et cdrom pour les gestionnaires de CD-ROM pro
     pritaires.

     uuppggrraaddee
        Met  jour une installation existante au lieu d'en installer une
        nouvelle.

     xxccoonnffiigg
        Configure le serveur X-Window, la carte graphique et le
        moniteur, par exemple:


          xconfig --server "Mach64" --monitor "tatung cm14uhe"




  Je n'ai pas beaucoup creus cette dernire option car je ne prvois
  pas d'utiliser X sur les machines installes avec KickStart. Si vous
  le faites, tenez moi au courant.

  Voici  quoi ressemble maintenant la premire partie du fichier de
  configuration de KickStart:



  lang en
  network --bootp
  nfs --server chicken.swedish-chef.org /mnt/cdrom
  keyboard uk
  zerombr yes
  clearpart --all
  part / --size 500
  part swap --size 120
  install
  mouse ps/2
  timezone --utc Europe/London
  rootpw --iscrypted XaacoeGPmf/A.
  lilo --location mbr







  77..22..  PPaaqquueettaaggeess  iinnssttaalllleerr

  La partie du fichier de configuration de KickStart consacre aux
  paquetages dbute par une ligne avec la directive %packages.  Elle est
  suivie par l'un des deux types de spcifications de paquetage: des
  paquetages peuvent tre installs individuellement en donnant le nom
  de leur RPM (sans la version ni la plate-forme), des groupes de
  paquetages peuvent tre installs en donnant le nom de leur groupe.

  Voici un exemple de la section des paquetages d'un fichier de
  configuration de KickStart:



       %packages
       @ Base
       netkit-base
       bind-utils
       ncftp
       rdate
       tcp_wrappers
       traceroute
       cmu-snmp





  Bien,  quoi correspondent ces groupes? Il y a un grand nombre de
  groupes dfinis par dfaut dans un fichier nomm _b_a_s_e_/_c_o_m_p_s dans le
  rpertoire racine de la distribution RedHat. Voici ceux que l'on
  pouvait y trouver au moment o j'cris ces lignes:


    Base;

    Gestionnaire d'imprimante;

    Systme X-Window;

    Outils Mail/WWW/News;

    Connexion DOS/Windows;

    Gestionnaires de fichiers;

    Manipulation graphique;

    Jeux sous X-Window;

    Jeux en mode console;

    Gestionnaires multimdia sous X-Window;

    Console Multimedia;

    Serveur d'impression;

    Station en rseau;

    Station en _d_i_a_l_-_u_p;

    Serveur de news;

    Serveur NFS;

    Connection SMB (Samba) ;

    Connexion IPX/Netware(tm);

    Serveur FTP anonyme/Gopher;

    Serveur Web;

    Serveur de noms DNS;

    Serveur Postgres (SQL);

    Gestion de rseau;

    TeX;

    Emacs;

    Emacs avec X-Window;

    Dveloppement en C;

    Bibliothques de dveloppement;

    Dveloppement en C++ ;

    Development sous X-Window;

    Documentation supplmentaire.


  Vous noterez qu'ils correspondent aux diffrentes configurations qui
  vous sont proposes lors de l'installation manuelle. Notez galement
  que certains paquetages sont prsents dans plusieurs groupes, sans que
  cela pose de problme lors de l'installation. L'entre d'un groupe
  dans la liste _c_o_m_p_s ressemble  quelque chose comme:










  0 Extra Documentation
  sag
  lpg
  howto
  faq
  man-pages
  end





  Il semble que les groupes dont le nom est prcd d'un _1 fasse partie
  de l'installation par dfaut. Il semble donc possible de pousser un
  peu plus loin la personnalisation du processus d'installation en
  crant ses propres groupes ou en redfinissant les groupes existant.
  Gardez moi au courant si vous essayez de le faire.


  77..33..  CCoommmmaannddeess sshheellll aapprrss ll''iinnssttaallllaattiioonn

  C'est probablement la fonctionnalit la plus intressante et en tous
  cas celle qui n'a pas d'quivalent direct dans le processus
  d'installation manuel. Ce que nous pouvons faire ici est de dfinir un
  ensemble de commandes de niveau shell qui seront excutes une fois
  l'installation termine (partitionnement du disque, installation des
  paquetages, etc.)


  Cette section dbute par la directive %post dans le fichier de
  configuration de KickStart.  Vous pouvez ensuite utiliser tous les
  utilitaires qui viennent d'tre installs sur votre nouvelle machine
  Linux, par exemple:



       %post
       ln -s /etc/rc.d/init.d /etc/init.d
       ln -s /etc/rc.d/rc.local /etc/rc.local
       ln -s /usr/bin/md5sum /usr/bin/md5
       ln -s /usr/bin/perl /usr/local/bin/perl
       chmod ug-s /bin/linuxconf
       mkdir /var/tmp/tmp
       perl -spi -e 's!image=/boot/vmlinuz-.*!image=/boot/vmlinuz!' /etc/lilo.conf
       rm /etc/rc.d/rc*.d/*sendmail





  Vous pouvez galement rediriger les flux standards:



       cat <<EOF >>/etc/passwd
       squid:*:102:3500:Squid Proxy:/usr/squid:/bin/bash
       EOF

       cat <<EOF >>/etc/group
       cache:x:3500:
       EOF





  Modifier les scripts de lancement:



       cat <<EOF >>/etc/rc.local
       echo 8192 > /proc/sys/kernel/file-max
       echo 32768 > /proc/sys/kernel/inode-max

       [ -x /usr/sbin/sshd ] && /usr/sbin/sshd
       [ -x /usr/sbin/cfd ] && /usr/sbin/cfd

       EOF





  Dfinir les entre de _c_r_o_n_t_a_b:



       cat <<EOF >/tmp/crontab.root
       # Keep the time up to date
       0,15,30,45 * * * * /usr/sbin/ntpdate -s eggtimer 2>&1 >/dev/null
       # Recycle Exim log files
       1 0 * * * /usr/exim/bin/exicyclog
       # Flush the Exim queue
       0,15,30,45 * * * * /usr/exim/bin/exim -q
       EOF

       crontab /tmp/crontab.root
       rm /tmp/crontab.root





  Et mme installer d'autres RPM que vous avez crs:



       rpm -i ftp://chicken.swedish-chef.org/rpms/squid.rpm
       rpm -i ftp://chicken.swedish-chef.org/rpms/ssh.rpm
       rpm -i ftp://chicken.swedish-chef.org/rpms/exim.rpm
       rpm -i ftp://chicken.swedish-chef.org/rpms/cfengine.rpm
       rpm -i ftp://chicken.swedish-chef.org/rpms/linux.rpm

       ssh-keygen -b 1024 -f /etc/ssh_host_key -N ""
       depmod -a






  88..  LL''iinnssttaallllaattiioonn

  Dmarrer la machine  installer  partir de la disquette d'amorage
  RedHat comme d'habitude, mais au lieu de presser ENTRE  l'invite du
  programme SYSLINUX, tapez linux ks.


  Si vous avez de la chance, c'est tout ce que vous aurez  faire!



  Si vous avez modifi la disquette d'amorage comme mentionn plus
  haut, vous n'avez mme pas besoin de vous proccuper de ce qui suit
  :-)


  Comme nous ne faisons qu'automatiser les diffrentes tapes du
  processus d'installation RedHat, une bote de dialogue peut apparatre
  au cas o KickStart n'arrive pas  dterminer ce qu'il doit faire. Le
  cas le plus probable est qu'il ne dtecte pas automatiquement votre
  carte rseau, il vous demandera alors de lui fournir son IRQ et son
  adresse mmoire d'entre/sortie.


  99..  MMoonnttaaggee ddeess ddiissqquueetttteess dd''aammoorraaggee eett ssuuppppllmmeennttaaiirree

  La disquette d'amorage RedHat boot.img est au format MS-DOS et
  utilise le programme SYSLINUX pour se lancer. La disquette
  supplmentaire supp.img est au format Linux ext2. Si votre noyau
  intgre la gestion des priphriques _l_o_o_p_b_a_c_k, vous pouvez monter ces
  deux fichiers dans votre systme de fichiers:



       # mkdir -p /mnt/boot /mnt/supp
       # mount -o loop -t msdos boot.img /mnt/boot
       # mount -o loop supp.img /mnt/supp





  Vous devriez maintenant tre capable de voir et de manipuler les
  fichiers des disquettes d'amorage et supplmentaire respectivement
  sous _/_m_n_t_/_b_o_o_t et _/_m_n_t_/_s_u_p_p. Ouf!  Notez que d'anciennes versions de
  mount peuvent ne pas tre capables de grer l'option -o loop. Dans ce
  cas, vous devrez utiliser losetup pour configurer le priphrique
  _l_o_o_p_b_a_c_k pour chacun des fichiers:



       # losetup /dev/loop0 boot.img
       # mount -t msdos /dev/loop0 /mnt/boot






  Vous aurez peut-tre galement besoin d'utiliser explicitement
  l'option -t ext2 lorsque vous monterez la disquette supplmentaire.
  Cependant, les personnes ayant une distribution Linux rcente ne
  devraient pas avoir  se soucier de cela.


  Bien sr, si vous ne voulez pas prendre de risque , vous pouvez
  utiliser les vritables disquettes plutt que leurs images. Si votre
  temps est prcieux, vous prfrerez probablement utiliser les
  priphriques _l_o_o_p_b_a_c_k car vous pourrez alors utiliser des images des
  disquettes plutt que de supporter les temps d'attente lis  la
  lecture de vritables disquettes.






  1100..  MMooddiiffiieerr ll''iinnssttaallllaatteeuurr RReeddHHaatt

  Si vous voulez modifier la procdure d'installation elle-mme, son
  code source se trouve sur le CD-ROM RedHat ou sur le site miroir
  RedHat le plus proche dans le rpertoire _m_i_s_c_/_s_r_c_/_i_n_s_t_a_l_l  partir du
  rpertoire racine _i_3_8_6.


  Si vous examinez la disquette d'amorage RedHat, vous verrez qu'en
  plus du noyau _v_m_l_i_n_u_z, il y a un gros fichier _i_n_i_t_r_d_._i_m_g:



       -rwxr-xr-x   1 root     root          559 May 11 15:48 boot.msg
       -rwxr-xr-x   1 root     root          668 May 11 15:48 expert.msg
       -rwxr-xr-x   1 root     root          986 May 11 15:48 general.msg
       -rwxr-xr-x   1 root     root       968842 May 11 15:48 initrd.img
       -rwxr-xr-x   1 root     root         1120 May 11 15:48 kickit.msg
       -r-xr-xr-x   1 root     root         5352 May 11 15:48 ldlinux.sys
       -rwxr-xr-x   1 root     root          875 May 11 15:48 param.msg
       -rwxr-xr-x   1 root     root         1239 May 11 15:48 rescue.msg
       -rwxr-xr-x   1 root     root          402 May 11 15:48 syslinux.cfg
       -rwxr-xr-x   1 root     root       444602 May 11 15:48 vmlinuz





  Vous l'aurez devin, il s'agit d'un autre sytme de fichiers au format
  ext2 enregistr comme un fichier - mais avec un truc en plus. Il est
  compress! Vous pouvez le dcompresser et le monter:



       # gzip -dc /mnt/boot/initrd.img >/tmp/initrd.ext2
       # mkdir /mnt/initrd
       # mount -o loop /tmp/initrd.ext2 /mnt/initrd






  La partie probablement la plus importante de ce systme de fichiers
  est sa collection de modules chargeables par le noyau qui sont sur la
  disquette d'amorage. Si vous souhaitez intgrer la nouvelle version
  d'un gestionnaire, vous devrez soit remplacer _v_m_l_i_n_u_z par un nouveau
  noyau dans lequel ce gestionnaire sera li statiquement, soit
  remplacer ce gestionnaire dans la collection de modules. Que dire
  d'autre sinon que vous pouvez supprimer certains modules pour faire de
  la place sur la disquette!

  La collection de modules est le fichier _m_o_d_u_l_e_s_/_m_o_d_u_l_e_s_._c_g_z.  Devinez-
  vous de quoi il s'agit? Et bien croyez le ou non, c'est une archive
  cpio compresse! Voici comment l'utiliser:



       # gzip -dc /mnt/initrd/modules/modules.cgz >/tmp/modules.cpio
       # cpio -itv <modules.cpio >modules.listing
       # mkdir modules
       # cpio -idumv <../modules.cpio




  Je ne crois pas qu'il existe actuellement sous Linux une faon
  d'accder de manire transparente aux systmes de fichiers compresss
  (en tous cas avec les distributions les plus courantes). Faites le moi
  savoir si vous avez des informations l-dessus!


  Si vous modifier quelque chose, rappelez vous:


  1. utilisez cpio pour recrer l'archive. La faon de procder est
     laisse en exercice au lecteur ...

  2. utilisez gzip pour compresser cette archive;

  3. copiez la dans _/_m_n_t_/_i_n_i_t_r_d, ou dans tout autre endroit o vous avez
     plac l'archive _i_n_i_t_r_d_._i_m_g dcompresse;

  4. dmontez _/_m_n_t_/_i_n_i_t_r_d (ou comme vous l'avez appel);

  5. compressez le nouvel _i_n_i_t_r_d_._i_m_g avec gzip;

  6. copiez l'archive sur la disquette d'amorage: _/_m_n_t_/_b_o_o_t_/_i_n_i_t_r_d_._i_m_g
     dans notre exemple;

  7. dmonter la disquette d'amorage: _/_m_n_t_/_b_o_o_t.


  Vous pouvez maintenant crer de nouvelles disquettes d'amorage avec:



       # cat boot.img >/dev/fd0







  1111..  CCrreerr vvooss pprroopprreess RRPPMM

  Le format des paquetages RPM est dj abondamment document, notamment
  dans le livre _M_a_x_i_m_u_m _R_P_M d'Ed Bailey que vous pouvez tlcharger
  depuis le site RPM <http://www.rpm.org/> ou trouver dans toutes les
  bonnes librairies! Cette section prsente quelques trucs pour les gens
  presss.


  Les paquetages RPM sont construits  partir d'un fichier de
  spcification. Il consiste (de la mme manire que le fichier de
  configuration de KickStart) d'un ensemble d'tapes  accomplir pour
  construire le paquetage - on suppose que vous avez  le construire 
  partir des sources, potentiellement pour plusieurs plates-formes, et
  avez besoin d'y appliquer des corrections avant la compilation. Une
  fois construit et install, un fichier RPM sera cr  partir des
  fichiers et des rpertoires que vous avez spcifis comme tant
  associs au paquetage. Il est important de noter que RPM n'a aucune
  ide des fichiers et rpertoires lis  un paquetage donn - vous
  devez le lui dire.


  Voici un exemple de spcification pour une version personnalise du du
  serveur Cache WWW  Squid <http://squid.nlanr.net/>:



  Summary: Squid Web Cache server
  Name: squid
  Version: 1.NOVM.22
  Release: 1
  Copyright: GPL/Harvest
  Group: Networking/Daemons
  Source: squid-1.NOVM.22-src.tar.gz
  Patch: retry-1.NOVM.20.patch
  %description
  Juste une premire tentative d'empaquetage d'un serveur Squid pour
  l'installer facilement sur notre serveur RedHat Linux

  %prep
  %setup
  %build
  configure --prefix=/usr/squid
  perl -spi -e 's!#( -DALLOW_HOSTNAME_UNDERSCORES)!$1!' src/Makefile
  make

  %install
  make install

  %files
  /usr/squid






  Voici comment construire ce RPM:



       % mkdir -p SOURCES BUILD SRPMS RPMS/i386
       % cp ~/squid-1.NOVM.22-src.tar.gz SOURCES
       % cp ~/retry-1.NOVM.20.patch SOURCES
       % rpm -ba squid-1.NOVM.22+retry-1.spec






  Cela va crer automatiquement un sous-rpertoire dans le rpertoire
  _B_U_I_L_D dans lequel il va dballer le code source et lui appliquer les
  corrections (de nombreuses options concernant les corrections sont
  disponibles, voir le livre pour plus de dtails). RPM va maintenant
  automatiquement construire le paquetage en lanant configure suivi de
  make, l'installer avec make install et prendre une ``photo'' des
  fichiers situs dans _/_u_s_r_/_s_q_u_i_d. C'est cette dernire qui va
  constituer le binaire RPM du logiciel Squid.


  Notez que l'on peut insrer des commandes shell au cours des phases de
  dcompression, construction et d'installation, par exemple des appels
  en perl pour modifier des paramtres de compilation.


  Le fichier RPM final sera plac dans le rpertoire _R_P_M_S dans le sous-
  rpertoire de la plate-forme correspondante _i_3_8_6. Dans notre exemple,
  il s'appelera _s_q_u_i_d_-_1_._N_O_V_M_._2_2_-_1_._i_3_8_6_._r_p_m. Notez que le nom du fichier
  est cr en collant les valeurs de certains des paramtres du fichier
  de spcification: Name, Version et Release suivi de la plate-forme,
  _i_3_8_6 dans ce cas. Gardez cela en mmoire lorsque vous crerez des RPM
  afin d'viter de leur donner des noms exagrment longs.
  Il est galement intressant de savoir que l'on peut contruire des RPM
  sans avoir  reconstruire tout le paquetage, par exemple:



       Summary: Linux 2.0.35 kernel + filehandle patch + serial console patch
       Name: linux
       Version: 2.0.35+filehandle+serial_console
       Release: 1
       Copyright: GPL
       Group: Base/Kernel
       Source: linux-2.0.35+filehandle+serial_console.tar.gz
       %description
       C'est juste une premire tentative de crer un paquetage du noyau
       Linux avec ses corrections pour l'installation de notre serveur RedHat
       Linux.

       %prep
       echo

       %setup
       echo

       %build
       echo

       %install
       echo

       %post
       /sbin/lilo

       %files
       /lib/modules/2.0.35
       /boot/vmlinuz






  Dans ce cas, nous crons simplement un RPM compos du fichier
  _/_b_o_o_t_/_v_m_l_i_n_u_z et du contenu du rpertoire _/_l_i_b_/_m_o_d_u_l_e_s_/_2_._0_._3_5, et
  excutons _/_s_b_i_n_/_l_i_l_o aprs que le paquetage a t install sur une
  nouvelle machine.  Si vous connaissez une meilleure faon d'crire le
  fichier de spcification, faites le moi savoir.



  1122..  FFAAQQ//LLiissttee ddee vvooeeuuxx

  QQ:: Peut-on appliquer automatiquement toutes les corrections de RPM? Et
  comment?


  RR11::Copiez les RPMs que vous voulez installer dans le rpertoire RPMS 
  partir duquel l'installation aura lieu, supprimez les anciens RPMs et
  mettez  jour le fichier _/_R_e_d_H_a_t_/_b_a_s_e_/_h_d_l_i_s_t avec le dtail des
  nouveaux RPMs. Voir ci-dessous un script d'Eric Doutreleau qui fait
  cela pour vous. Si vous le faites vous-mme, souvenez-vous de lancer
  _g_e_n_h_d_l_i_s_t aprs!


  RR22::Essayer ce script Perl: patchup
  <http://wwwcache.ja.net/dev/patchup/>. Il compare les RPMs que votre
  systme a install avec ceux prsents dans un rpertoire donn et
  fournit une liste de  ceux qu'il pense vous devriez mettre  jour. Il
  peut mme les installer pour vous si vous lui faites confiance.


  RR33::rpm2hml est une version bien plus puissante (12Mo de C contre une
  page de Perl!) de R2.


  QQ:: Un unique fichier de configuration sur le serveur d'installation
  pour tous les clients, peut-tre une solution de repli aprs avoir
  essay _I_P_A_D_D_R_-_k_i_c_k_s_t_a_r_t?

  RR:: ?


  QQ::Plus de souplesse lorsque les chose vont mal - par exemple demander
  un chemin alternatif si la distribution ne se trouve pas sur le CD-
  ROM.

  RR:: ?


  QQ:: Exclusion explicite de paquetages - par exemple touts sauf
  _s_e_n_d_m_a_i_l.

  RR:: ?


  QQ::Choisir quels services sont lancs automatiquement au dmarrage par
  les scripts dans _/_e_t_c_/_r_c_._d_/.


  RR:: L'utilitaire _c_h_k_c_o_n_f_i_g vous permet de configurer les services qui
  doivent tre lancs au dmarrage. Vous pouvez l'utiliser parmi les
  scripts lancs aprs l'installation par exemple pour lancer _y_p_b_i_n_d
  dans les _r_u_n_l_e_v_e_l 3, 4 et 5:



       chkconfig --level 345 ypbind on





  et il va lancer ypbind sur le niveau 345.

  QQ:: Quand les commandes shell de la section %post s'excutent, envoyer
  leur sortie vers une autre console plut que d'crire sur l'cran
  principal. _C_e_l_a _p_e_u_t_-_i_l __t_r_e _f_a_i_t _d_a_n_s _l_a _s_e_c_t_i_o_n _d_e_s _c_o_m_m_a_n_d_e_s _s_h_e_l_l
  _e_n _u_t_i_l_i_s_a_n_t open?.

  RR:: Pas de problme! Il suffit de faire quelque chose comme:



         exec >/dev/tty5





  QQ:: Le code de cration de systme de fichiers vrifie-t-il existence
  de blocs dfectueux?


  RR:: Si vous passez sur la console sur laquelle les sorties de la
  cration du systme de fichiers sont affiches, vous ne verrez aucune
  mention indiquant que le test `read-only' a t effectu.


  1133..  CCrrddiittss

  Remerciements  Eric Doutreleau pour ses informations sur _c_h_k_c_o_n_f_i_g,
  l'adaptation du fichier de configuration de SYSLINUX et pour son
  script Perl d'actualisation des RPM.


  1144..  AAnnnneexxee

  Voici le script d'Eric pour ajouter les RPM actualiss dans les
  rpertoires de la distribution RedHat:


















































  #!/usr/bin/perl
  #
  $redhatdir="/cdrom/i386";
  $rpmdir="/cdrom/i386/RedHat/RPMS/";
  $updatedir="/cdrom/updates/";
  @OTHERDIR=($updatedir);
  foreach $dir (@OTHERDIR)
    {
      print "update for $dir\n";
      system(" find $dir -name \"*.rpm\" -exec cp {} $rpmdir \\; ");
    }
  chdir($contribdir) || die "peux pas aller dans $contribdir $!\n";
  system("chmod -R 755 $redhatdir");
  chdir($rpmdir) || die "problem to go in $rpmdir $!\n";
  #
  # remove the old file
  #
  opendir(DIR,'.');
  @package=grep(/\.rpm$/,readdir(DIR));
  foreach $file (@package)
    {
      $file =~ /(.*)\-([\d+|\.]+\w*)\-(\d+)\.[i386|noarch].*/;
      $nom=$1;
      $version=$2;
      $buildvers=$3;
      if ($NOM{$nom})
        {
          $version2=$VERSION{$nom};
          $buildver2=$BUILDVERS{$nom};
          $file2=$FILE{$nom};
          $nom2=$NOM{$nom};
          if ( $version2 gt $version )
            {
              print "$file2 is newer than $file\n";
              unlink($file);
            }
          else
            {
              if ( $version2 lt $version )
                {
                  print "$file is newer than $file2\n";
                  unlink($file2);
                  $VERSION{$nom}=$version;
                  $BUILDVERS{$nom}=$buildvers;
                  $FILE{$nom}=$file;
                  $NOM{$nom}=$nom;
                }
              else
                {
                  # print "$file2 $file same version version\n";
                  if ( $buildver2 > $buildvers )
                    {
                      print "$file2 : $buildver2 est mieux que $file : $buildvers\n";
                      unlink($file);
                    }
                  else
                    {
                      print "$file2 : $buildver2 is older than $file : $buildvers\n";
                      unlink($file2);
                      $VERSION{$nom}=$version;
                      $BUILDVERS{$nom}=$buildvers;
                      $FILE{$nom}=$file;
                      $NOM{$nom}=$nom;
                    }
                }
            }
        }
      else
        {
          $VERSION{$nom}=$version;
          $BUILDVERS{$nom}=$buildvers;
          $FILE{$nom}=$file;
          $NOM{$nom}=$nom;
        }
    }

  # we do the hard thing here
  #
  system("$redhatdir/misc/src/install/genhdlist $redhatdir");





















































