  Disquettes d'amorce Linux : HOWTO
  Tom Fawcett and Graham Chapman (traduction : Frank Pavageau,
  pavageau@imaginet.fr)
  v2.3, 4 Avril 1997

  Ce document decrit  la  maniere  de  creer  des  disquettes  d'amorce,
  d'amorce  et  racine,  et  de maintenance. Ces disquettes peuvent etre
  utilisees comme disquettes de secours ou pour tester de nouveaux  noy-
  aux.   Note  :  si  vous  n'avez  pas lu la FAQ Linux et les documents
  annexes tels  que  le  HOWTO  d'Installation  de  Linux  et  le  Guide
  d'Installation  de Linux, vous ne devriez pas essayer de creer de dis-
  quettes d'amorce.

  11..  NNootteess dduu ttrraadduucctteeuurr

  Correspondances anglais/francais utilisees dans la traduction :

  +o  boot : amorce, amorcage, amorcer, demarrage, demarrer.

  +o  package : paquetage.

  +o  root : racine.

  +o  root device : peripherique racine.

  +o  boot/root disk : disquette(s) d'amorce/racine.

  +o  backup : archive.

  +o  boot loader : chargeur, lanceur.

  +o  ramdisk : disque virtuel en memoire, disque memoire.

  +o  library : bibliotheque.

  +o  dynamic library : bibliotheque partagee.

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

  22..11..  PPoouurrqquuooii ccrreeeerr ddeess ddiissqquueetttteess dd''aammoorrccee ??

  Les disquettes d'amorce Linux  sont  utiles  dans  un  certain  nombre
  d'operations, telles que :

  +o  Tester un nouveau noyau

  +o  Recuperer  apres  une panne disque ou systeme. Une telle panne peut
     aller de la perte d'un secteur d'amorce a l'atterrissage d'une tete
     de lecture.

  Il y a differents moyens d'obtenir des disquettes d'amorce :

  +o  Utiliser  celle  d'une  distribution  comme  Slackware.  Cela  vous
     permettra au moins de demarrer.

  +o  Utiliser un utilitaire de creation de disquettes de secours.

  +o  Apprendre  ce  que  necessite  chaque  type   de   disquette   pour
     fonctionner, puis creer les votres.

  J'ai  initialement  choisi la derniere solution - apprendre comme cela
  marche pour que vous puissiez le faire vous-meme. De cette maniere, si
  quelque  chose  cesse  de  fonctionner, vous pouvez trouver comment le
  reparer. De plus, vous apprenez beaucoup au  passage  sur  la  maniere
  dont Linux fonctionne.

  Les  utilisateurs experimentes de Linux pourront trouver peu d'utilite
  a  ce   document.   Cependant,   les   utilisateurs   qui   decouvrent
  l'administration systeme Linux et qui souhaitent se proteger contre la
  perte de disquette racine et autres inconvenues  pourront  le  trouver
  utile.

  Une  note  sur  les  versions  - ce document a ete mis a jour pour les
  paquetages et versions suivants :

  +o  Linux 2.0.6

  +o  LILO 0.19

       Copyright (c) Tom Fawcett and  Graham  Chapman  1995,  1996,
       1997.

       Permission  is  granted  for this material to be freely used
       and distributed, provided the source is  acknowledged.   The
       copyright  conditions are intended to be no more restrictive
       than  version  2  of  the  GNU  General  Public  License  as
       published by the Free Software Foundation.

       No  warranty  of any kind is provided. You use this material
       at your own risk.

  22..22..  AApppprreecciiaattiioonnss eett rreemmeerrcciieemmeennttss

  Toute appreciation, bonne ou mauvaise, sur le contenu de  ce  document
  est  bienvenue.  Faites-nous savoir si vous trouvez des erreurs ou des
  oublis. Envoyez les  commentaires,  corrections  et  questions  a  Tom
  Fawcett (fawcett@nynexst.com) ou Graham Chapman (grahamc@zeta.org.au).

  Nous remercions les personnes suivantes pour les  corrections  et  les
  suggestions utiles a l'amelioration de ce document :

               Randolph Bentson
               Grant R. Bowman
               Scott Burkett
               Cameron Davidson
               Bruce Elliot
               Javier Ros Ganuza
               HARIGUCHI Youichi
               Duncan Hill
               Bjxrn-Helge Mevik
               Lincoln S. Peck
               Dwight Spencer
               Cameron Spitzer
               Johannes Stille

  22..33..  HHiissttoorriiqquuee ddeess mmooddiiffiiccaattiioonnss

  v2.3, 4 Avril 1997. Modifications de cette version :

  +o  Deplacement  de  la  premiere  question  de  la  FAQ (``Pourquoi ma
     disquette n'amorce-t-elle pas  l'ordinateur  ?'')  dans  sa  propre
     section  (``En  cas  de  problemes'')  et ajout des informations de
     Yard.

  +o  Quelques changements suggeres par D. Hill et J.R. Ganuza.

  +o  Ajout de balises de reference et de navigation a divers endroits.

  +o  Deplacement des scripts et des ressources dans les appendices.

  +o  Ajout d'URL pour les disquettes d'amorce des distributions, et  les
     miroirs.

  v2.2, 1er Septembre 1996. Modifications de cette version :

  +o  Correction : donner l'attribut ramdisk par rdev sur /dev/fd0 plutot
     que sur zImage.

  v2.1, 18 Aout 1996. Modifications de cette version :

  Resume : ce fut un nettoyage  majeur  pour  refleter  les  changements
  entre les versions 1.2 et 2.0 du noyau. En particulier :

  +o  Changement  :  remplacement  des  scripts  shell et des listings de
     repertoires.

  +o  Changement : suppression de la plupart de la reponse a la  question
     de la FAQ sur les ``disques memoires trop grands''.

  +o  Correction : mkfs -i aurait du etre mke2fs -i.

  +o  Correction  :  nom  du  parametre manquant dans la commande dd pour
     mettre a zero le peripherique d'amorce.

  +o  Correction : suppression d'un parametre  en  trop  de  la  commande
     mke2fs pour creer le systeme de fichier racine.

  +o  Changement  :  modifications  mineures  pour refleter la diminution
     d'importance de l'utilitaire Bootkit.

  +o  Changement : modification des references croisees des sections pour
     referencer  le  titre de la section, et non pas son numero (un jour
     je rajouterais des liens hypertextes ...)

  +o  Ajout : utilisation  de  cpio  comme  autre  moyen  de  copier  des
     fichiers.

  +o  Ajout   :   astuces   pour  supprimer  les  fichiers  speciaux  des
     peripheriques inutiles.

  +o  Ajout : question de la FAQ - que faire si rien n'arrive  au  moment
     du demarrage.

  +o  Ajout : diverses modifications mineures.

  v2.0, 12 Juin 1996. Modifications de cette version :

  +o  Ajout : auteur et archiviste supplementaire, Tom Fawcett.

  +o  Ajout : section 6.3, Utilisation d'un disque memoire.

  +o  Ajout  :  section  intitulee  ``Creation  de disquette de demarrage
     elaboree'',  qui  explique  comment  utiliser  avantageusement  les
     changements  des  noyaux  1.3.48  et  ulterieurs  sur  les  disques
     memoires.

  +o  Changement : reecriture de la section sur le repertoire /lib.

  +o  Changement  :  diverses  astuces   mineures   sur   le   changement
     d'utilisation des disques memoires.

  Historique des versions :

  +o  v1.02, 25 Juin 1995 - changements mineurs.

  +o  v1.01, 6 Fevrier 1995 - changement mineurs.

  +o  v1.0,  2  Janvier  1995  -  premiere  sortie au format standard des
     HOWTO.

  +o  V0.10, 1er Novembre 1994 - version originale, intitulee ``Projet''.

  33..  DDiissqquueetttteess

  33..11..  RReessuummee ddeess ttyyppeess ddee ddiissqquueess

  Je  classe  les  disquettes  ayant  trait  a  l'amorcage  dans  quatre
  categories. La discussion ici et  a  travers  l'ensemble  du  document
  utilise  le  terme  ``disque''  comme  synonyme  des  disquettes, sauf
  indication contraire. La majorite de la discussion pourrait aussi bien
  s'appliquer aux disques durs.

  Un resume des types de disques et de leur utilisation est :

     AAmmoorrccee
        Un  disque  contenant  un  noyau qui peut etre charge. Le disque
        peut contenir un systeme de fichiers  et  utiliser  un  chargeur
        pour  demarrer,  ou  bien  ne  contenir que le noyau au debut du
        disque. Le disque peut etre utilise pour demarrer  le  noyau  en
        utilisant  un  systeme  de  fichiers racine sur un autre disque.
        Cela peut s'averer  utile  si  vous  perdez  votre  chargeur  en
        raison, par exemple, d'un essai d'installation rate.

     RRaacciinnee
        Un  disque  avec  systeme  de fichiers contenant tout ce qui est
        necessaire a l'utilisation d'un systeme Linux.  Il  ne  contient
        pas necessairement un noyau ni un chargeur.

        Ce  disque  peut  etre utilise pour faire fonctionner le systeme
        independemment de tout autre disque, une fois que le noyau a ete
        charge.  Une  caracteristique speciale du noyau permet de monter
        un  disque  racine  distinct  une  fois  demarre,   en   copiant
        automatiquement le disque racine sur un disque memoire.

        Vous pouvez utiliser ce type de disque pour verifier l'integrite
        d'un autre disque sans le monter, ou pour recuperer  le  contenu
        d'un  autre  disque  apres  une  panne  disque  ou  une perte de
        fichiers.

     AAmmoorrccee//rraacciinnee
        Un disque identique a un disque racine, mais qui contient  aussi
        un  noyau  et un chargeur. Il peut etre utilise pour demarrer et
        faire fonctionner le systeme. L'avantage de ce  type  de  disque
        est  sa  compacite  -  tout  ce dont on a besoin est sur un seul
        disque. Toutefois la taille sans  cesse  croissante  du  systeme
        implique qu'il ne sera pas toujours possible de faire tout tenir
        sur une seule disquette, meme en ayant recours a la compression.

     UUttiilliittaaiirree
        Un  disque contenant un systeme de fichiers, mais non prevu pour
        etre monte comme systeme de fichiers racine. C'est un disque  de
        donnees  supplementaire. On peut utiliser ce type de disque pour
        transporter des utilitaires en plus  quand  vous  avez  trop   a
        faire tenir sur votre disque racine.

        Le  terme  ``utilitaire''  s'applique uniquement aux disquettes,
        quand vous  utilisez  un  disque  utilitaire  pour  stocker  des
        programmes de recuperation supplementaires.

  L'approche   la  plus  souple  pour  des  disquettes  de  secours  est
  probablement d'utiliser des disquettes amorce et racine  separees,  et
  une ou plusieurs disquettes utilitaires pour accueillir le supplement.

  33..22..  DDeemmaarrrraaggee

  33..22..11..  AAppeerrccuu

  Tous les systemes PC commencent leur procedure d'amorcage en executant
  du  code en memoire morte pour charger le secteur situe sur le secteur
  0 du cylindre 0 du disque d'amorce et essayent de l'executer.  Sur  la
  plupart des disques amorcables, le secteur 0 du cylindre 0 contient :

  +o  le  code  d'un chargeur comme LILO, qui trouve le noyau, le charge,
     et l'execute pour commencer le veritable demarrage.

  +o  le debut d'un noyau de systeme d'exploitation, tel que Linux.

  Si  un  noyau  Linux  a  ete  ecrit  sur  une  disquette  en  accedant
  directement  au  peripherique  (par  /dev/fd0 par exemple), le premier
  secteur sera alors le premier secteur du noyau Linux,  et  ce  secteur
  continuera la procedure de demarrage en chargeant le reste du noyau et
  en l'executant. Pour une description  plus  detaillee  du  contenu  du
  secteur  de demarrage, voir la documentation fournie avec lilo-0.15 ou
  une version ulterieure.

  Une autre maniere de mettre un noyau sur un disque de demarrage est de
  creer  un  systeme  de  fichier, non pas comme racine, mais simplement
  pour pouvoir installer LILO et par consequent permettre de fournir des
  options  en  ligne de commande au moment du demarrage. Par exemple, le
  meme noyau pourrait etre utilise pour demarrer en  utilisant  soit  un
  systeme  de  fichiers  racine sur disque dur, soit sur disquette. Cela
  pourrait etre utile si vous essayez  de  reconstruire  le  systeme  de
  fichiers  du disque dur et si vous voulez pouvoir tester les resultats
  en cours de route.

  33..22..22..  IInnddiiqquueerr llaa rraacciinnee

  Le noyau doit d'une facon ou d'une autre savoir quel disque et  quelle
  partition  doivent  etre monte comme disque racine. Cela peut se fixer
  de differentes manieres :

  +o  En  donnant  la  valeur  ROOT_DEV  =  nom_du_peripherique  dans  le
     makefile  du  noyau  Linux  et en recompilant le noyau (pour savoir
     comment recompiler le noyau, lisez la FAQ Linux  et  regardez  dans
     /usr/src/linux).  Des commentaires dans le makefile Linux decrivent
     les valeurs autorisees pour nom_du_peripherique.

  +o  En utilisant l'utilitaire rdev :

               rdev nom_du_fichier nom_du_peripherique

  Cela  change  le   peripherique   racine   du   noyau   contenu   dans
  nom_du_fichier pour etre nom_du_peripherique. Par exemple :

               rdev zImage /dev/sda1

  Le noyau contenu dans zImage a maintenant comme peripherique racine la
  premiere partition du premier disque SCSI.

  Il y a d'autres manieres d'utiliser la commande rdev. Essayez :

               rdev -h

  et vous obtiendrez les options de la commande.

  Il n'y a en general pas besoin de configurer  le  peripherique  racine
  pour  une  disquette  de  boot, car le noyau actuellement utilise pour
  demarrer a deja la valeur du disque racine. Le besoin  peut  se  faire
  sentir,  par  contre,  si vous recuperez le noyau d'une autre machine,
  par exemple celui d'une distribution, ou si vous  voulez  utiliser  le
  noyau  pour  demarrer avec une disquette racine. Verifier la valeur du
  disque racine actuel est probablement une bonne idee,  au  cas  ou  il
  serait  errone.  Pour verifier avec rdev le peripherique racine actuel
  d'un fichier noyau, tapez la commande :

               rdev <nom_fichier>

  Il est possible de changer  le  peripherique  racine  d'un  noyau  par
  d'autres  moyens  que rdev. Pour plus de details, voir la FAQ a la fin
  de ce document.

  33..22..33..  CCooppiieerr llee nnooyyaauu ssuurr llaa ddiissqquueettttee dd''aammoorrccee

  Une fois que le noyau a ete configure,  il  doit  etre  copie  sur  la
  disquette d'amorce.

  Les  commandes  decrites  ci-dessous  (et a travers le reste du HOWTO)
  supposent que les disquettes ont ete formattees. Si ca  n'est  pas  le
  cas,   utilisez  fdformat  pour  formatter  les  disquettes  avant  de
  continuer.

  Si le disque ne doit pas contenir de systeme  de  fichiers,  alors  le
  noyau peut etre copie en utilisant la commande dd, comme suit :

               dd if=fichier_origine of=peripherique

               ou      fichier_origine est le nom du noyau
               et      peripherique est l'interface d'acces a la couche
                       physique de la disquette, generalement /dev/fd0

  La commande cp peut aussi etre utilisee :

               cp nom_du_fichier nom_du_peripherique

  Par exemple :

               dd if=zImage of=/dev/fd0
       ou
               cp zImage /dev/fd0

  Le  parametre  seek  de  la  commande  dd ne doit PAS etre utilise. Le
  fichier doit etre copie au  debut  du  secteur  d'amorce  (secteur  0,
  cylindre 0), et ne pas preciser de parametre seek permet cela.

  Le  nom  du  peripherique a utiliser est generalement /dev/fd0 pour le
  lecteur de disquette principal (c'est a dire le  lecteur  ``A:''  sous
  DOS),  et  /dev/fd1  pour  le  secondaire.  Ces  noms de peripheriques
  permettront au noyau de detecter automatiquement les  caracteristiques
  des  lecteurs.  Ces caracteristiques peuvent etre precisee au noyau en
  utilisant d'autres noms de peripheriques  : par exemple, /dev/fd0H1440
  indique  un  lecteur  haute  densite  1.44  Mo.  Il est rare d'avoir a
  recourir a ces noms de peripheriques specifiques.

  Si le noyau doit etre  copie  sur  un  disque  d'amorce  contenant  un
  systeme  de  fichiers, le disque est alors monte sur un point d'entree
  adequat sur  un  systeme  de  fichiers  actuellement  monte,  puis  la
  commande cp est utilisee. Par exemple :

               mount -t ext2 /dev/fd0 /mnt
               cp zImage /mnt
               umount /mnt

  Notons  que  pour  pratiquement  toutes  les operations dans ce HOWTO,
  l'utilisateur doit agir en tant que super-utilisateur.

  33..33..  RRaacciinnee

  33..33..11..  AAppeerrccuu

  Un disque racine contient un systeme fonctionnel Linux  complet,  mais
  sans  necessairement  inclure  un noyau. En d'autres termes, le disque
  peut ne pas etre amorcable, mais une fois que le noyau fonctionne,  le
  disque  racine  contient  tout ce qui est necessaire au fonctionnement
  d'un systeme Linux complet. Pour pouvoir faire ceci,  le  disque  doit
  contenir le minimum pour un systeme Linux :

  +o  Systeme de fichiers.

  +o  Ensemble  minimum  de  repertoires - dev, proc, bin, etc, lib, usr,
     tmp.

  +o  Ensemble d'utilitaires basiques - bash (pour avoir un  shell),  ls,
     cp, etc...

  +o  Ensemble de fichiers de configuration minimal - rc, inittab, fstab,
     etc...

  +o  Bibliotheque pour fournir les fonctions de base necessaires par les
     utilitaires.

  Bien  sur,  tout  systeme  devient  utile  lorsque que l'on peut faire
  fonctionner quelque chose dessus, et une disquette racine  ne  devient
  en general utile que si vous pouvez avoir des actions du type :

  +o  Verifier  un systeme de fichiers sur un autre disque ; par exemple,
     pour verifier votre systeme de fichiers  racine  sur  votre  disque
     dur,  vous  devez  pouvoir  demarrer  Linux depuis un autre disque,
     comme il est possible avec une disquette racine. Vous pouvez  alors
     lancer  fsck  sur  votre disque racine habituel puisqu'il n'est pas
     monte.

  +o  Recuperer tout ou partie de votre disque racine habituel depuis une
     sauvegarde   en   utilisant   des  utilitaires  d'archivage  et  de
     compression tels que cpio, tar, gzip et ftape.

  33..44..  AAmmoorrccee//rraacciinnee

  Pour qu'une disquette avec un systeme de fichier racine soit efficace,
  vous  devez  pouvoir  le  faire  fonctionner depuis un disque memoire,
  c'est-a-dire un disque emule en memoire  vive.  Cela  evite  de  faire
  fonctionner  le  systeme  a  une vitesse d'escargot, ce qui est le cas
  avec une disquette. Le HOWTO Ftape indique qu'un disque  memoire  sera
  necessaire  lorsque  l'on  utilise  Ftape  car Ftape necessite l'usage
  exclusif du controlleur de disquette.

  Il y a un autre benefice du fait d'utiliser un  disque  memoire  -  le
  noyau   Linux   inclut   la  possibilite  d'avoir  un  disque  memoire
  automatique,   ou   il   copiera   automatiquement,   dans   certaines
  circonstances,  le  contenu d'une disquette racine, et qu'il utilisera
  alors comme disque racine  au  lieu  de  la  disquette.  Trois  points
  positifs en resultent :

  +o  Le systeme fonctionne bien plus vite.

  +o  Le  lecteur  de  disquette  est libere automatiquement pour pouvoir
     avoir acces a d'autres disquettes sur un systeme mono-lecteur.

  +o  Avec de la compression, la taille de l'image  d'un  disque  memoire
     sur  un  disque  peut  etre  reduit  de  maniere  significative (en
     general, 40% de la taille)  par  rapport  a  la  taille  du  disque
     memoire  lui-meme.  Cela  signifie  qu'une  disquette  1.44 Mo peut
     contenir  une racine d'environ 3 Mo.
  Pour les noyaux 1.3.48 et ulterieurs, le code du disque memoire a  ete
  substantiellement  reecrit.  Vous  avez des options supplementaires et
  les commandes  pour  utiliser  le  disque  memoire  sont  quelque  peu
  differentes.   La   section   ``Creation  de  disquette  de  demarrage
  elaboree'' discute de cela plus en detail.

  Vous devez configurer votre noyau pour avoir le support disque memoire
  (ramdisk),  mais  le  disque  memoire  pouvant etre agrandi de maniere
  dynamique, il n'est pas necessaire d'en preciser la  taille.  rdev  -r
  n'est  plus  utilise  pour  preciser la taille du disque memoire, mais
  change par contre l'option disque memoire dans l'image  du  noyau.  La
  section  ``Creation  de disquette de demarrage      elaboree'' discute
  de cela de maniere plus detaillee.

  Si vous avez un noyau _a_n_t_e_r_i_e_u_r a 1.3.48,  les  points  suivants  sont
  necessaires. Notez que cela s'applique _U_N_I_Q_U_E_M_E_N_T au noyaux anterieurs
  a la version 1.3.48.

  +o  Le systeme de fichiers sur la disquette doit etre soit  un  systeme
     _m_i_n_i_x,  soit  un  systeme  _e_x_t_2.  Le  systeme  _e_x_t_2  est en general
     prefere. Notez que si vous avez un noyau Linux anterieur a  1.1.73,
     vous   devriez  voir  les  commentaires  de  la  section  intitulee
     ``Systemes de fichiers'' pour  savoir  si  votre  noyau  supportera
     _e_x_t_2.  Si  votre  noyau  est ancien, vous pourriez avoir a utiliser
     _m_i_n_i_x. Cela ne pose pas de problemes particuliers.

  +o  Le noyau doit etre configure pour avoir un disque  memoire,  et  il
     doit etre au moins aussi gros que la taille de la disquette.

  On  peut  configurer le noyau pour avoir un disque memoire de diverses
  manieres :

  +o  En decommentant la macro RAMDISK dans le makefile du  noyau  Linux,
     pour qu'elle indique :

               RAMDISK = -DRAMDISK=1440

  pour  definir  un  disque memoire de 1440 blocs de 1K, la taille d'une
  disquette haute densite.

  +o  En utilisant l'utilitaire  rdev,  disponible  sur  la  plupart  des
     systemes  Linux.  Cet  utilitaire  affiche ou change les valeurs de
     differentes choses dans le noyau, dont la taille  desiree  pour  un
     disque  memoire.  Pour  configurer  le noyau afin d'avoir un disque
     memoire de 1440 blocs, dans un fichier appele zImage, tapez :

               rdev -r zImage 1440

  cela pourrait changer dans le futur, bien  sur.  Pour  savoir  ce  que
  votre version de rdev fait, tapez la commande :

               rdev -h

  et il devrait afficher ses options.
  +o  En  utilisant  le  paquetage du chargeur LILO pour configurer votre
     noyau au moment du demarrage. Cela peut se faire  en  utilisant  le
     parametre de configuration de LILO :

               ramdisk = 1440

  pour demander un disque memoire de 1440 blocs de 1K au moment du boot.

  +o  En interrompant un demarrage automatique de  LILO  et  en  ajoutant
     ramdisk=1440  sur  la  ligne  de  commande.  Par exemple, une telle
     commande pourrait etre :

               zImage ramdisk=1440

  Voir la section sur LILO pour plus de details.

  +o  En editant le fichier du noyau et en modifiant les valeurs au debut
     du fichier qui stockent la taille du disque memoire. C'est vraiment
     la derniere chose a faire, mais c'est possible. Voir la  FAQ  a  la
     fin du document pour plus de details.

  Le  moyen  le plus simple est la configuration de LILO, car vous aurez
  besoin de creer une configuration pour LILO de toute maniere. Pourquoi
  ne pas y ajouter la taille du disque memoire ?

  La  configuration  de  LILO  est  brievement  decrite  dans la section
  intitulee ``LILO'' ci-dessous, mais il  est  recommande  d'obtenir  la
  derniere  version stable en cours de LILO depuis votre miroir Linux le
  plus proche, et de lire la documentation l'accompagnant.

  Les disques memoires peuvent avoir une taille plus  grande  que  celle
  d'une disquette, et peuvent contenir un systeme de fichiers aussi gros
  que leur taille. Cela peut etre utile pour charger tous les programmes
  necessaires  a la reparation sur un seul disque memoire performant. La
  methode pour faire cela est decrite dans la FAQ, dans la reponse a  la
  question  ``Comment  puis-je  creer  un  grand  systeme de fichier sur
  disque memoire ?''

  33..55..  UUttiilliittaaiirree

  Souvent, un seul disque n'est pas suffisant pour  contenir  l'ensemble
  des programmes dont vous avez besoin pour pouvoir analyser, reparer et
  restaurer des disques corrompus. Quand vous en arrivez a inclure  tar,
  gzip,  e2fsck,  fdisk,  Ftape, etc... ils prennent assez de place pour
  une nouvelle disquette, voire plus si vous  avez  besoin  de  beaucoup
  d'outils.

  Cela  entraine  qu'un  kit  de secours necessite souvent une disquette
  utilitaire, avec un systeme de fichiers contenant tous les extras dont
  vous  avez  besoin.  Ce systeme de fichiers peut alors etre monte a un
  endroit pratique, comme /usr, sur le systeme amorce/racine.

  Creer un systeme de fichiers est relativement simple, et il est decrit
  dans la section intitulee ``Systemes de fichiers''.

  44..  CCoommppoossaannttss

  44..11..  SSyysstteemmeess ddee ffiicchhiieerrss

  Le  noyau Linux supporte maintenant deux types de systemes de fichiers
  pour les disques racines a copier automatiquement sur disque  memoire.
  Ce  sont  _m_i_n_i_x  et _e_x_t_2, _e_x_t_2 etant le systeme de fichier prefere. Ce
  support _e_x_t_2 a ete rajoute quelque part entre les versions  1.1.17  et
  1.1.57,  je  ne sais pas exactement quand. Si vous avez un noyau parmi
  ces   versions,   editez   /usr/src/linux/drivers/block/ramdisk.c   et
  cherchez  le  mot  ``ext2''.  Si  vous ne le trouvez pas, vous aurez a
  utiliser un systeme de fichiers _m_i_n_i_x, cree au moyen  de  la  commande
  mkfs.  Si vous utilisez _e_x_t_2, vous pourrez trouver pratique d'utiliser
  l'option  -i  pour  allouer  plus  d'i-noeuds  que  par  defaut  ;  on
  recommande  -i 2000 pour ne pas manquer d'i-noeuds. Sinon, vous pouvez
  economiser des i-noeuds en supprimant les nombreux  fichiers  inutiles
  de  /dev. Mke2fs creera par defaut 360 i-noeuds sur une disquette 1.44
  Mo. Pour ma part,  120  i-noeuds  sont  suffisants  sur  mon  actuelle
  disquette   de   secours   racine,  mais  si  vous  incluez  tous  les
  peripheriques dans le repertoire  /dev,  vous  depasserez  allegrement
  360.  Utiliser  un systeme de fichiers compresse pour la racine permet
  un systeme plus grand, et donc plus d'i-noeuds par defaut,  mais  vous
  pourriez  cependant  devoir  reduire  le  nombre  de  fichiers ou bien
  augmenter le nombre d'i-noeuds.

  Pour creer un systeme de fichiers  _e_x_t_2  sur  une  disquette,  sur  ma
  machine, je lance la commande suivante :

               mke2fs -m 0 /dev/fd0

  La  commande mke2fs va automatiquement detecter l'espace disponible et
  se configurer en fonction. Eventuellement, la taille de  la  disquette
  en  blocs  de  1Ko  peut  etre specifiee pour accelerer l'operation de
  mke2fs. Le parametre -m 0 evite a mke2fs de reserver de la place  pour
  root, ce qui laisse plus de place disponible sur le disque.

  Une  maniere  simple  de tester le resultat est de creer un systeme en
  utilisant  la  commande  ci-dessus  ou  une  commande  approchant,  et
  d'essayer  ensuite  de  monter  la disquette. S'il s'agit d'un systeme
  _e_x_t_2, alors la commande :

               mount -t ext2 /dev/fd0 /<point d'entree>

  devrait fonctionner.

  44..22..  NNooyyaauu

  44..22..11..  CCoonnssttrruuiirree uunn nnooyyaauu ppeerrssoonnnnaalliissee

  Dans la plupart des cas, il serait  possible  de  copier  votre  noyau
  actuel  et  d'amorcer la disquette avec ca. Cependant, il peut y avoir
  des cas ou vous souhaitez construire un noyau different.

  Une raison peut etre  la  taille.  Le  noyau  est  un  des  plus  gros
  fichiers,  sur  un  systeme  de  taille minimale, et si vous souhaitez
  creer une disquette amorce/racine, vous aurez a reduire la  taille  du
  noyau  autant  que possible. Le noyau supporte desormais le changement
  de disquette apres amorcage et avant de monter la racine, et comme  il
  n'est  donc plus necessaire d'entasser le noyau sur le meme disque que
  tout le reste, ces commentaires ne s'appliquent que si vous decidez de
  construire une disquette amorce/racine.

  Il y a deux manieres de reduire la taille du noyau :

  +o  Le  construire  avec  le  minimum  d'options necessaires pour faire
     fonctionner le systeme desire. Cela impose de ne conserver  que  ce
     dont  vous  avez  besoin.  Le  support  reseau  est  un  candidat a
     l'elimination, tout comme le support pour tous  disques  et  autres
     peripheriques   que   vous   n'utilisez   pas  avec  votre  systeme
     amorce/racine.

  +o  Le compresser, en utilisant l'option  standard  de  compression  du
     noyau incluse dans le makefile :

               make zImage

  Reportez  vous  a  la  documentation incluse avec les sources du noyau
  pour une information a jour sur la construction de noyaux  compresses.
  Notez  que les sources du noyau sont generalement dans /usr/src/linux.

  Une fois choisi le minimum d'options a inclure  dans  un  noyau,  vous
  devez  choisir  quoi  remettre  dedans.  L'utilisation la plus commune
  d'une disquette amorce/racine est probablement d'examiner et restaurer
  un   systeme   de   fichiers   racine   corrompu,  et  cela  necessite
  eventuellement du support dans le noyau.

  Par exemple, si vos sauvegardes sont stockees sur bandes en  utilisant
  Ftape  pour  acceder au lecteur et que vous perdez votre disque racine
  ainsi que les disques contenant  Ftape,  vous  ne  pourrez  alors  pas
  restaurer votre systeme a partir des bandes de sauvegarde. Vous devrez
  reinstaller Linux, recuperer et reinstaller Ftape, et seulement  alors
  essayer de relire vos sauvegardes.

  Il  est  souhaitable  de  maintenir  une  copie des memes versions des
  utilitaires servant a ecrire les sauvegardes, afin de ne pas perdre de
  temps  a  essayer  d'installer  des  versions  ne pouvant pas lire vos
  bandes de sauvegarde.

  Ce qu'il faut comprendre, c'est que tout support d'entrees/sorties que
  vous  avez  ajoute  a  votre  noyau pour realiser des sauvegardes doit
  aussi etre ajoute a votre noyau d'amorce/racine.

  La  procedure  pour  reconstruire  le  noyau  est  decrite   dans   la
  documentation accompagnant le noyau. C'est assez simple a suivre, donc
  commencez par regarder dans /usr/src/linux. Si vous avez des problemes
  pour  construire un noyau, vous ne devriez probablement pas essayer de
  construire des disques amorce/racine de toute maniere.

  44..33..  PPeerriipphheerriiqquueess

  Tout systeme Linux necessite un repertoire /dev contenant  un  fichier
  special  pour  tous  les  peripheriques  utilisees  par le systeme. Le
  repertoire lui-meme est un repertoire normal, et peut etre  cree  avec
  la  commande  mkdir de la maniere habituelle. Les fichiers speciaux de
  peripheriques doivent par contre etre crees  d'une  certaine  maniere,
  avec la commande mknod.

  Il  y a un raccourci cela dit - copiez votre repertoire /dev existant,
  et supprimez ceux dont vous n'avez pas besoin. La seule chose a  faire
  est  de  copier  les  fichiers  speciaux de peripheriques en utilisant
  l'option -R.

       Attention : la commande cp fournie avec la plus recente ver-
       sion  des  fileutils (3.13) semble ne pas respecter l'option
       -R.

  Cela copie le  repertoire  sans  essayer  de  copier  le  contenu  des
  fichiers.  Si  vous  utilisez  un  r  minuscule,  a  savoir ``-r'', le
  comportement sera tres different, puisque  vous  essaierez  de  copier
  tout  le contenu de tous vos disques - ou tout au moins ce qui tiendra
  sur une disquette ! Faites donc attention, et utilisez la commande :

               cp -dpR /dev /mnt

  en supposant que la disquette est montee sur /mnt. Les options dp con-
  servent  les  liens  symboliques en tant que tels lors de la copie (au
  lieu de copier le fichier pointe) ainsi que les attributs des fichiers
  originaux, preservant donc les informations de propriete.

  Vous  pouvez aussi utiliser l'option -p de cpio, car cpio traitera les
  fichiers speciaux de peripheriques correctement et n'essaiera pas d'en
  copier le contenu.  Par exemple :

               cd /dev
               find . -print | cpio -pmd /mnt/dev

  copiera tous les fichiers speciaux de /dev sur /mnt/dev. En fait, cela
  copiera tous les fichiers dans l'arborescence de  repertoires  commen-
  cant  a  /dev,  et  creera  tous les sous-repertoires necessaires dans
  l'arborescence cible.

  Si vous cherchez la complexite, utilisez  ls  -l  pour  connaitre  les
  numeros  de  peripheriques majeurs et mineurs de ceux que vous voulez,
  et creez les sur la disquette en utilisant mknod.

  De nombreuses distributions incluent un script  shell  appele  MAKEDEV
  dans  le  repertoire  /dev.  Ce script shell pourrait etre utilise les
  peripheriques, mais il est sans  doute  plus  facile  de  copier  ceux
  existant, surtout pour un disque de secours.

  Quelle  que  soit  la  maniere dont le repertoire de peripheriques est
  copie, cela vaut la peine de verifier que tous les  fichiers  speciaux
  dont  vous  avez besoin sont presents sur la disquette de secours. Par
  exemple, Ftape utilise des peripheriques de bande, et vous devrez donc
  copier tous ceux-la.

  Notez  qu'un i-noeud est requis pour chaque fichier special et que les
  i-noeuds peuvent parfois etre rares,  surtout  pour  des  systemes  de
  fichiers  sur  disquette.  Il  est  donc  utile  de supprimer tous les
  fichiers speciaux dont vous n'avez pas besoin dans le repertoire  /dev
  de  la  disquette.  De nombreux peripheriques sont clairement inutiles
  sur des systemes specifiques. Par  exemple,  si  vous  n'avez  pas  de
  disques  SCSI,  vous pouvez supprimer sans problemes tous les fichiers
  de peripheriques commencant par ``sd''. De meme, si  vous  n'avez  pas
  l'intention d'utiliser le port serie, tous les fichiers commencant par
  ``cua'' peuvent disparaitre.

  44..44..  RReeppeerrttooiirreess

  Il est peut-etre  possible  de  faire  fonctionner  un  systeme  Linux
  uniquement  avec  /dev, /proc et /etc. Je ne sais pas - je n'ai jamais
  essaye.  Toutefois,  cela  risque  de  s'averer  difficile,  car  sans
  bibliotheques  partagees  tous vos executables devraient etre compiles
  statiquement. Il est raisonnable d'avoir au minimum les repertoires :

     //ddeevv
        Necessaire pour les entrees/sorties avec les peripheriques

     //pprroocc
        Necessaire pour la commande ps

     //eettcc
        Fichiers de configuration du systeme

     //bbiinn
        Executables des utilitaires consideres comme faisant  partie  du
        systeme

     //lliibb
        Bibliotheques partagees necessaires au fonctionnement

     //mmnntt
        Un point de montage pour effectuer des operations de maintenance
        sur d'autres disques

     //uussrr
        Utilitaires et applications supplementaires

  L'arborescence presentee ici n'est a utiliser que  sur  une  disquette
  racine. Consultez le Standard de Systeme de Fichiers Linux (Linux File
  System Standart) pour de plus amples informations sur la structure des
  systemes de fichiers sur des systemes Linux ``standards''.

  Quatre de ces repertoires peuvent etre crees facilement :

  +o  /dev  est decrit ci-dessus dans la section intitulee Peripheriques.

  +o  /proc doit juste etre  present.  Il  n'y  a  juste  qu'a  creer  le
     repertoire avec mkdir.

  +o  /mnt  et  /usr sont uniquement inclus dans cette liste comme points
     de montage  a  utiliser  une  fois  que  le  systeme  amorce/racine
     fonctionne. Ici aussi, ces repertoires n'ont qu'a etre crees.

  Les 3 repertoires restants sont decrits dans les sections suivantes.

  44..44..11..  //eettcc

  Ce   repertoire  doit  contenir  un  certain  nombre  de  fichiers  de
  configuration. Sur la plupart des systemes, on peut les repartir en  3
  groupes :

  +o  Necessaire en permanence, par exemple rc, fstab, passwd.

  +o  Eventuellement necessaire, mais personne n'est sur.

  +o  Le bazar qui s'est accumule

  Les fichiers non essentiels peuvent etre identifies avec la commande :

               ls -ltru

  On obtient la liste des fichiers dans l'ordre inverse de leur date  de
  dernier  lecture,  et  si des fichiers ne sont jamais lus, ils peuvent
  etre omis de la disquette racine.

  Sur mes disquettes  racine,  je  n'ai  conserve  que  15  fichiers  de
  configuration.  Mon  travail  se  trouve  reduit  a  trois  groupes de
  fichiers :

  +o  Ceux que je dois configurer pour un systeme amorce/racine :

               rc.d/*  scripts de demarrage et de changement de niveau de
                       fonctionnement (run level)
               fstab   liste de systemes de fichiers a monter
               inittab parametres pour le processus init_- le premier
                       processus lance au demarrage.

  +o  Ceux que je dois nettoyer pour un systeme amorce/racine :

               passwd  liste des utilisateurs
               shadow  qui contient les mots de passe

  Ces fichiers doivent etre nettoyes sur des systemes securises afin  de
  ne  pas  copier les mots de passe des utilisateurs ailleurs que sur le
  systeme, et pour que lorsque vous demarrez depuis une  disquette,  les
  logins invalides soient rejetes.

       Notez  qu'il  y  a une raison pour _n_e _p_a_s nettoyer passwd et
       shadow. Tar (et probablement d'autres programmes d'archives)
       stocke  les  noms  d'utilisateurs  et  de  groupes  avec les
       fichiers. Si vous restaurez des fichiers  sur  votre  disque
       dur  depuis  une  bande,  les fichiers seront restaures avec
       leurs noms  originaux,  Si  ces  noms  n'existent  pas  dans
       passwd/group quand ils sont restaures, les IUD/GID ne seront
       pas corrects.

  +o  Le reste. Ils fonctionnent pour l'instant, je n'y touche donc  pas.

  Parmi  tout  ca, je n'ai reellement que deux fichiers a configurer, et
  leur contenu est etonnamment petit.

  +o  rc doit contenir :

          #!/bin/sh
          /etc/mount -av
          /bin/hostname boot_root

  ou je n'ai pas vraiment  besoin  de  lancer  hostname  -  ca  a  juste
  meilleure  allure  si je le fais. Meme mount est uniquement necessaire
  pour monter /proc pour que ps fonctionne - Linux fonctionne  sans  ca,
  bien  que les operations de secours soient assez limitees sans mount !

  +o  fstab doit contenir :

               /dev/ram        /               ext2    defaults
               /dev/fd0        /               ext2    defaults
               /proc           /proc           proc    defaults

  Je ne crois pas que la premiere ligne soit vraiment  necessaire,  mais
  j'ai remarque que si je ne la mets pas, mount ne monte pas /proc.

  Inittab  devrait  convenir  tel quel, sauf si vous voulez vous assurer
  que les utilisateurs par port serie ne peuvent pas se connecter.  Pour
  eviter  cela, commentez toutes les lignes avec /etc/getty contenant un
  peripherique tty ou ttyS au bout de la ligne. Laissez  les  ports  tty
  pour pouvoir vous connecter sur la console.

  Inittab  definit  ce  que  le  systeme  lance  ou relance a differents
  moments, comme le demarrage, le passage  en  mode  multi-utilisateurs,
  les  pertes  d'alimentation,  etc.  Il  faut  faire  s'assurer que les
  commandes  presentes  dans  inittab  correspondent  a  des  programmes
  presents,  ainsi  qu'au bon repertoire. Si vous placez vos fichiers de
  commandes sur le disque de secours en utilisant l'exemple  de  contenu
  de  repertoires  fourni  dans  ce HOWTO comme guide, puis copiez votre
  inittab sur le disque de secours sans le verifier, il y  a  de  fortes
  chances  que  cela  ne  fonctionne  pas,  car  la moitie des lignes de
  l'inittab feront reference a des programmes inexistants ou places dans
  le mauvais repertoire.

  Il  faut  aussi noter que certains programmes ne peuvent etre deplaces
  d'un repertoire vers un autre sans mal fonctionner  au  demarrage  car
  ils referencent directement dans leur code le nom d'un autre programme
  qu'ils essayent de lancer. Par exemple sur mon systeme,  /etc/shutdown
  contient  directement le chemin /etc/reboot. Si je deplace reboot vers
  /bin/reboot puis que je lance une commande shutdown, elle  ne  va  pas
  marcher puisqu'elle ne pourra pas trouver le fichier reboot.

  Pour  le  reste,  copiez simplement tous les fichiers texte dans votre
  repertoire /etc, ainsi que tous les executables dans votre  repertoire
  /etc  dont  vous n'etes pas sur de pouvoir vous debarrasser. Pour vous
  guider,  consultez  la  sortie  exemple  de  ls  dans  ``Contenu   des
  repertoires  du  disque  racine  (ls -lR)'' - c'est ce que j'ai, et ca
  devrait donc vous suffire si vous copiez ces fichiers - mais notez que
  les systemes peuvent etre tres differents, et on ne peut donc pas etre
  certain qu'un ensemble de fichiers sur votre systeme est equivalent au
  meme  sur  le mien. La seule methode sure est de demarrer avec inittab
  et determiner ce qui est necessaire.

  La plupart des systemes utilisent maintenant un  repertoire  /etc/rc.d
  contenant   des   scripts   shell   pour  les  differents  niveaux  de
  fonctionnement (run levels). Le  minimum  absolu  est  un  fichier  rc
  unique,  mais  il  sera sans doute beaucoup plus simple en pratique de
  copier le fichier inittab et le repertoire /etc/rc.d de votre systeme,
  et  nettoyer  les  scripts  shell  dans  rc.d  pour supprimer tous les
  traitements inutiles a un environnement systeme sur disquette.

  44..44..22..  //bbiinn

  C'est le bon endroit pour placer les autres utilitaires dont vous avez
  besoin pour les operations de base, tels que ls, mv, cat, dd, etc.

  Voir  la  section  intitulee  ``Exemple de ls -lR pour amorce/racine''
  pour une liste des fichiers que je place dans le repertoire /bin de ma
  disquette   amorce/racine.   Vous   pourrez   remarquer  qu'aucun  des
  utilitaires necessaires a la restauration d'une sauvegarde,  tels  que
  cpio,  tar,  gzip,  etc, ne s'y trouvent. C'est parce que je les place
  sur une disquette utilitaire separee, pour garder de la place  sur  la
  disquette   amorce/racine.   Apres  avoir  demarre  sur  ma  disquette
  amorce/racine, son contenu est copie dans le disque memoire,  laissant
  le  lecteur  de  disquette  libre  pour monter une autre disquette, la
  disquette utilitaire. Je la monte en general sur /usr.

  La creation d'une disquette utilitaire est decrite ci-dessous dans  la
  section intitulee ``Ajouter des disquettes utilitaires''.

  44..44..33..  //lliibb

  Dans  /lib vous placez certaines bibliotheques partagees ainsi que les
  chargeurs. Si les bibliotheques necessaires ne sont pas trouvees  dans
  votre repertoire /lib, le systeme ne pourra pas demarrer. Si vous avez
  de  la  chance,  vous  verrez  un  message  d'erreur  vous  expliquant
  pourquoi.

  Pratiquement  tous les programmes necessitent au moins la bibliotheque
  libc :

               libc.so.X

  ou X represente le numero de version  courante.  Verifiez  dans  votre
  repertoire /lib. Notez que libc.so.4 peut etre un lien symbolique vers
  une bibliotheque libc avec un numero de version dans le nom.  Si  vous
  lancez la commande :

               ls -l /lib

  vous obtiendrez quelque chose du genre :

               libc.so.4 -> libc.so.4.5.21

  Dans   ce  cas,  la  bibliotheque  libc  dont  vous  avez  besoin  est
  libc.so.4.5.21. Ce n'est qu'un exemple - la bibliotheque libc _E_L_F  est
  actuellement libc.so.5.xxxx.

  Pour   trouver   d'autres   bibliotheques,   vous  devrez  tester  les
  dependances de tous les  binaires  que  vous  souhaitez  utiliser.  La
  commande ldd sert a ca. Par exemple, sur mon systeme la commande :

               ldd /bin/mount

  renvoie comme resultat :

               /bin/mount:
                       libc.so.5 => /lib/libc.so.5.2.18

  indiquant  que  /bin/mount  a besoin de la bibliotheque libc.so.5, qui
  est un lien symbolique sur libc.so.5.2.18.

  Vous devez aussi placer dans  /lib  un  ou  plusieurs  chargeurs  pour
  charger les bibliotheques. Le fichier du chargeur est soit ld.so (pour
  les  bibliotheques  au  format  _a_._o_u_t),  soit  ld-linux.so  (pour  les
  bibliotheques  _E_L_F).  Si  vous n'etes pas sur duquel vous avez besoin,
  lancez la commande ``file'' sur la bibliotheque. Par exemple, sur  mon
  systeme :

               file /lib/libc.so.5.2.18

  me repond :

               /lib/libc.so.5.2.18: ELF 32-bit LSB shared object ...

  et  par  consequent  elle a besoin d'un chargeur _E_L_F. Si vous avez une
  bibliotheque _a_._o_u_t, vous obtiendrez un resultat du genre :

               /lib/libc.so.4.7.2: Linux/i386 demand-paged executable (QMAGIC) ...

  Copiez le(s) chargeur(s) specifique(s) dont vous avez besoin.

  Il faut verifier que les bibliotheques et chargeurs correspondent bien
  aux   binaires   utilises.  Si  le  noyau  ne  peut  pas  charger  une
  bibliotheque  indispensable,  il  plantera  en  general  sans  message
  d'erreur.

  44..55..  LLIILLOO

  44..55..11..  AAppeerrccuu

  Pour  que  l'amorce/racine  soit utilisable, elle doit etre amorcable.
  Pour ce faire, le plus simple est d'installer un chargeur, qui est  un
  morceau de code executable stocke sur le secteur 0 du cylindre 0 de la
  disquette. Voir la section ci-dessus intitulee ``Disquettes de  boot''
  pour une description du processus.

  LILO  est  un chargeur longuement teste et eprouve disponible sur tout
  site miroir Linux. Il  vous  permet  de  configurer  le  chargeur,  en
  particulier :

  +o  Quel peripherique doit etre utilise comme disque racine

  +o  S'il faut utiliser un disque memoire

  44..55..22..  EExxeemmppllee ddee ccoonnffiigguurraattiioonn ddee LLIILLOO

  Cela  permet  de  specifier  au  noyau  comment  il doit demarrer. Mon
  fichier de configuration de LILO pour  l'amorce/racine,  utilise  avec
  LILO 0.15, est :

       ______________________________________________________________________
       boot = /dev/fd0
       install = ./mnt/boot.b
       map = ./mnt/lilo.map
       delay = 50
       message = ./mnt/lilo.msg
       timeout = 150
       compact
       image = ./mnt/zImage
               ramdisk = 1440
               root = /dev/fd0
       ______________________________________________________________________

  Notez  que  je  ne  l'ai pas teste recemment, car je n'utilise plus de
  disquettes amorce/racine utilisant LILO. Il n'y  a  aucune  raison  de
  supposer que cela ne fonctionne plus, mais si vous essayez et que cela
  ne marche pas, vous devez lire la documentation de  LILO  pour  savoir
  pourquoi.

  Notez  aussi que les systemes amorce/racine n'ont plus besoin de LILO,
  car depuis la version 1.3.48, le noyau  supporte  le  chargement  d'un
  systeme  de  fichiers compresse depuis la meme disquette que le noyau.
  Voire la section ``Creation de disquette de demarrage elaboree''  pour
  les details.

  Si  vous  avez  un  noyau  posterieur  a  la  version 1.3.48, la ligne
  ``ramdisk = 1440'' est inutile et doit etre retiree.

  Notez que boot.b, lilo.msg et le noyau doivent prealablement avoir ete
  copies sur la disquette en utilisant une commande du genre :

       ______________________________________________________________________
       cp /boot/boot.b ./mnt
       ______________________________________________________________________

  Si  cela  n'est  pas  fait,  LILO  ne fonctionnera pas correctement au
  demarrage si le disque dur n'est  pas  disponible,  et  un  disque  de
  secours  qui  necessite  la  presence  du disque dur pour demarrer est
  d'une utilite douteuse.

  Je lance lilo avec la commande :

               /sbin/lilo -C <fichier de configuration>

  Je le lance depuis le repertoire contenant le  repertoire  mnt  ou  la
  disquette  est montee. Cela signifie que je demande a LILO d'installer
  un chargeur sur le peripherique de demarrage (/dev/fd0 dans  ce  cas),
  pour  demarrer  un  noyau  situe  dans  le  repertoire  racine  de  la
  disquette.

  J'ai  aussi  specifie  que  je  veux  utiliser  la   disquette   comme
  peripherique racine, et que je veux qu'un disque memoire de 1440 blocs
  de 1 Ko soit cree, a savoir la taille de la  disquette.  Puisque  j'ai
  cree  un  systeme  de  fichiers  _e_x_t_2  sur  la  disquette,  toutes les
  conditions sont remplies pour que  Linux  utilise  automatiquement  le
  disque  memoire comme peripherique racine, et y copie le contenu de la
  disquette.

  Les  possibilites  de  Linux  concernant  les  disques  memoires  sont
  decrites  de maniere plus poussees dans la section ci-dessus intitulee
  ``Disques memoires et systemes amorce/racine''.

  On peut  aussi  envisager  d'utiliser  le  parametre  ``single''  pour
  demarrer  Linux  en  mode mono-utilisateur. Cela permet d'empecher les
  utilisateurs de se connecter par les ports serie.

  J'utilise aussi les instructions ``DELAY'', ``MESSAGE'' et ``TIMEOUT''
  pour  que  lorsque je demarre le disque, LILO me laisse la possibilite
  d'entrer des options en ligne de commande si je le souhaite.  Je  n'en
  ai  pas  besoin  actuellement,  mais  on  ne  sait  jamais  si l'on ne
  souhaitera pas changer de peripherique racine ou monter un systeme  de
  fichiers en lecture seule.

  Le fichier de messages que j'utilise contient le message :

       Disquette amorce/racine Linux
       =============================

       Entrez une ligne de commandes de la forme_:

               zImage [ options en ligne ]

       Si rien n'est entre, Linux sera charge avec les parametres
       par defaut dans 15 secondes.

  Il ne s'agit que d'un aide-memoire pour me rappeler mes options.

  Les  lecteurs  sont invites a lire la documentation de LILO de maniere
  attentive avant d'essayer d'installer quoi que ce soit. Il  est  assez
  facile  de  detruire  des  partitions  si  vous  utilisez  le  mauvais
  parametre ``boot = ''. Si vous manquez  d'experience,  NE  LANCEZ  PAS
  LILO  avant  d'etre  sur  que  vous le comprenez et d'avoir verifie de
  nombreuses fois vos parametres.

  Notez que vous devez relancer LILO a chaque fois que vous  changez  le
  noyau,  pour que LILO puisse mettre a jour sa cartographie en fonction
  du nouveau noyau. Il est en fait possible de remplacer le noyau par un
  autre  quasiment  identique sans relancer LILO, mais mieux vaut ne pas
  parier la dessus - si vous changez de noyau, relancez LILO.

  44..55..33..  RReettiirreerr LLIILLOO

  Je peux aussi ajouter ceci tant que j'en suis a parler de  LILO  :  si
  vous  installez  par  erreur  LILO  sur  un disque contenant DOS, vous
  pouvez toujours remplacer le secteur d'amorce par le chargeur  du  DOS
  en tapant la commande DOS :

               FDISK /MBR

  ou MBR signifie ``Master Boot Record''. Notez que quelques puristes ne
  sont pas d'accord, eventuellement avec raison, mais cela marche.

  44..55..44..  OOppttiioonnss uuttiilleess ddee LLIILLOO

  LILO a plusieurs options utiles qu'il est bon de se  rappeler  lorsque
  l'on cree des disques de demarrage :

  +o  Options  en  ligne  de commande - vous pouvez entrer des options en
     ligne de commande pour changer le peripherique racine, la taille du
     disque   memoire   (pour  les  noyaux  anterieurs  a  1.3.48),  des
     parametres speciaux pour certains peripheriques, ou d'autres choses
     encore.  Si  vous  incluez  l'instruction ``DELAY = nn'' dans votre
     fichier de configuration LILO, LILO fera alors une pause pour  vous
     permettre  de  selectionner  une image noyau a amorcer, et d'entrer
     sur la meme ligne, des options. Par exemple :

               zImage aha152x=0x340,11,3,1 ro

  passera les parametres _a_h_a_1_5_2_x jusqu'au gestionnaire  de  disque  SCSI
  aha152x (a condition que ce gestionnaire ait ete inclus a la construc-
  tion du noyau) et demandera a ce que le  systeme  de  fichiers  racine
  soit monte en lecture seule.

  +o  Option  en ligne de commande ``lock'' - cette option demande a LILO
     de stocker la ligne de commande entree comme ligne de commande  par
     defaut  pour  tous  les  demarrages  futurs. C'est particulierement
     utile lorsque vous utilisez un peripherique qui ne  peut  pas  etre
     auto-selectionne. En utilisant ``lock'' vous evitez d'avoir a taper
     la chaine de parametre du gestionnaire  a  chaque  demarrage.   Par
     exemple :

               zImage aha152x=0x340,11,3,1 root=/dev/sda8 ro lock

  +o  instruction  de  configuration  APPEND - cela permet de stocker des
     chaines de parametres pour  gestionnaires  dans  la  configuration,
     comme  alternative  a l'utilisation de l'option ``lock''. Notez que
     tous les mots cles de la forme _m_o_t_=_v_a_l_e_u_r DOIVENT etre entoures par
     des guillemets. Par exemple :

               APPEND = "aha152x=0x340,11,3,1"

  +o  instruction  de  configuration  DELAY  - cela provoque une pause de
     DELAY dixiemes de secondes et permet a l'utilisateur  d'interrompre
     le  demarrage  automatique de la ligne de commande par defaut, afin
     qu'il puisse en entrer une autre.

  55..  CCrreeaattiioonn ddee ddiissqquueettttee ddee ddeemmaarrrraaggee eellaabboorreeee

  55..11..  AAppeerrccuu

  Les sections precedentes de ce  document  couvrent  les  bases  de  la
  creation  de  disquettes amorce et racine, et s'appliquent a quasiment
  tous les noyaux jusqu'aux versions actuelles (2.0,  le  dernier  noyau
  stable).

  Les   noyaux   1.3.48   et   ulterieurs   contiennent  une  reecriture
  substantielle du  code  du  disque  memoire,  rajoutant  d'importantes
  fonctionnalites nouvelles. Ces noyaux peuvent automatiquement detecter
  de systemes de fichiers compresses, les decompresser  et  les  charger
  dans  le  disque memoire au demarrage. Les systemes de fichiers racine
  peuvent etre places sur un second disque, et a partir du noyau  1.3.98
  environ, les disques memoires peuvent etre agrandis dynamiquement.

  Ensemble,   ces   nouvelles  fonctionnalites  permettent  aux  disques
  d'amorce de contenir  substantiellement  plus  de  donnees  qu'ils  ne
  pouvaient  le  faire jusqu'alors. Avec de la compression, un disque de
  1722 Ko contient desormais jusqu'a 3.5 Mo de fichiers. Comme tous ceux
  qui  ont  crees  des  disques d'amorce le savent, on passe beaucoup de
  temps a elaguer l'ensemble des fichiers  et  a  trouver  des  versions
  reduites  des fichiers pour que le tout tienne sur un petit systeme de
  fichiers. Les nouvelles  possibilites  font  que  cela  n'a  plus  une
  importance cruciale.

  Malheureusement, ces nouvelles fonctionnalites compliquent quelque peu
  la creation de disquettes d'amorce les exploitant. Pour construire  un
  systeme  de  fichiers  compresse sur une disquette, celui-ci doit tout
  d'abord etre  cree  sur  un  autre  peripherique,  puis  compresse  et
  transfere   sur   la   disquette.   Cela   implique  donc  des  etapes
  supplementaires.

  Schematiquement, il faut creer un systeme de fichiers  compresse  pour
  la  racine,  copier  le  noyau  sur  la  disquette, dire a celui-ci ou
  trouver le systeme de fichiers racine, puis  copier  celui-ci  sur  la
  disquette.

  Voici   un  schema  simple  en  ASCII  montrant  la  structure  de  la
  disquette :

       |<--- zImage --->|<-- Systeme de fichiers racine compresse -->|
       |________________|____________________________________________|
                    Disquette

  Voici les etapes pour la creation de la disquette amorce :

  55..22..  CCrreeaattiioonn dduu ssyysstteemmee ddee ffiicchhiieerrss rraacciinnee

  Le systeme de fichiers racine est cree en  gros  de  la  meme  maniere
  qu'indique   dans  la  section  4.1  de  ce  document.  La  difference
  principale vient du fait que vous ne pouvez plus creer le  systeme  de
  fichiers  directement  sur  la disquette, mais que vous devez le creer
  sur un peripherique different de plus grande taille que l'espace de la
  disquette qu'il va occuper.

  55..22..11..  CChhooiixx dduu ppeerriipphheerriiqquuee

  Pour  construire  un tel systeme de fichiers pour la racine, vous avez
  besoin d'un peripherique en  plus  de  taille  suffisante.  Vous  avez
  plusieurs choix :

  +o  Si  vous  disposez  d'une  partition  inutilisee  sur un disque dur
     suffisamment grande (plusieurs megaoctets), c'est  la  solution  la
     plus  simple.  Sinon,  si  vous  avez  suffisamment de memoire vive
     physiquement presente, vous pouvez arreter le swap et construire le
     systeme de fichiers dans la partition de swap.

     Cependant, la plupart des gens n'ont pas de partition en trop et ne
     peuvent pas non plus se permettre de retirer le swap, donc ...

  +o  Utilisez un peripherique _l_o_o_p_b_a_c_k. Un tel  peripherique  permet  de
     faire  passer un fichier present sur un systeme de fichier existant
     pour un peripherique. Pour  utiliser  des  peripheriques  _l_o_o_p_b_a_c_k,
     vous  devez  utiliser  des  programmes mount et umount specialement
     modifies. Vous pouvez les trouver sur :

               ftp://ftp.win.tue.nl:/pub/linux/util/mount-2.5X.tar.gz

  ou X represente la lettre de la derniere modification.

  Si vous n'avez pas de fichiers  speciaux  correspondants  aux  periph-
  eriques _l_o_o_p_b_a_c_k (/dev/loop0, /dev/loop1, etc) sur votre systeme, vous
  devrez d'abord les creer. Les commandes :

               mknod /dev/loop0 b 7 0
               mknod /dev/loop1 b 7 1
               mknod /dev/loop2 b 7 2
               ...

  vous permettront cela. Vous n'avez sans doute besoin que de loop0.

  Une fois ces binaires speciaux de mount et umount installes, creez  un
  fichier  temporaire  sur un disque dur de taille suffisante (par exem-
  ple, /tmp/fsfile). Vous pouvez utiliser une commande du type :

               dd if=/dev/zero of=/tmp/fsfile bs=1k count=nnn

  pour creer un fichier de _n_n_n blocs.

  Utilisez le nom du fichier a  la  place  de  PERIPHERIQUE  ci-dessous.
  Quand  vous  lancez  une commande mount, vous devez y ajouter l'option
  ``-o loop'' pour lui signaler  qu'il  doit  utiliser  un  peripherique
  _l_o_o_p_b_a_c_k. Par exemple :

               mount -o loop -t ext2 /tmp/fsfile /mnt

  montera  /tmp/fsfile  (par peripherique _l_o_o_p_b_a_c_k) sur le point de mon-
  tage /mnt. Un ``df'' vous le confirmera.

  +o  La  derniere  possibilite  est   d'utiliser   le   disque   memoire
     (PERIPHERIQUE = /dev/ram0 ou /dev/ramdisk). Dans ce cas, la memoire
     est utilisee pour simuler un disque. Le disque  memoire  doit  etre
     assez  grand  pour  contenir  un  systeme  de fichiers de la taille
     necessaire. Cherchez dans votre fichier de configuration pour  LILO
     (/etc/lilo.conf) une ligne de la forme :

               RAMDISK_SIZE = nnn

  qui  determine  la  quantite  de memoire vive a allouer. La valeur par
  defaut est 4096 Ko.

  Apres avoir choisi une de ces possibilites, preparez  le  peripherique
  avec :

               dd if=/dev/zero of=PERIPHERIQUE bs=1k count=3000

  Cette  commande  remplit  de  zeros  le  peripherique. Cette etape est
  importante, car le systeme  de  fichiers  sur  le  peripherique  etant
  compresse  ulterieurement, toutes les parties inutilisees doivent etre
  mises a zero pour obtenir la meilleure compression possible.

  Ensuite, creez le systeme de fichiers avec :

               mke2fs -m 0 PERIPHERIQUE

  (Si vous utilisez  un  peripherique  _l_o_o_p_b_a_c_k,  le  fichier  que  vous
  utilisez  doit  etre  fourni  a  la place de PERIPHERIQUE. Mke2fs vous
  demandera alors si vous voulez vraiment faire cela ; repondez oui.)

  Puis montez le peripherique :

               mount -t ext2 PERIPHERIQUE /mnt

  Comme precedemment, copiez les fichiers dans /mnt, comme explique a la
  section 4.1.

  55..22..22..  CCoommpprreessssiioonn dduu ssyysstteemmee ddee ffiicchhiieerrss

  Une  fois  copies les fichiers sur le systeme de fichiers racine, vous
  devez copiez celui-ci, puis le compresser. Tout d'abord, demontez le :

               umount /mnt

  (Techniquement,  vous  pouvez  copiez  le  systeme de fichiers sans le
  demonter auparavant, mais cela peut etre dangereux, et c'est de  toute
  maniere une mauvaise habitude.)

  Puis,  copiez  les  donnees  depuis  le  peripherique dans un fichier.
  Appelez le fichier rootfs :

               dd if=PERIPHERIQUE of=rootfs bs=1k

  Puis, compressez le. Utilisez l'option ``-9'' de gzip pour obtenir une
  compression maximale :

               gzip -9 rootfs

  Cela  peut  prendre  plusieurs  minutes.  Une fois fini, vous aurez un
  fichier rootfs.gz  qui  contient  votre  systeme  de  fichiers  racine
  compresse.

  Si vous manquez d'espace disque, vous pouvez combiner dd et gzip :

               dd if=PERIPHERIQUE bs=1k | gzip -9 > rootfs.gz

  55..33..  CCaallccuull ddee llaa ttaaiillllee

  A  present,  verifiez  la taille de l'ensemble afin de verifier que le
  noyau ainsi que  le  systeme  de  fichiers  racine  tiendront  sur  la
  disquette.  Un  ``ls  -l''  vous  montrera  combien  d'octets occupent
  chacun ; divisez par 1024 pour obtenir le nombre de blocs dont  chacun
  aura  besoin.  Pour  les  fractions  de  bloc,  arrondissez  au nombre
  superieur.

  Par exemple, si le noyau occupe 453281 octets, il necessitera

               ceil(453281 / 1024) = 443

  blocs et occupera donc les blocs 0 a 442 sur la disquette. Le  systeme
  de  fichiers  racine  commencera  au bloc 443. Notez ce numero de bloc
  pour les commandes a suivre ; appelez le DEBUTRACINE.

  Vous devez indiquer au noyau ou il peut trouver le systeme de fichiers
  racine  sur  la disquette. A l'interieur de l'image du noyau se trouve
  un mot pour le disque memoire qui indique  ou  se  trouve  la  racine,
  ainsi    que    d'autres    options.    Le   mot   est   defini   dans
  /usr/src/linux/arch/i386/kernel/setup.c et est interprete comme suit :

           bits  0-10\~:       Decalage pour le debut du disque memoire, en
                               blocs de 1024 octets (c'est DEBUTRACINE,
                               calcule ci-dessus)
           bits 11-13\~:       inutilise
           bit     14\~:       drapeau indiquant que le disque memoire doit
                               etre charge
           bit     15\~:       drapeau indiquant qu'il faut demander
                               l'insertion de la disquette

  (Si  le  bit  15 est positionne a 1, on vous demandera au demarrage de
  placer une nouvelle disquette dans le lecteur. C'est  necessaire  pour
  un  kit  de  demarrage  en  deux disquettes, decrit ci-dessous dans la
  section  ``Fabriquer  un  kit  sur  deux  disques''.  Pour  l'instant,
  considerons le a 0).

  Si le systeme de fichiers racine doit commencer au bloc 443, le mot du
  disque memoire est :

            1BB (hexa) 443 (decimal)                           (bits 0-10)
         + 4000 (hexa) Drapeau de chargement du disque memoire (bit    14)
           -----------
         = 41BB (hexa)
         =16827 (decimal)

  Ce mot doit etre positionne dans l'image  du  noyau  en  utilisant  la
  commande ``rdev -r'' dans la section suivante.

  55..44..  CCooppiiee ddeess ffiicchhiieerrss ssuurr llaa ddiissqquueettttee

  Vous etes maintenant pret a creer la disquette d'amorce. Tout d'abord,
  copiez le noyau :

               dd if=zImage of=/dev/fd0

  Ensuite, indiquez a celui-ci ou trouver son systeme de fichiers racine
  sur la disquette :

               rdev /dev/fd0 /dev/fd0

  Vous  devez  maintenant  positionner  le  mot  du  disque memoire dans
  l'image du noyau situee sur la disquette. On donne sa valeur au mot en
  utilisant  la  commande ``rdev -r''. En prenant la valeur calculee ci-
  dessus dans la section intitulee ``Calcul de la taille'', cela donne :

               rdev -r /dev/fd0 16827

  Enfin,  placez le systeme de fichiers racine sur la disquette derriere
  le noyau. La commande dd  possede  une  option  seek  vous  permettant
  d'indiquer combien de blocs sauter avant d'ecrire :

               dd if=rootfs.gz of=/dev/fd0 bs=1k seek=443

  (Le  nombre  443  correspond  a  DEBUTRACINE  provenant  de la section
  ``Calcul de la taille'' precedente.)

  Attendez que l'ecriture soit finie sur  la  disquette,  et  vous  etes
  pret.

  55..55..  FFaabbrriiqquueerr uunn kkiitt ssuurr ddeeuuxx ddiissqquueess

  Si  vous  avez  besoin  de plus de place, vous pouvez fabriquer un kit
  d'amorce  sur  deux  disques.  Dans  ce  cas,  la  premiere  disquette
  contiendra  uniquement  le noyau, et la seconde le systeme de fichiers
  racine compresse.  Dans  cette  configuration,  votre  systeme  racine
  compresse peut faire jusqu'a 1440 Ko.

  La  creation d'un ensemble de deux disquettes d'amorce est realisee de
  maniere sensiblement identique aux etapes precedemment decrites.  Tout
  d'abord,  vous  devez  positionner  le drapeau de demande de disquette
  memoire a 1 pour indiquer au noyau  qu'il  faut  demander  la  seconde
  disquette  et  attendre  son  insertion.  Le systeme racine commence a
  l'octet 0 de la second disquette.

  Comme indique dans la precedente section ``Calcul de la  taille'',  le
  drapeau indiquant qu'il faut demander l'insertion de la disquette (bit
  15) doit etre positionne a 1, et le decalage du  disque  memoire  sera
  zero. Dans notre exemple, le calcul donnera cette fois :

           4000 (hexa) drapeau de chargement du disque memoire (bit 14)
         + 8000 (hexa) drapeau demandant une invite pour le
                       chargement de la disquette racine       (bit 15)
         ------------
         = C000 (hexa)
         =49152 (decimal)

  qui sera utilise dans le calcul pour ``rdev -r'' comme precedemment.

  Suivez  les  instructions  de  ``Copie des fichiers sur la disquette''
  indiquees ci-dessus, mais apres avoir lance la commande  ``rdev  -r'',
  inserez une nouvelle disquette dans le lecteur et lancez la commande :

          dd if=rootfs.gz of=/dev/fd0

  L'option seek n'est pas necessaire  puisque  le  systeme  de  fichiers
  racine demarre au bloc zero.

  66..  EEnn ccaass ddee pprroobblleemmeess

  En  construisant  des  disques  de  secours,  il  est  courant que les
  premiers essais ne demarrent  pas.  En  general,  pour  construire  un
  disque  d'amorce,  on assemble des composants de son systeme existant,
  et on tente d'obtenir que le systeme  sur  disquette  demarre  jusqu'a
  afficher  des messages sur la console. Une fois qu'il vous parle, vous
  avez presque gagne la bataille, car vous pouvez voir  de  quoi  il  se
  plaint,  et  corriger  les  problemes  individuels  jusqu'a  ce que le
  systeme  marche  sans  problemes.  Si   le   systeme   s'arrete   sans
  explications, il peut etre difficile de trouver l'origine du probleme.
  Pour obtenir un systeme qui demarre et arrive  a  parler,  un  certain
  nombre de composants doivent etre presents et correctement configures.
  La  methode  recommandee  pour  trouver  le  probleme  si  le  systeme
  n'affiche rien est comme suit :

  +o  Verifiez  que  le  disque  racine contient bien les repertoires que
     vous croyez. Il est facile de se tromper de repertoire  origine  et
     de  se  retrouver avec quelque chose du genre /disque_racine/bin au
     lieu de /bin sur votre disquette racine.

  +o  Verifiez que /lib/libc.so et /lib/libtermcap.so sont presents, avec
     les memes liens que dans votre repertoire lib sur le disque dur.

  +o  Verifiez que tous les liens symboliques du repertoire /dev de votre
     systeme existent egalement dans votre systeme de  fichiers  racine,
     quant  il  s'agit  de  liens  vers  des peripheriques que vous avez
     inclus dans votre disquette racine.  En  particulier,  /dev/console
     est indispensable dans bien des cas.

  +o  Verifiez que vous avez inclus /dev/tty1 sur votre disque racine.

  +o  Verifiez   que   vous  avez  inclus  les  peripheriques  /dev/null,
     /dev/zero, /dev/mem, /dev/ram et /dev/kmem.

  +o  Verifiez la configuration de votre noyau - le support de toutes les
     ressources  necessaires  pour vous logguer doivent etre inclus dans
     le noyau, et non pas sous forme de  modules.  Surtout,  _l_e  _s_u_p_p_o_r_t
     _p_o_u_r _d_i_s_q_u_e _m_e_m_o_i_r_e _(_r_a_m_d_i_s_k) doit etre inclus_.

  +o  Verifiez  que  les  parametres  de peripherique racine et de disque
     memoire  du  noyau  sont  corrects.  Reportez-vous  a  la   section
     ``Creation de disque d'amorce        evolue'' pour les details.

  Une  fois  ces  divers points generaux couverts, voici quelques points
  plus particuliers a surveiller :

  1. Verifiez qu'init est present en tant que /sbin/init  ou  /bin/init,
     et qu'il est executable.

  2. Lancez  ldd init pour verifier les bibliotheques d'init. En general
     il n'y a que libc.so, mais il vaut  mieux  verifier.  Verifiez  que
     vous incluez ces bibliotheques.

  3. Lancez  file  sur  la(les)  bibliotheque(s)  indiquees par ldd pour
     connaitre leur type. Verifiez que vous avez le bon chargeur present
     sur  le  disque  racine.  Le  chargeur  est  soit  ld.so  (pour les
     bibliotheques _a_._o_u_t),  soit  ld-linux.so  (pour  les  bibliotheques
     _E_L_F).

  4. Verifiez  /etc/inittab  sur  le systeme de fichiers de votre disque
     amorce pour les appels a *getty*.

       La notation *getty* sera utilisee  pour  indiquer  des  pro-
       grammes  du  genre  de getty, comme getty, agetty, mgetty ou
       getty_ps.

  Verifiez bien ceux-ci avec ceux de l'inittab de votre disque dur. Ver-
  ifiez  les pages de manuel du programme pour vous assurez que cela est
  utile. Inittab est peut-etre la partie la plus difficile car  sa  syn-
  taxe  et  son  contenu  dependent  du  programme init utilise et de la
  nature du systeme. La seule facon de resoudre le probleme est de  lire
  les  pages  de  manuel  d'init et inittab et de comprendre ce que fait
  exactement votre systeme  existant  lorsqu'il  demarre.  Verifiez  que
  /etc/inittab  a  une  entree  pour  l'initialisation  du systeme. Elle
  devrait contenir une commande de la forme /etc/rc.x, pour lancer  l'un
  des scripts /etc/rc. Ce script doit exister.

  5. Pour  init,  lancez  ldd  sur getty (ou agetty) pour determiner ses
     besoins,  et  verifiez  que   les   bibliotheques    et   chargeurs
     necessaires ont ete inclus dans votre systeme de fichiers racine.

  6. Si  vous  avez  un  fichier  /etc/ld.so.cache  sur  votre disque de
     secours, regenerez-le.

  Si init demarre, mais que vous obtenez un message du type :

       Id xxx respawning too fast: disabled for n minutes

  cela provient d'init,  qui  indique  generalement  par  la  que  votre
  *getty* ou login se termine aussitot demarre. Verifiez les executables
  de *getty* et login, et les bibliotheques dont ils dependent. Verifiez
  que  les invocations dans /etc/inittab sont correctes. Si vous obtenez
  d'etranges messages de *getty*, cela peut vouloir dire que  son  appel
  dans  /etc/inittab est errone. Les options des programmes *getty* sont
  variees ; meme entre differentes versions  de  agetty,  il  semblerait
  qu'on  trouve  des  arguments  incompatibles.  Si  vous  utilisez  des
  arguments ou un programme different de ce que vous  utilisez  dans  le
  /etc/inittab de votre disque dur, verifiez plutot deux fois qu'une.

  Si  vous essayez de lancer un programme quelconque, tel que df, qui se
  trouve sur votre disque de secours mais que vous obtenez un message du
  genre : df: not found, verifiez deux choses :

  1. Verifiez  que  le  repertoire contenant le programme est dans votre
     variable PATH

  2. Verifiez que vous avez  les  bibliotheques  et  chargeurs  dont  le
     programme  a  besoin.  Tapez  ldd  fichier  pour  voir la liste des
     bibliotheques necessaires, et verifiez que celles-ci existent. Voir
     la section precedente sur /lib.

  77..  FFooiirree AAuuxx QQuueessttiioonnss ((FFAAQQ))

  77..11..   QQ..  JJee ddeemmaarrrree aa ppaarrttiirr ddee mmeess ddiissqquueess aammoorrccee eett rraacciinnee eett rriieenn
  nnee ssee ppaassssee.. QQuuee ddooiiss--jjee ffaaiirree ??

  Cette reponse a ete transferee dans la Section ``En cas de problemes''
  ci-dessus.

  77..22..  QQ.. CCoommmmeenntt ppuuiiss--jjee ffaaiirree uunn ddiissqquuee dd''aammoorrccee aavveecc uunn ggeessttiioonnnnaaiirree
  ppoouurr XXXXXX ??

  La maniere la plus facile est d'obtenir le  noyau  d'une  distribution
  Slackware  depuis  le site miroir Slackware le plus proche. Les noyaux
  Slackware sont des noyaux generiques qui tentent d'inclure  autant  de
  gestionnaires  pour  des peripheriques differents que possible donc si
  vous avez un controlleur SCSI ou IDE, il y a de grandes chances  qu'un
  gestionnaire approprie soit inclus dans le noyau Slackware.

  Allez  dans  le repertoire a1 et selectionnez un noyau soit SCSI, soit
  IDE, en fonction du type de controlleur que vous avez.  Verifiez  dans
  le   fichier   xxxxkern.cfg  correspondant  au  noyau  que  vous  avez
  selectionne la liste des gestionnaires inclus dans  ce  noyau.  Si  le
  peripherique  dont  vous avez besoin se trouve dans la liste, alors le
  noyau  correspondant  devrait  pouvoir  demarrer   votre   ordinateur.
  Recuperez  le  fichier  xxxxkern.tgz  et copiez-le sur votre disquette
  d'amorce comme indique precedemment dans la section sur la fabrication
  des disques d'amorces.

  Vous  devez  alors  indiquer le peripherique de demarrage au noyau, en
  utilisant la commande rdev :

               rdev zImage

  Rdev va alors indiquer le peripherique racine actuel configure dans le
  noyau.  S'il  ne  s'agit  pas de celui que vous voulez, utilisez alors
  rdev pour le modifier. Par exemple, le noyau que  j'ai  utilise  etait
  regle  pour  /dev/sda2,  mais  ma partition SCSI racine est /dev/sda8.
  Pour utiliser une disquette racine, vous devriez lancer la commande :

               rdev zImage /dev/fd0

  Si vous voulez aussi savoir  comment  utiliser  une  disquette  racine
  Slackware,  c'est  un  sujet  hors du cadre de ce HOWTO, et je suggere
  donc que vous lisiez le Guide d'Installation  de  Linux  ou  que  vous
  recuperiez  la  distribution  Slackware.  Cf.  la  section de ce HOWTO
  intitulee ``References''.

  77..33..  QQ.. CCoommmmeenntt ppuuiiss--jjee mmeettttrree aa jjoouurr mmaa ddiissqquueettttee dd''aammoorrccee  aavveecc  uunn
  nnoouuvveeaauu nnooyyaauu ??

  Il suffit de copier le noyau sur la disquette amorce en  utilisant  la
  commande  dd  dans  le  cas  d'une  disquette  amorce  sans systeme de
  fichiers, ou alors d'utiliser la commande cp dans le cas d'un ensemble
  de  disques  amorce  et racine. Reportez-vous a la section de ce HOWTO
  intitulee ``Amorce'' pour plus de details sur la creation d'un  disque
  d'amorce.  La description s'applique aussi a la mise a jour d'un noyau
  sur un disque amorce.

  77..44..  QQ.. CCoommmmeenntt ppuuiiss--jjee eennlleevveerr LLIILLOO ppoouurr uuttiilliisseerr aa nnoouuvveeaauu DDOOSS ppoouurr
  ddeemmaarrrreerr ll''oorrddiinnaatteeuurr ??

  Ce n'est pas vraiment un sujet  sur  les  disques  d'amorce,  mais  la
  question  est  souvent  posee,  et donc : la reponse est d'utiliser la
  commande DOS :

               FDISK /MBR

  MBR signifie _M_a_s_t_e_r _B_o_o_t _R_e_c_o_r_d (enregistrement original d'amorce), et
  cela  remplace  le  secteur  d'amorce  par  un  original  du DOS, sans
  affecter la table de partitions. Quelques  puristes  ne  semblent  pas
  d'accord,  mais meme l'auteur de LILO, Werner Almesberger, le suggere.
  C'est simple, et cela fonctionne.

  Vous pouvez aussi utiliser la commande dd pour  copier  la  sauvegarde
  effectuee par LILO vers le secteur d'amorce : voir la documentation de
  LILO si vous souhaitez le faire.

  77..55..  QQ.. CCoommmmeenntt ppuuiiss--jjee ddeemmaarrrreerr ssii  jj''aaii  ppeerrdduu  mmoonn  nnooyyaauu  EETT  mmoonn
  ddiissqquuee aammoorrccee ??

  Si vous n'avez pas de disque amorce sous la main, la solution la  plus
  simple  est sans doute de recuperer un noyau Slackware correspondant a
  votre type de controlleur disque (IDE ou SCSI), comme decrit ci-dessus
  dans  la  reponse  a  la  question  ``Comment  puis-je faire un disque
  d'amorce avec un gestionnaire pour XXX ?''. Vous pouvez alors demarrer
  votre ordinateur en utilisant ce noyau, puis reparer les degats.

  Le  noyau  recupere  peut  ne pas etre configure pour s'amorcer sur le
  type de disque ou sur la partition que vous souhaitez. Par exemple, le
  noyau  generique  SCSI  de  Slackware est configure pour demarrer avec
  comme peripherique racine /dev/sda2, alors  que  ma  partition  racine
  Linux  se  trouve  etre  /dev/sda8.  Dans  ce cas, il faut modifier la
  configuration du peripherique racine dans le noyau.

  Il reste possible de changer la racine ou les  parametres  du  disque-
  memoire dans le noyau meme si tout ce dont vous disposez est un noyau,
  et un autre systeme d'exploitation tel que DOS.

  Rdev modifie la  configuration  du  noyau  en  changeant  les  valeurs
  situees  a  certaines  adresses  dans le fichier du noyau, ce que vous
  pouvez faire si vous avez un editeur hexadecimal disponible dans  l'un
  des  systemes  qui  marche  encore  -  par exemple, le Disk Editor des
  Norton Utilities sous DOS. Vous devez alors verifier et eventuellement
  modifier les valeurs contenues dans le noyau aux adresses suivantes :

       0x01F8  Octet de poids faible de la taille du disque-memoire
       0x01F9  Octet de poids fort de la taille du disque-memoire
       0x01FC  Numero de peripherique mineur de la racine_- voir ci-dessous
       0X01FD  Numero de peripherique majeur de la racine_- voir ci-dessous

  La  taille  du  disque  memoire est le nombre de blocs a creer pour le
  disque. Si vous desirez demarrer depuis une disquette racine, il  faut
  mettre  cette  valeur  a  1440  en base decimale, soit 0x05A0, et donc
  mettre la valeur 0xA0 au decalage 0x01F8 et la valeur 0x05 au decalage
  0x01F9. La place sera allouee pour une disquette de 1.4 Mo.

  Notons que la signification du mot donnant la taille du disque memoire
  a change dans la version 1.3.48  du  noyau.  Cette  signification  est
  decrite   dans   la  section  ``Creation  de  disquette  de  demarrage
  elaboree''.

  Les  numeros  de  peripherique  majeurs  et   mineurs   doivent   etre
  positionnes  en  fonction  du peripherique que vous souhaitez utiliser
  comme systeme de fichiers racine. Voici un certain nombre  de  valeurs
  utiles :

       Peripherique   majeur mineur
       /dev/fd0            2      0   premier lecteur de disquette
       /dev/hda1           3      1   partition 1 sur le premier disque IDE
       /dev/sda1           8      1   partition 1 sur le premier disque SCSI
       /dev/sda8           8      8   partition 8 sur le premier disque SCSI

  Une  fois  ces  valeurs entrees, vous pouvez ecrire le fichier sur une
  disquette en utilisant soit le Disk Editor des Norton Utilities,  soit
  un  programme  appele  rawrite.exe.  Ce  programme  est inclus dans de
  nombreuses distributions, comme la SLS et la Slackware. Il s'agit d'un
  programme  DOS  qui  ecrit  un  fichier vers les ``couches basses'' du
  disque, en partant du secteur d'amorce, au lieu  de  l'ecrire  sur  le
  systeme de fichiers. Si vous utilisez les Norton Utilities, vous devez
  alors faire ecrire le fichier sur un disque physique en commencant  au
  debut du disque.

  77..66..   QQ..  CCoommmmeenntt  ppuuiiss--jjee  ffaaiirree ddeess ccooppiieess ssuupppplleemmeennttaaiirreess ddeess ddiiss--
  qquueetttteess aammoorrccee eett rraacciinnee ??

  Il  n'est  jamais  souhaitable de n'avoir qu'un seul jeu de disques de
  secours - 2  ou  3  devraient  etre  conserves  au  cas  ou  l'un  est
  illisible.

  Le  plus  simple  pour  realiser  des  copies  de  disquettes, quelles
  qu'elles soient, y compris des disquettes amorcables et d'utilitaires,
  est  d'utiliser  la commande dd pour copier le contenu de la disquette
  originale dans un fichier sur votre disque  dur,  puis  d'utiliser  la
  meme  commande  pour  recopier  ce fichier sur une nouvelle disquette.
  Notez que vous n'avez pas besoin, et ne devriez pas en  avoir  besoin,
  de  monter  les  disquettes,  car  dd  utilise  l'interface d'acces au
  peripherique physique.

  Pour copier l'original, tapez la commande :

               dd if=nom-du-peripherique of=nom-du-fichier
               ou      nom-du-peripherique est le nom du peripherique du
                       lecteur de disquette
               et      nom-du-fichier est le nom du fichier dans lequel vous
                       voulez ecrire

  Par exemple, pour copier depuis /dev/fd0 vers  un  fichier  temporaire
  appele /tmp/disquette.copie, je taperais la commande :

               dd if=/dev/fd0 of=/tmp/disquette.copie

  Ne  pas  donner  le  parametre  ``count'',  comme  ici,  signifie  que
  l'ensemble de la disquette, soit 2880 blocs pour une  disquette  haute
  densite, seront copies.

  Pour  recopier le fichier resultant sur une nouvelle disquette, mettez
  la disquette dans le lecteur et tapez la commande inverse :

               dd if=fnom-du-fichier of=nom-du-peripherique

  Notons que l'on fait  ici  l'hypothese  que  vous  n'avez  qu'un  seul
  lecteur  de  disquette. Si vous en avez deux du meme type, vous pouvez
  copier des disquettes avec une commande du type :

               dd if=/dev/fd0 of=/dev/fd1

  77..77..    QQ..   CCoommmmeenntt   ppuuiiss--jjee   ddeemmaarrrreerr   ssaannss   aavvooiirr    aa    ttaappeerr
  ````aahhaaxxxxxxxx==nnnn,,nnnn,,nnnn'''' aa cchhaaqquuee ffooiiss ??

  Quand un peripherique de disque n'est pas detecte  automatiquement  au
  demarrage,  il  faut fournir au noyau une chaine de parametres pour le
  peripherique, telle que :

               aha152x=0x340,11,3,1

  Cette chaine peut etre fournie de diverses manieres grace a LILO :

  +o  En la tapant sur la ligne  de  commande  a  chaque  fois  que  l'on
     demarre  le  systeme  grace a LILO. Cela devient vite lassant, cela
     dit.

  +o  En utilisant le mot cle  ``lock''  de  LILO  pour  s'assurer  qu'il
     conserve  la  ligne de commande en question comme ligne de commande
     par defaut, utilisant ainsi les memes options a chaque demarrage.

  +o  En utilisant l'instruction APPEND dans le fichier de  configuration
     de  LILO. Dans ce cas la chaine de parametres doit etre entouree de
     guillemets.

  Ainsi, un  exemple  de  ligne  de  commande  utilisant  la  chaine  de
  parametres ci-dessus pourrait etre :

               zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock

  La  chaine  de  parametres  pour  le  peripherique est ainsi passee au
  noyau, tout en lui indiquant d'utiliser /dev/sda1  comme  peripherique
  racine  et  de  sauver la ligne de commande complete afin de la reuti-
  liser pour tous les futurs demarrages.

  Un exemple d'utilisation de l'instruction APPEND serait :

               APPEND = "aha152x=0x340,11,3,1"

  A noter que la chaine NE DOIT PAS etre entouree de guillemets dans  le
  cas  de  la  ligne de commande, mais DOIT l'etre lors de l'utilisation
  d'APPEND.

  Notons aussi que pour que la chaine de parametres soit prise en compte
  par  le  noyau, celui-ci doit contenir le gestionnaire pour ce type de
  disque. Si ce n'est pas le cas, il n'y a alors personne a l'ecoute des
  arguments  fournis,  et vous devrez reconstruire le noyau pour inclure
  le gestionnaire requis. Pour plus de details sur la construction  d'un
  noyau,  allez  dans  le  repertoire /usr/src/linux et lisez le fichier
  README, puis la FAQ Linux et le HOWTO  Installation.  Ou  encore  vous
  pouvez  obtenir  un  noyau generique pour le type de disque utilise et
  l'installer a la place.

  Il est incessamment recommande aux lecteurs de lire  la  documentation
  de  LILO  avant  de  faire des essais d'installation. L'utilisation de
  l'instruction BOOT peut en particulier endommager  des  partitions  si
  elle tombe mal a point.

  77..88..   QQ..  CCoommmmeenntt  ppuuiiss--jjee ccrreeeerr uunn ssyysstteemmee ddee ffiicchhiieerrss eenn mmeemmooiirree ddee
  ggrraannddee ttaaiillllee ??

  Pour les noyaux superieurs a la version 1.3.48, il vaut mieux creer un
  systeme de fichiers compresse comme indique dans la section ``Creation
  de  disquette de demarrage  elaboree''. Si votre noyau est anterieur a
  cette version vous pouvez soit le mettre a jour, soit vous  referer  a
  la version 2.0 ou anterieure de ce HOWTO.

  77..99..   QQ..  AAuu  ddeemmaarrrraaggee,,  jj''oobbttiieennss  ll''eerrrreeuurr  aa::  ccaannnnoott  eexxeeccuuttee BB.
  Pourquoi ?

  Il arrive souvent que les noms de programmes soient ecrits en dur dans
  divers  utilitaires.  Cela  n'arrive  pas  partout,  mais  cela   peut
  expliquer  pourquoi  un executable ne peut apparemment pas etre trouve
  sur votre systeme de fichiers meme lorsque vous  le  voyez  vous-meme.
  Vous  pouvez  savoir  si un programme donne contient le nom d'un autre
  programme ecrit  directement  grace  a  la  commande  ``strings'',  en
  redirigeant sa sortie vers le programme grep.

  Quelques exemples de codage en dur :

  +o  Shutdown  dans  certaines  versions  contient  /etc/reboot  en dur,
     necessitant que vous placiez reboot dans le repertoire /etc.

  +o  Init a pose des problemes a au moins une personne pour qui le noyau
     ne pouvait pas trouver init.

  Pour   resoudre   ces  problemes,  deplacez  les  programmes  vers  le
  repertoire attendu, ou changez  les  fichiers  de  configuration  (par
  exemple  inittab)  pour qu'ils pointent vers les repertoires corrects.
  Dans le doute, mettez les programmes dans les  memes  repertoires  que
  sur votre disque dur, et utilisez le meme fichier inittab et les memes
  fichiers de /etc/rc.d que sur votre disque.

  77..1100..  QQ.. MMoonn nnooyyaauu aa llee ssuuppppoorrtt ppoouurr ddiissqquuee mmeemmooiirree,, mmaaiiss  iinniittiiaalliissee
  ddeess ddiissqquueess mmeemmooiirreess ddee 00 kkoo..

  Lorsque cela arrive, un message du type :

       Ramdisk driver initialized : 16 ramdisks of 0K size

  apparait lors du demarrage du noyau.  La  taille  doit  etre  soit  la
  taille  par  defaut,  soit  4096 ko, soit la taille specifiee dans les
  parametres du noyau ramdisk_size  ou  ramdisk.  Si  vous  obtenez  une
  taille  de 0 ko, c'est probablement parce que celle-ci a ete fixee a 0
  par les parametres du noyau au demarrage. Cela  peut  etre  du  a  une
  ligne oubliee dans le fichier de configuration de LILO, du type

       ramdisk 0

  Cette  ligne etait incluse dans les fichiers exemples de configuration
  de LILO fournis avec d'anciennes distributions,  afin  d'ecraser  tout
  parametre  modifie  du  noyau. Depuis la version 1.3.48 c'est inutile,
  puisque le parametre  ramdisk_size  du  noyau  indique  maintenant  la
  taille  maximum  du  disque  memoire,  et non pas la taille allouee au
  demarrage, aucun disque memoire n'etant alloue au demarrage.

  La solution est de retirer le parametre ramdisk de LILO.

  A noter que si vous tentez d'utiliser un disque memoire dont la taille
  est  de  0  ko,  vous  obtenez  un  comportement  imprevisible pouvant
  resulter en panique du noyau.

  HH..  RReessssoouurrcceess eett lliieennss

  Dans cette section, _v_v_v sera utilise dans les noms de paquetages a  la
  place  du  numero  de  version,  afin  d'eviter  de referencer ici des
  versions specifiques. Lorsque vous recuperez un  paquetage,  recuperez
  toujours  la  derniere version, sauf si vous avez de bonnes raisons de
  ne pas le faire.

  HH..11..  DDiissqquueess aammoorrcceess ddee ddiissttrriibbuuttiioonnss

  Ce  sont  les  principales  sources  de  disques  amorces   pour   les
  distributions.

  _U_t_i_l_i_s_e_z  _d_e _p_r_e_f_e_r_e_n_c_e _u_n _d_e_s _s_i_t_e_s _m_i_r_o_i_r_s _a_f_i_n _d_e _r_e_d_u_i_r_e _l_a _c_h_a_r_g_e
  _d_e _c_e_s _m_a_c_h_i_n_e_s_.

  +o  Disques                      amorces                      Slackware
     <http://sunsite.unc.edu/pub/Linux/distributions/slackware/bootdsks.144/>
     et              Sites               miroirs               Slackware
     <http://sunsite.unc.edu/pub/Linux/distributions/slackware/MIRRORS.TXT>

  +o  Disques               amorces                Red                Hat
     <http://sunsite.unc.edu/pub/Linux/distributions/redhat/current/i386/images/>
     et Sites miroirs Red Hat <http://www.redhat.com/ftp.html>

  +o  Disques                       amorces                        Debian
     <ftp://ftp.debian.org/pub/debian/stable/disks-i386>     et    Sites
     miroirs Debian <ftp://ftp.debian.org/debian/README.mirrors>

  HH..22..  LLIILLOO -- CChhaarrggeeuurr LLiinnuuxx

  Ecrit par Werner Almesberger. Excellent  chargeur  d'amorce,  dont  la
  documentation  contient  des  informations  sur  le contenu du secteur
  d'amorce et les etapes initiales du processus d'amorce.

  FTP depuis  :tsx-11.mit.edu:  /pub/linux/packages/lilo/lilo.vvv.tar.gz
  et aussi disponible sur sunsite et ses sites miroirs.

  HH..33..  FFAAQQ LLiinnuuxx eett HHOOWWTTOO

  Ils sont disponibles depuis de nombreuses sources. Lisez les forums de
  discussion Usenet news.answers et comp.os.linux.announce.

  FTP depuis : sunsite.unc.edu:/pub/Linux/docs

  +o  La FAQ est dans /pub/linux/docs/faqs/linux-faq

  +o  Les HOWTO sont dans /pub/Linux/docs/HOWTO

  Pour le WWW, demarrez sur la page racine de la documentation Linux :

       http://sunsite.unc.edu/mdw/linux.html

  Si vous etes vraiment desespere, envoyez un courrier electronique a :

               mail-server@rtfm.mit.edu

  avec le mot ``help''  dans  le  corps  du  message,  puis  suivez  les
  instructions recues par retour du courrier.

  Note  :  si  vous  n'avez pas lu la FAQ Linux et les documents annexes
  tels  que  le  HOWTO  sur  l'installation  de  Linux   et   le   Guide
  d'Installation de Linux, vous ne devriez pas essayer de construire des
  disquettes d'amorce.

  HH..44..  UUttiilliissaattiioonn ddee ddiissqquuee mmeemmooiirree

  Une excellente description de la maniere  de  fonctionner  du  nouveau
  code de disque memoire se trouve dans la documentation fournie avec le
  noyau Linux. Voir /usr/src/linux/Documentation/ramdisk.txt. Il  s'agit
  d'un  texte  ecrit  par  Paul  Gortmaker, contenant une section sur la
  creation  de  disque  memoire  compresse,  similaire  a   la   section
  ``Creation de disquette de demarrage elaboree'' de ce HOWTO.

  HH..55..  PPaaqquueettaaggeess ddee sseeccoouurrss

  HH..55..11..  BBoooottkkiitt

  Ecrit  par  Scott  Burkett. Bootkit fournit une base souple, geree par
  menus, permettant la creation de disques de secours et la  gestion  de
  leur   contenu.  Il  utilise  le  paquetage  Dialog  pour  fournir  de
  sympathiques menus, et une  arborescence  de  repertoire  simple  pour
  contenir  les  definitions  du  contenu  des  disques  de  secours. Le
  paquetage contient egalement des exemples pour les principaux fichiers
  utilises.  Il  ne  vise  qu'a  fournir  la  base  cependant  ; c'est a
  l'utilisateur de determiner ce qu'il veut mettre sur  les  disques  et
  comment  mettre en place les fichiers de configuration en consequence.
  Pour les utilisateurs que cela ne derange pas, c'est un bon choix.

  FTP   depuis   :   sunsite.unc.edu:/pub/Linux/system/Recovery/Bootkit-
  vvv.tar.gz

  HH..55..22..  CCaattRReessccuuee

  Ecrit  par  Oleg  Kibirev.  Ce  paquetage  se  concentre  surtout  sur
  l'economie de place sur les disquettes de  secours  par  l'utilisation
  extensive  de  la compression, et en implementant des executables avec
  des scripts shell. La documentation contient quelques astuces  sur  la
  conduite a tenir dans divers cas graves.

  FTP depuis : gd.cs.csufresno.edu/pub/sun4bin/src/CatRescue100.tgz

  HH..55..33..  RReessccuuee SShheellll SSccrriippttss

  Ecrit  par Thomas Heiling. Il contient des scripts shell permettant de
  creer des disquettes  d'amorce,  ainsi  que  des  ensembles  disquette
  d'amorce et disquette racine. Il necessite l'installation de certaines
  versions specifiques d'autres logiciels tels que LILO,  et  peut  vous
  demander quelques efforts pour l'adapter a votre systeme, mais il peut
  servir de point de depart si vous  cherchez  des  scripts  shell  plus
  complets que ceux fournis dans ce document.

  FTP depuis : sunsite.unc.edu:/pub/Linux/system/Recovery/rescue.tgz

  HH..55..44..  SSAARR -- SSeeaarrcchh AAnndd RReessccuuee

  Ecrit par Karel Kubat. SAR cree une disquette de secours, en utilisant
  divers moyens pour minimiser l'espace disque requis sur la  disquette.
  Le  manuel  comprend une description du processus d'amorce et de login
  sous Linux.

  FTP depuis : ftp.icce.rug.nl:/pub/unix/SAR-vvv.tar.gz

  Le manuel est disponible par WWW depuis :

  http://www.icce.rug.nl/karel/programs/SAR.html

  HH..55..55..  YYAARRDD

  Ecrit  par  Tom  Fawcett.  Yard  produit  des  disquettes  de  secours
  personnalisees en utilisant l'option des noyaux recents (posterieurs a
  1.3.48) permettant d'utiliser des disques memoire compresses.  Yard  a
  ete  concu  pour  automatiser  la  plupart  des  etapes  de la section
  ``Creation de disquette de demarrage elaboree''  ci-dessus.  De  plus,
  Yard   verifie   vos  choix  de  fichiers  (chargeurs,  bibliotheques,
  /etc/fstab, rc, /etc/passwd) pour s'assurer que vous avez inclus  tout
  ce  qui est necessaire pour creer un disque de secours amorcable. Yard
  necessite Perl 5 et un noyau de version posterieure a 1.3.48.

  La      page      racine      de      Yard      se      trouve       a
  <http://www.cs.umass.edu/~fawcett/yard.html>,   qui  devrait  toujours
  pointer vers la derniere version, ainsi que des  notes  sur  tout  bug
  recent.      Yard      peut     aussi     etre     recupere     depuis
  <http://sunsite.unc.edu/pub/Linux/system/Recovery/>.

  II..  EExxeemmpplleess

  II..11..  CCoonntteennuu ddeess rreeppeerrttooiirreess dduu ddiissqquuee

  Ceci est le contenu  des  repertoires  de  mes  disquettes  racine  et
  utilitaire. Ces listes sont uniquement fournies en tant qu'exemple des
  fichiers  inclus  pour  creer  un  systeme  fonctionnel.  J'ai  ajoute
  quelques notes la ou cela semblait utile.

  II..11..11..  CCoonntteennuu ddeess rreeppeerrttooiirreess dduu ddiissqquuee rraacciinnee ((llss --llRR))

  total 18
  drwxr-xr-x   2 root     root         1024 Jul 29 21:16 bin/
  drwxr-xr-x   2 root     root         9216 Jul 28 16:21 dev/
  drwxr-xr-x   3 root     root         1024 Jul 29 20:25 etc/
  drwxr-xr-x   2 root     root         1024 Jul 28 19:53 lib/
  drwxr-xr-x   2 root     root         1024 Jul 24 22:47 mnt/
  drwxr-xr-x   2 root     root         1024 Jul 24 22:47 proc/
  drwxr-xr-x   2 root     root         1024 Jul 28 19:07 sbin/
  drwxr-xr-x   2 root     root         1024 Jul 29 20:57 tmp/
  drwxr-xr-x   4 root     root         1024 Jul 29 21:35 usr/
  drwxr-xr-x   3 root     root         1024 Jul 28 19:52 var/

  bin:
  total 713
  -rwxr-xr-x   1 root     bin          7737 Jul 24 22:16 cat*
  -rwxr-xr-x   1 root     bin          9232 Jul 24 22:48 chmod*
  -rwxr-xr-x   1 root     bin          8156 Jul 24 22:48 chown*
  -rwxr-xr-x   1 root     bin         19652 Jul 24 22:48 cp*
  -rwxr-xr-x   1 root     root         8313 Jul 29 21:16 cut*
  -rwxr-xr-x   1 root     bin         12136 Jul 24 22:48 dd*
  -rwxr-xr-x   1 root     bin          9308 Jul 24 22:48 df*
  -rwxr-xr-x   1 root     root         9036 Jul 29 20:24 dircolors*
  -rwxr-xr-x   1 root     bin          9064 Jul 24 22:48 du*
  -rwxr-x---   1 root     bin         69252 Jul 24 22:51 e2fsck*
  -rwxr-xr-x   1 root     bin          5361 Jul 24 22:48 echo*
  -rwxr-xr-x   1 root     bin          5696 Jul 24 22:16 hostname*
  -rwxr-xr-x   1 root     bin          6596 Jul 24 22:49 kill*
  -rwxr-xr-x   1 root     bin         10644 Jul 24 22:17 ln*
  -rwxr-xr-x   1 root     bin         13508 Jul 24 22:17 login*
  -rwxr-xr-x   1 root     bin         26976 Jul 24 22:17 ls*
  -rwxr-xr-x   1 root     bin          7416 Jul 24 22:49 mkdir*
  -rwxr-x---   1 root     bin         34596 Jul 24 22:51 mke2fs*
  -rwxr-xr-x   1 root     bin          6712 Jul 24 22:49 mknod*
  -rwxr-xr-x   1 root     bin         20304 Jul 24 22:17 more*
  -rwxr-xr-x   1 root     bin         24704 Jul 24 22:17 mount*
  -rwxr-xr-x   1 root     bin         12464 Jul 24 22:17 mv*
  -rwxr-xr-x   1 root     bin         20829 Jul 24 22:50 ps*
  -rwxr-xr-x   1 root     bin          9424 Jul 24 22:50 rm*
  -rwxr-xr-x   1 root     bin          4344 Jul 24 22:50 rmdir*
  -rwxr-xr-x   1 root     root       299649 Jul 27 14:12 sh*
  -rwxr-xr-x   1 root     bin          9853 Jul 24 22:17 su*
  -rwxr-xr-x   1 root     bin           380 Jul 27 14:12 sync*
  -rwxr-xr-x   1 root     bin         13620 Jul 24 22:17 umount*
  -rwxr-xr-x   1 root     root         5013 Jul 29 20:03 uname*

  dev:
  total 0
  lrwxrwxrwx   1 root     root           10 Jul 24 22:34 cdrom -> /dev/sbpcd
  crw--w--w-   1 root     tty        4,   0 Jul 24 21:49 console
  brw-rw----   1 root     floppy     2,   0 Apr 28  1995 fd0
  lrwxrwxrwx   1 root     root            4 Jul 24 22:34 ftape -> rft0
  crw-rw-rw-   1 root     sys       10,   2 Jul 18  1994 inportbm
  crw-rw----   1 root     kmem       1,   2 Jul 28 16:21 kmem
  crw-rw----   1 root     kmem       1,   1 Jul 18  1994 mem
  lrwxrwxrwx   1 root     root            4 Jul 24 22:34 modem -> cua0
  lrwxrwxrwx   1 root     root            4 Jul 24 22:34 mouse -> cua1
  crw-rw-rw-   1 root     sys        1,   3 Jul 18  1994 null
  brw-rw----   1 root     disk       1,   1 Jul 18  1994 ram
  crw-rw----   1 root     disk      27,   0 Jul 18  1994 rft0
  brw-rw----   1 root     disk      25,   0 Jul 19  1994 sbpcd
  ** Je n'ai inclus les peripheriques que pour les partitions SCSI que
  *** j'utilise. Si vous utilisez de l'IDE, utilisez /dev/hdxx a la place.
  brw-rw----   1 root     disk       8,   0 Apr 29  1995 sda
  brw-rw----   1 root     disk       8,   6 Apr 29  1995 sda6
  brw-rw----   1 root     disk       8,   7 Apr 29  1995 sda7
  brw-rw----   1 root     disk       8,   8 Apr 29  1995 sda8
  lrwxrwxrwx   1 root     root            7 Jul 28 12:56 systty -> console
  *** ce lien de systty vers console est necessaire
  crw-rw-rw-   1 root     tty        5,   0 Jul 18  1994 tty
  crw--w--w-   1 root     tty        4,   0 Jul 18  1994 tty0
  crw--w----   1 root     tty        4,   1 Jul 24 22:33 tty1
  crw--w----   1 root     tty        4,   2 Jul 24 22:34 tty2
  crw--w--w-   1 root     root       4,   3 Jul 24 21:49 tty3
  crw--w--w-   1 root     root       4,   4 Jul 24 21:49 tty4
  crw--w--w-   1 root     root       4,   5 Jul 24 21:49 tty5
  crw--w--w-   1 root     root       4,   6 Jul 24 21:49 tty6
  crw-rw-rw-   1 root     tty        4,   7 Jul 18  1994 tty7
  crw-rw-rw-   1 root     tty        4,   8 Jul 18  1994 tty8
  crw-rw-rw-   1 root     tty        4,   9 Jul 19  1994 tty9
  crw-rw-rw-   1 root     sys        1,   5 Jul 18  1994 zero

  etc:
  total 20
  -rw-r--r--   1 root     root         2167 Jul 29 20:25 DIR_COLORS
  -rw-r--r--   1 root     root           20 Jul 28 12:37 HOSTNAME
  -rw-r--r--   1 root     root          109 Jul 24 22:57 fstab
  -rw-r--r--   1 root     root          271 Jul 24 22:21 group
  -rw-r--r--   1 root     root         2353 Jul 24 22:27 inittab
  -rw-r--r--   1 root     root            0 Jul 29 21:02 issue
  -rw-r--r--   1 root     root         2881 Jul 28 19:38 ld.so.cache
  *** De nombreuses choses ne marchent pas au demarrage si ld.so.cache
  *** est absent, mais verifiez que ldconfig est present et lance depuis
  *** rc.x pour le mettre a jour.
  -rw-r--r--   1 root     root           12 Jul 24 22:22 motd
  -rw-r--r--   1 root     root          606 Jul 28 19:25 passwd
  -rw-r--r--   1 root     root         1065 Jul 24 22:21 profile
  drwxr-xr-x   2 root     root         1024 Jul 29 21:01 rc.d/
  -rw-r--r--   1 root     root           18 Jul 24 22:21 shells
  -rw-r--r--   1 root     root          774 Jul 28 13:43 termcap
  -rw-r--r--   1 root     root          126 Jul 28 13:44 ttys
  -rw-r--r--   1 root     root            0 Jul 24 22:47 utmp

  etc/rc.d:
  total 5
  *** Je ne me suis pas encombre des scripts pour l'extinction_- tout
  *** tourne dans un disque memoire, qui ne presente que peu d'interet
  *** pour une procedure d'extinction (shutdown)
  -rwxr-xr-x   1 root     root         1158 Jul 24 22:23 rc.K*
  -rwxr-xr-x   1 root     root         1151 Jul 28 19:08 rc.M*
  -rwxr-xr-x   1 root     root          507 Jul 29 20:25 rc.S*

  lib:
  total 588
  *** J'ai un systeme ELF, et donc j'inclus mon chargeur ELF
  *** ld-linux.so. Si vous etes toujours en a.out, vous avez besoin de
  *** ld.so. Utilisez la commande file pour savoir de quelles
  *** bibliotheques vous avez besoin.
  lrwxrwxrwx   1 root     root           17 Jul 24 23:36 ld-linux.so.1 -> ld-linux.so.1.7.3*
  -rwxr-xr-x   1 root     root        20722 Aug 15  1995 ld-linux.so.1.7.3*
  lrwxrwxrwx   1 root     root           13 Jul 24 23:36 libc.so.5 -> libc.so.5.0.9*
  -rwxr-xr-x   1 root     root       562683 May 19  1995 libc.so.5.0.9*
  *** Il faut inclure libtermcap
  lrwxrwxrwx   1 root     root           19 Jul 28 19:53 libtermcap.so.2 -> libtermcap.so.2.0.0*
  -rwxr-xr-x   1 root     root        11360 May 19  1995 libtermcap.so.2.0.0*

  mnt:
  total 0

  proc:
  total 0

  sbin:
  total 191
  *** J'utilise Slackware, qui utilise agetty. De nombreux systemes
  *** utilisent getty. Verifiez /etc/inittab pour savoir lequel il
  *** utilise. Notez bien que vous avez besoin de (a)getty et de login
  *** pour esperer pouvoir faire quelque chose.
  -rwxr-xr-x   1 root     bin         11309 Jul 24 22:54 agetty*
  -rwxr-xr-x   1 root     bin          5204 Jul 24 22:19 halt*
  *** Necessaire pour demarrer
  -rwxr-xr-x   1 root     bin         20592 Jul 24 22:19 init*
  -rwxr-xr-x   1 root     root        86020 Jul 28 19:07 ldconfig*
  -rwxr-xr-x   1 root     bin          5329 Jul 27 14:10 mkswap*
  -rwxr-xr-x   1 root     root         5204 Jul 24 22:20 reboot*
  -rwxr-xr-x   1 root     bin         12340 Jul 24 22:20 shutdown*
  -rwxr-xr-x   1 root     root         5029 Jul 24 22:20 swapoff*
  -rwxr-xr-x   1 root     bin          5029 Jul 24 22:20 swapon*
  -rwxr-xr-x   1 root     root        20592 Jul 27 18:18 telinit*
  -rwxr-xr-x   1 root     root         7077 Jul 24 22:20 update*

  tmp:
  total 0

  usr:
  total 2
  drwxr-xr-x   2 root     root         1024 Jul 29 21:00 adm/
  drwxr-xr-x   2 root     root         1024 Jul 29 21:16 lib/

  usr/adm:
  total 0

  usr/lib:
  total 0

  var:
  total 1
  *** Un certain nombre d'erreurs apparurent jusqu'a ce que j'inclus
  *** ceci et le code de /etc/rc.S pour initialiser /var/run/utmp, mais
  *** ceci ne s'appliquera pas forcement a votre systeme.
  drwxr-xr-x   2 root     root         1024 Jul 28 19:52 run/

  var/run:
  total 0

  II..11..22..  CCoonntteennuu ddeess rreeppeerrttooiirreess dduu ddiissqquuee uuttiilliittaaiirree ((llss --llRR))

       total 579
       -rwxr-xr-x   1 root     root        42333 Jul 28 19:05 cpio*
       -rwxr-xr-x   1 root     root       103560 Jul 29 21:31 elvis*
       -rwxr-xr-x   1 root     root        56401 Jul 28 19:06 find*
       -rw-r--r--   1 root     root       128254 Jul 28 19:03 ftape.o
       -rwxr-xr-x   1 root     root        64161 Jul 29 20:47 grep*
       -rwxr-xr-x   1 root     root        45309 Jul 29 20:48 gzip*
       -rwxr-xr-x   1 root     root        23560 Jul 28 19:04 insmod*
       -rwxr-xr-x   1 root     root          118 Jul 28 19:04 lsmod*
       lrwxrwxrwx   1 root     root            5 Jul 28 19:04 mt -> mt-st*
       -rwxr-xr-x   1 root     root         9573 Jul 28 19:03 mt-st*
       lrwxrwxrwx   1 root     root            6 Jul 28 19:05 rmmod -> insmod*
       -rwxr-xr-x   1 root     root       104085 Jul 28 19:05 tar*
       lrwxrwxrwx   1 root     root            5 Jul 29 21:35 vi -> elvis*

  II..22..  SSccrriippttss sshheellll ppoouurr ccoonnssttrruuiirree ddeess ddiissqquueetttteess

  Ces scripts shell sont fournis uniquement a titre  d'exemple.  Je  les
  utilise  sur  mon  systeme  pour creer des disquettes de secours. Vous
  pourrez les trouver utiles, mais dans ce cas, lisez  les  instructions
  attentivement - par exemple, si vous specifiez le mauvais peripherique
  de pagination, vous  retrouverez  votre  systeme  de  fichiers  racine
  methodiquement  et definitivement efface... faites donc bien attention
  a la configuration avant de les utiliser !

  L'avantage de ces scripts est qu'ils fournissent un  moyen  rapide  de
  creer  un  ensemble  de  disques  de secours, en effectuant les taches
  suivantes :

  +o  copiez un noyau sur un disque d'amorce, et  configurez-le  grace  a
     rdev, comme explique precedemment.

  +o  configurez  mkroot  pour  votre  systeme et creez un disque racine.
     Utilisez les exemples de contenus ci-dessus comme guide pour savoir
     quoi inclure.

  +o  utilisez  mkutil  pour  remplir un ou plusieurs disques utilitaires
     avec vos programmes favoris.

  Il y a deux scripts shell :

  +o  mkroot - construit une disquette racine ou amorce/racine.

  +o  mkutil - construit une disquette utilitaire.

  Tous deux sont actuellement configures  pour  etre  lances  depuis  le
  repertoire   pere  de  boot_disk  et  util_disk,  chacun  d'entre  eux
  contenant tout ce qui doit etre copie sur sa disquette. Notez que  ces
  scripts  shell  NE CONFIGURENT PAS automatiquement, ni ne copient tous
  les fichiers pour vous - vous devez choisir vous-meme  quels  fichiers
  sont  necessaires,  creer  les repertoires et copier les fichiers dans
  ces repertoires. Les scripts  shell  ne  sont  que  des  exemples  qui
  copient  le  contenu  de  ces repertoires. Notez aussi que ce sont des
  scripts primitifs qui ne sont pas destines a des utilisateurs novices.

  Ces  scripts  contiennent  tous deux des variables de configuration au
  debut qui permettent de les  configurer  facilement  pour  fonctionner
  n'importe  ou.  Tout  d'abord,  configurez  les repertoires modeles et
  copiez dedans tous les fichiers requis. Pour savoir quels  repertories
  et  fichiers  prendre,  jetez  un coup d'oeil aux exemples de contenus
  dans les sections precedentes.

  Verifiez les variables de configuration  dans  les  scripts  shell  et
  modifiez les en fonction de vos besoins avant de lancer les scripts.

  II..22..11..  mmkkrroooott -- FFaabbrriiqquueerr uunnee ddiissqquueettttee rraacciinnee

  ______________________________________________________________________
  # mkroot : fabrication d'un disque racine - cree une disquette racine
  #          en construisant un systeme de fichiers dessus, puis la
  #          monte et y copie les fichiers necessaires d'apres un modele.
  #          Note : le modele d'apres lequel la copie est effectuee doit
  #          d'abord etre mis en place, apres quoi vous pouvez modifier
  #          les variables de configuration ci-dessous pour correspondre
  #          a votre systeme.
  #
  # Utilisation : mkroot [ -d swap | ram ]
  #       ou swap demande d'utiliser $SWAPDEV comme peripherique de
  #       pagination, et ram demande d'utiliser le peripherique du
  #       disque memoire $RAMDISKDEV

  # Copyright (c) Graham Chapman 1996. All rights reserved.
  # Permission is granted for this material to be freely
  # used and distributed, provided the source is acknowledged.
  # No warranty of any kind is provided. You use this material
  # at your own risk.

  # Variables de configuration - adaptez les valeurs a votre systeme
  #
  ####  Indiquez le peripherique ou construire le systeme de fichiers
  ####  racines. Un disque memoire est plus sur - la zone de pagination
  ####  peut convenir si vous avez beaucoup de memoire libre. Si Linux ne
  ####  peut pas paginer, les choses se gatent.
  USEDEVICE="ramdisk"             # indiquez "ramdisk" (pour un disque memoire)
                                  # ou "swap" (pour la zone de pagination)
  RAMDISKDEV="/dev/ram"           # peripherique du disque memoire <==== a
                                  # changer si vous utilisez "ramdisk"
  SWAPDEV="/dev/sda7"             # peripherique de pagination <==== a
                                  # changer si vous utilisez "swap"
  FSBLOCKS=3072                   # taille souhaitee du systeme de fichiers,
                                  # en blocs
  #
  ####  Indiquez le repertoire dans lequel vous avez configure votre
  ####  modele de disque racine.
  ROOTDISKDIR="./root_disk"       # repertoire du disque racine
  MOUNTPOINT="/mnt"               # point de montage temporaire pour la
                                  # disquette
  DISKETTEDEV="/dev/fd0"          # peripherique de la disquette
  LOGFL="`pwd`/mkroot.log"        # nom du fichier de log
  TEMPROOTFS="/tmp/mkrootfs.gz"   # fichier temporaire pour le systeme de
                                  # fichiers compresse
  # Fin des variables de configuration

  # Variables internes
  ROOTDISKDEV=

  case $USEDEVICE in
  swap|ramdisk)   :;;
  *)      echo "Valeur invalide pour la variable USEDEVICE"
          exit;;
  esac

  clear
  echo "    ***************** A T T E N T I O N ******************

  Utilisez ce script avec precautions. Si vous ne comprenez pas son
  utilisation, quittez le programme MAINTENANT !"

  if [ "$USEDEVICE" = "swap" ]
  then
          ROOTDISKDEV=$SWAPDEV
          echo -e "\nCe script va temporairement retirer la zone de pagination $SWAPDEV"
          echo "et utiliser son espace pour construire un systeme de fichiers"
          echo "compresse a partir des fichiers situes dans l'arborescence sous"
          echo "$ROOTDISKDIR. Pour que cela soit sans danger, vous devez avoir 8 Mo"
          echo "ou plus de memoire, et vous devriez passer dans le mode utilisateur unique"
          echo "grace a 'init 1'."
          echo -e "\nSi vous avez utilise un disque memoire depuis le dernier redemarrage,"
          echo "redemarrez MAINTENANT avant d'utiliser ce script."
          echo -e "\nSi ce script echoue, vous pouvez ne plus avoir de partition de pagination."
          echo "Utilisez 'free' et verifier la taille totale pour voir si elle est"
          echo "correcte. Si la partition de pagination $SWAPDEV manque, effectuez"
          echo "les operations suivantes :"
          echo "  umount $MOUNTPOINT"
          echo "  mkswap $SWAPDEV"
          echo "  swapon $SWAPDEV"
          echo "pour restaurer la partition de pagination $SWAPDEV."
  else
          ROOTDISKDEV=$RAMDISKDEV
          echo -e "\nCe script va utiliser un disque memoire de $FSBLOCKS ko. Pour"
          echo "le faire en toute securite, vous devez avoir au moins 8 Mo de memoire."
          echo "Si vous n'avez que 8 Mo de memoire, vous devriez vous assurer que rien"
          echo "d'autre ne tourne sur la machine."
          echo -e "\nQuand le script est termine, le disque memoire sera toujours present,"
          echo "et vous devrez donc redemarrer pour recuperer la memoire allouee au"
          echo "disque memoire."
  fi

  echo -e "
  Voulez-vous continuer (o/n)? \c"
  read ans
  if [ "$ans" != "O" -a $ans != "o" ]
  then
          echo "Pas de confirmation - abandon"
          exit
  fi

  echo "Demarrage de mkroot a `date`" > $LOGFL

  if [ "$USEDEVICE" = "swap" ]
  then
          echo "Demontage du peripherique de pagination $SWAPDEV" | tee -a $LOGFL
          swapoff $SWAPDEV >> $LOGFL 2>&1
  fi

  echo Reinitialisation du peripherique $ROOTDISKDEV" | tee -a $LOGFL
  dd if=/dev/zero of=$ROOTDISKDEV bs=1024 count=$FSBLOCKS >> $LOGFL 2>&1
  if [ $? -ne 0 ]
  then
          echo "Reinitialisation par dd de $ROOTDISKDEV ratee" | tee -a $LOGFL
          exit 1
  fi

  echo "Creation du systeme de fichiers sur le peripherique $ROOTDISKDEV" | tee -a $LOGFL
  mke2fs -m0 $ROOTDISKDEV $FSBLOCKS >> $LOGFL 2>&1

  echo "Montage du systeme de fichiers $ROOTDISKDEV sur $MOUNTPOINT" | tee -a $LOGFL
  mount -t ext2 $ROOTDISKDEV $MOUNTPOINT >> $LOGFL 2>&1
  if [ $? -ne 0 ]
  then
          echo "mount a echoue"
          exit 1
  fi

  # Copie des repertoires contenant les fichiers
  echo "Copie des fichiers depuis $ROOTDISKDIR vers $MOUNTPOINT" | tee -a $LOGFL
  currdir=`pwd`
  cd $ROOTDISKDIR
  find . -print | cpio -dpumv $MOUNTPOINT >> $LOGFL 2>&1
  if [ $? -ne 0 ]
  then
          echo "cpio a echoue."
          cd $currdir
          exit 1
  fi
  cd $currdir

  fssize=`du -sk $MOUNTPOINT|cut -d"      " -f1`
  echo "La taille du systeme de fichiers racine non-compresse est $fssize ko" | tee -a $LOGFL
  echo "Demontage du systeme de fichiers de $ROOTDISKDEV" | tee -a $LOGFL
  umount $MOUNTPOINT >> $LOGFL 2>&1

  echo "Compression du systeme de fichiers de $ROOTDISKDEV dans $TEMPROOTFS.
          Cela peut prendre quelques minutes..." | tee -a $LOGFL

  #       Pas la peine d'utiliser gzip -9 ici - il prend deux fois plus de
  #       temps, et ne sauve que moins d'1 % sur mon disque racine...
  dd if=$ROOTDISKDEV bs=1024 count=$FSBLOCKS 2>>$LOGFL | gzip -c > $TEMPROOTFS

  fssize=`du -k $TEMPROOTFS|cut -d"       " -f1`
  echo "La taille du systeme de fichiers racine compresse est $fssize ko" | tee -a $LOGFL

  echo -e "Inserez la disquette dans $DISKETTEDEV et appuyez sur une touche
          ***  Attention : toute donnee sur la disquette sera effacee !\c"
  read ans

  echo "Copie du systeme de fichiers compresse de $TEMPROOTFS vers $DISKETTEDEV" | tee -a $LOGFL
  dd if=$TEMPROOTFS of=$DISKETTEDEV >>$LOGFL 2>&1
  if [ $? -ne 0 ]
  then
          echo "La copie a echoue."
          exit 1
  fi

  if [ "$USEDEVICE" = "swap" ]
  then
          echo "Reinitialisation du peripherique de pagination $SWAPDEV" | tee -a $LOGFL
          mkswap $SWAPDEV >> $LOGFL 2>&1
          echo "Demarrage de la pagination sur le peripherique $SWAPDEV" | tee -a $LOGFL
          swapon $SWAPDEV >> $LOGFL 2>&1
  fi

  echo "Destruction de $TEMPROOTFS" | tee -a $LOGFL
  rm $TEMPROOTFS

  echo "mkroot termine a `date`" >> $LOGFL

  echo "Creation de la disquette racine terminee - lisez le fichier de log $LOGFL"
  ______________________________________________________________________

  II..22..22..  mmkkuuttiill -- FFaabbrriiqquueerr uunnee ddiissqquueettttee uuttiilliittaaiirree

  ______________________________________________________________________
  # mkutil : fabrication d'une disquette utilitaire - cree une disquette
  #          utilitaire en construisant un systeme de fichiers dessus,
  #          puis en le montant et en copiant dessus les fichiers requis
  #          d'apres un modele.
  #          Note : le modele d'apres lequel sont copies les fichiers
  #          doit etre configure d'abord, apres quoi vous pouvez changer
  #          les variables de configuration ci-dessous pour correspondre
  #          a votre systeme.

  # Copyright (c) Graham Chapman 1996. All rights reserved.
  # Permission is granted for this material to be freely
  # used and distributed, provided the source is acknowledged.
  # No warranty of any kind is provided. You use this material
  # at your own risk.

  # Variables de configuration ...
  UTILDISKDIR=./util_disk         # nom du repertoire contenant le modele
  MOUNTPOINT=/mnt                 # point de montage temporaire pour la
                                  # disquette
  DISKETTEDEV=/dev/fd0            # nom du peripherique du lecteur de disquette

  echo $0: creation d'une disquette utilitaire
  echo Attention : toute donnee presente sur la disquette sera ecrasee !
  echo Inserez une disquette dans $DISKETTEDEV et appuyez sur une touche ...
  read anything

  mke2fs $DISKETTEDEV
  if [ $? -ne 0 ]
  then
          echo mke2fs a echoue
          exit
  fi

  # Tout type de systeme de fichiers peut convenir ici
  mount -t ext2 $DISKETTEDEV $MOUNTPOINT
  if [ $? -ne 0 ]
  then
          echo mount a echoue
          exit
  fi

  # Copie des repertoires contenant les fichiers
  cp -dpr $UTILDISKDIR/* $MOUNTPOINT

  umount $MOUNTPOINT

  echo Disquette utilitaire creee
  ______________________________________________________________________

