Recettes pour le HOWTO Root RAID
 Michael         A.         Robinton,         [email protected]
 <mailto:[email protected]>, traduit par Olivier Tharan,  <tha-
 [email protected]>
 v1.06, 12 fevrier 1998

 Ce  document  fournit  quelques  recettes  pour  creer  un  systeme de
 fichiers RAID monte a la racine et le  systeme  de  secours  utilisant
 initrd qui l'accompagne. Il y a des instructions completes, pas a pas,
 pour le peripherique md0 en RAID 1. Chaque etape  est  accompagnee  de
 l'explication  de  son  but.  Cette  procedure peut etre utilisee pour
 toutes les autres structures RAID avec des modifications mineures.

 11..  IInnttrroodduuccttiioonn

 Nous supposerons que le lecteur est familier  avec  les  divers  types
 d'implementation  RAID,  leurs  avantages et inconvenients. Ceci n'est
 pas un guide, juste une serie d'instructions sur la maniere de  mettre
 en  place  du  RAID sur la partition montee a la racine sur un systeme
 Linux. Toutes les informations necessaires a une familiarisation  avec
 RAID  sous  Linux  sont  listees  ici  directement  ou par reference ;
 veuillez les lire avant d'envoyer des questions par e-mail.

 11..11..  OOuu ttrroouuvveerr uunnee ccooppiiee aa jjoouurr ddee ccee ddooccuummeenntt..

 Root-RAID-HOWTO

 Disponible en LaTeX (pour le DVI et le PostScript), texte pur et HTML.

      sunsite.unc.edu/mdw/HOWTO/                      <http://sun-
      site.unc.edu/mdw/HOWTO/>

 Disponible en SGML et HTML.

      ftp.bizsystems.com/pub/raid/              <ftp://ftp.bizsys-
      tems.com/pub/raid/>

 11..22..  BBoogguueess

 Au  moment d'ecrire ce document, le probleme qui consiste a arreter un
 peripherique RAID monte a la racine  n'a  pas  encore  ete  resolu  de
 maniere  satisfaisante.  Une solution de contournement proposee par Ed
 Welbon et implementee par Bohumil Chalupa est incluse dans ce document
 et  elimine  le  besoin de faire un ckraid qui prend du temps a chaque
 demarrage pour  des  peripheriques  RAID  1  et  RAID  5.  Sans  cette
 solution,  il est necessaire de faire un cckkrraaiidd sur le peripherique mmdd
 a chaque fois que le systeme est redemarre.  Sur  une  grande  matrice
 ceci  peut entrainer une degradation importante de la performance pour
 la disponibilite du systeme. Sur mon  peripherique  RAID  1  de  6  Go
 tournant  sur  un Pentium 166 avec 128 Mo de RAM, il faut au moins une
 demi-heure pour faire le ckraid :-( apres chaque redemarrage.

 La solution de contournement stocke l'etat de la matrice au moment  de
 l'extinction  sur le peripherique de demarrage rreeeell et le compare a un
 etat de reference place la a la premiere construction du  systeme.  Si
 les  etats  concordent au redemarrage, le superblock de la matrice est
 reconstruit, sinon l'administrateur est averti de l'erreur  d'etat  et
 le  systeme  de  secours  reste en fonctionnement avec tous les outils
 RAID disponibles.

 La reconstruction du superblock permet au  systeme  d'ignorer  que  la
 matrice  a  ete  eteinte sans mdstop en marquant tous les disques d'un
 OOKK, comme si rien ne s'etait passe. Ceci ne fonctionne que si tous les
 disques  sont  OK  a  l'extinction. Si la matrice fonctionnait avec un
 disque  defectueux,  l'administrateur  devrait   enlever   le   disque
 defectueux  avant  de  redemarrer  le  peripherique  md ou des donnees
 pourraient etre corrompues.

 Ceci ne s'applique pas pour RAID 0 qui  n'a  pas  besoin  d'un  mdstop
 avant l'extinction.

 Des  solutions  finales  proposees  pour  ce  probleme  comprennent un
 ffiinnaallrrdd similaire a iinniittrrdd, et un mmddrroooottssttoopp qui  ecrit  les  drapeaux
 cclleeaann  (propre)  sur  la matrice pendant l'extinction quand la matrice
 est montee en lecture seule. Je suis sur qu'il y en a d'autres.

 Pendant ce temps, le probleme a ete contourne pour l'instant. Veuillez
 me  tenir  au  courant  quand  ce probleme sera resolu de maniere plus
 propre !

 11..33..  RReemmeerrcciieemmeennttss

 Les ecrits et courriers electroniques des  personnes  suivantes  m'ont
 aides  a  realiser  ce  document.  Beaucoup  d'idees ont ete _v_o_l_e_e_s du
 travail utile d'autres personnes, j'ai simplement essaye de les mettre
 sous  forme  de  RREECCEETTTTEESS pour qu'elles soient rapides a utiliser. Mes
 remerciements a :

 +o  Linas Vepstas <mailto:[email protected]>
     _p_o_u_r _l_e _H_o_w_t_o _R_A_I_D _q_u_i _m_'_a _e_x_p_l_i_q_u_e _l_a _p_l_u_p_a_r_t _d_e_s _c_h_o_s_e_s _i_c_i_.

 +o  Gadi Oxman <mailto:[email protected]>
     _p_o_u_r _a_v_o_i_r _r_e_p_o_n_d_u _a _m_e_s _q_u_e_s_t_i_o_n_s _i_d_i_o_t_e_s _d_e _"_b_l_e_u_"_.

 +o  Ed Welbon <mailto:[email protected]>
     _p_o_u_r _l_'_e_x_c_e_l_l_e_n_t _p_a_q_u_e_t_a_g_e iinniittrrdd..mmdd  qui  m'a  inspire  a  ecrire
    ceci.

 +o  Bohumil   Chalupa  <mailto:[email protected]>   _p_o_u_r
    _a_v_o_i_r _i_m_p_l_e_m_e_n_t_e _l_a _"_s_o_l_u_t_i_o_n _d_e _c_o_n_t_o_u_r_n_e_m_e_n_t_" _d_u _r_e_d_e_m_a_r_r_a_g_e  _q_u_i
    _p_e_r_m_e_t  _a  _d_u  RRAAIIDD  mmoonnttee  ssuurr  llaa  rraacciinnee  _d_e _f_o_n_c_t_i_o_n_n_e_r _d_a_n_s _u_n
    _e_n_v_i_r_o_n_n_e_m_e_n_t _d_e _p_r_o_d_u_c_t_i_o_n_.

 +o  et bien d'autres qui ont contribue a  ce  travail  d'une  facon  ou
    d'une autre.

 11..44..  NNoottee ddee ccooppyyrriigghhtt

 Ce  document  est  GNU  copyleft  par Michael Robinton [email protected]
 <mailto:[email protected]>.

 La  permission  d'utiliser,  copier,  distribuer  ce   document   pour
 n'importe  quelle  raison est accordee par la presente, a la condition
 que le nom de l'auteur / editeur apparaisse  dans  toutes  les  copies
 et/ou documents accompagnateurs ; et que toute version non modifiee de
 ce document soit disponible librement. Ce document est distribue  dans
 l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, ni explicite, ni
 implicite. Bien que tous les efforts aient ete faits pour s'assurer de
 la  precision  des  informations documentees ici, l'auteur / editeur /
 mainteneur ne prend AUCUNE RESPONSABILITE sur  toute  erreur  ou  pour
 tout  dommage,  direct ou en decoulant, resultant de l'utilisation des
 informations documentees ici.

 22..  CCee ddoonntt vvoouuss aavveezz bbeessooiinn AAVVAANNTT DDEE CCOOMMMMEENNCCEERR

 Les paquetages dont vous avez besoin et la  documentation  qui  repond
 aux  questions  les  plus  frequentes sur la maniere d'installer et de
 faire fonctionner RAID sont listes ci-dessous. Veuillez les  consulter
 en detail.

 22..11..  PPaaqquueettaaggeess nneecceessssaaiirreess

 Vous devez obtenir les versions les plus recentes de ces paquetages :

 +o  un noyau Linux qui supporte RAID, initrd et /dev/loopx

      J'ai         utilise         linux-2.0.32        <ftp://sun-
      site.unc.edu/pub/Linux/kernel/> de sunsite

 +o  raid145-971022-2.0.31
    <ftp://ftp.kernel.org/pub/linux/daemons/raid/>  patch qui ajoute le
    support pour RAID 1/4/5

 +o  raidtools-pre3-0.42  <ftp://ftp.kernel.org/pub/linux/daemons/raid/>
    outils  pour creer et maintenir des peripheriques RAID (et aussi de
    la documentation).

 +o  linuxthreads-0.71
    <ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy>  paquetage
    threads obligatoire. Utilisez FTP, les navigateurs ne  fonctionnent
    pas.

 +o  Une distribution Linux, prete a installer.

      J'ai  utilise  Slackware-3.4 <ftp://ftp.cdrom.com/pub/linux>
      disponible partout.

 Les instructions  detaillees  de  ce  document  sont  basees  sur  les
 paquetages  ci-dessus. Si les paquetages ont ete mis a jour ou si vous
 utilisez une distribution  Linux  differente,  vous  devrez  peut-etre
 modifier les procedures que vous trouverez ici.

 Les  patches,  assortiments  d'outils,  etc.  peuvent  varier avec les
 noyaux 2.1. Veuillez verifier la documentation la plus recente a :

      ftp.kernel.org/pub/linux/daemons/raid/       <ftp://ftp.ker-
      nel.org/pub/linux/daemons/raid/>

 22..22..  AAuuttrreess iimmpplleemmeennttaattiioonnss ssiimmiillaaiirreess..

 J'ai  choisi  d'inclure dans le noyau tous les morceaux necessaires au
 fonctionnement des le demarrage sans charger aucun module. L'image  de
 mon noyau fait un peu plus de 300 Ko compressee.

 Jetez    un    coup    d'oeil    a    iinniittrrdd..mmdd..ttaarr..ggzz   d'Ed   Welbon
 <mailto:[email protected]>  pour  un  autre   moyen   de   fabriquer   un
 peripherique  RAID sur lequel on peut demarrer. Il utilise des modules
 chargeables. Un coup d'oeil a ses scripts concis vous montrera comment
 il  s'y  prend  si  vous  avez  besoin  d'un noyau tres petit avec des
 modules.

 http://www.realtime.net/~welbon/initrd.md.tar.gz
 <http://www.realtime.net/~welbon/initrd.md.tar.gz>

 22..33..  DDooccuummeennttaattiioonn ---- lleeccttuurreess rreeccoommmmaannddeeeess

 VVeeuuiilllleezz lliirree ::

      //uussrr//ssrrcc//lliinnuuxx//DDooccuummeennttaattiioonn//iinniittrrdd..ttxxtt

 ainsi  que  la  documentation  et les pages de manuel qui accompagnent
 l'ensemble raidtools. En particulier, lisez mmaann  mmddaadddd  ainsi  que  le
 document QQuuiicckkSSttaarrtt..RRAAIIDD inclus dans le paquetage raidtools.

 22..44..  RReessssoouurrcceess ssuurr RRAAIIDD

 +o  sunsite.unc.edu/mdw/HOWTO/mini/Software-RAID
    <http://sunsite.unc.edu/mdw/HOWTO/mini/Software-RAID>

 +o  www.ssc.com/lg/issue17/raid.html
    <http://www.ssc.com/lg/issue17/raid.html>

 +o  linas.org/linux/raid.html <http://linas.org/linux/raid.html>

 +o  ftp.kernel.org/pub/linux/daemons/raid/
    <ftp://ftp.kernel.org/pub/linux/daemons/raid/>

 +o  www.realtime.net/~welbon/initrd.md.tar.gz
    <http://www.realtime.net/~welbon/initrd.md.tar.gz>

 +o  luthien.nuclecu.unam.mx/~miguel/raid/
    <http://luthien.nuclecu.unam.mx/~miguel/raid/>

    Vous pouvez joindre des listes de distribution a :

 +o  [email protected]        <mailto:[email protected]>
    _e_n_v_o_y_e_z _u_n _m_e_s_s_a_g_e _a ssuubbssccrriibbee rraaiiddddeevv

    envoyez     le     courrier     a     :     [email protected]
    <mailto:[email protected]>

 +o  [email protected]      <mailto:[email protected]>
    _e_n_v_o_y_e_z _u_n _m_e_s_s_a_g_e _a ssuubbssccrriibbee lliinnuuxx--rraaiidd

    envoyez  le courrier a : [email protected] <mailto:linux-
    [email protected]> _(_c_e_c_i _s_e_m_b_l_e _e_t_r_e _l_a _l_i_s_t_e _l_a _p_l_u_s _a_c_t_i_v_e_)

 33..  _i_n_i_t_r_d : recette pour du RAID monte sur la racine

 Voici la procedure pour creer un disque RAM  (ramdisk)  'initrd'  avec
 des outils de secours pour le RAID.

 Specifiquement,  ce  document se rapporte a une implementation RAID 1,
 cependant il est applicable  de  maniere  generale  a  n'importe  quel
 arrangement RAID avec un peripherique RAID monte a la racine.

 33..11..  RRaappppeell ddee sseeccuurriittee

 Le  systeme  de  fichiers  de  secours  peut  etre  utilise seul. S'il
 arrivait que votre matrice RAID  ne  puisse  etre  montee,  vous  etes
 reduit  a  utiliser  le systeme de secours monte et en fonctionnement.
 PRENEZ LES PRECAUTIONS DE SECURITE APPROPRIEES !

 33..22..  CCoonnssttrruuccttiioonn dduu nnooyyaauu eett ddeess oouuttiillss RRAAIIDD

 La premiere chose a faire est de patcher et de construire votre  noyau
 et  de  devenir  familier  avec les outils RAID. Configurez, montez et
 testez votre (vos) peripherique(s) RAID. Les details sur la maniere de
 proceder  sont  inclus dans le paquetage rraaiiddttoooollss et revus en details
 plus loin dans ce document.

 33..33..  ddeemmaarrrraaggee CCoonnssttrruuccttiioonn dduu ssyysstteemmee ddee ffiicchhiieerr _i_n_i_t_r_d  de  secours
 et de

 J'ai utilise la distribution SSllaacckkwwaarree--33..44 pour construire a  la  fois
 le  systeme de fichiers de secours/demarrage et le systeme de fichiers
 de la machine  de  production.  N'importe  quelle  distribution  Linux
 devrait  fonctionner  correctement.  Si vous utilisez une distribution
 differente,  relisez  la  partie  de  cette  procedure  specifique   a
 Slackware et modifiez-la pour l'adapter a vos besoins.

 Vous pouvez charger la distribution Slackware a partir de :

      ftp.cdrom.com/pub/linux/ <ftp://ftp.cdrom.com/pub/linux/>

 Si  vous disposez deja de Slackware, vous n'avez besoin de charger que
 les nouveaux ensembles 'a', 'ap' et 'n'.

 J'utilise Loadlin pour lancer l'image  du  noyau  et  un  disque  xRAM
 (ramdisk)  a  partir  d'une  partition  DOS.  J'ai  choisi de creer un
 systeme de disque RAM minimal en utilisant  le  script  d'installation
 sur  mon  disque  en  RAM.  J'ai  utilise une procedure iiddeennttiiqquuee pour
 construire le systeme de production. Par consequent  les  systemes  de
 secours et de production sont tres similaires.

 Ce processus d'installation me donne un systeme 'nu' (sauvez une copie
 du fichier) sur lequel j'ajoute

         /lib/modules/2.x.x......
         /etc .... avec un fstab modifie
         /etc/rc.d
         /dev/md*

 a partir de mon systeme en cours pour le personnaliser pour  le  noyau
 et la machine sur lesquels il tourne ou tournera.

 Ceci  rend  le systeme de demarrage et de secours identique au systeme
 qui  fonctionnera  sur  le  peripherique  RAID  monte  a  la   racine,
 simplement  epure un peu, tout en permettant de toujours garder a jour
 les versions de bibliotheques et autres.

 33..44..  DDeebbuutt ddeess iinnssttrruuccttiioonnss ppaass aa ppaass

 A partir du repertoire de demarrage de root (/root) :

         cd /root
         mkdir raidboot
         cd raidboot

 Creez des points de montage sur lesquels travailler

         mkdir mnt
         mkdir mnt2

 Creez un fichier suffisamment grand pour effectuer  l'installation  du
 systeme  de  fichiers.  Il  sera beaucoup plus grand que le systeme de
 fichiers de secours final. J'ai choisi 24 Mo car 16  Mo  ne  suffisent
 pas.

         dd if=/dev/zero of=build bs=1024k count=24

 Associez le fichier a un peripherique de boucle (loopback) et creez un
 systeme de fichiers ext2 sur le fichier :

         losetup /dev/loop0 build
         mke2fs -v -m0 -L initrd /dev/loop0
         mount /dev/loop0 mnt

 33..55..  IInnssttaallllaattiioonn ddee llaa ddiissttrriibbuuttiioonn -- ssppeecciiffiiqquuee aa SSllaacckkwwaarree

 Sautez  la  partie  specifique  a  la  Slackware et allez a la section
 ``suivante''.

 Maintenant qu'un systeme de fichiers vide est cree  et  monte,  lancez
 "setup".

 Specifiez               /root/raidboot/mnt

 pour  la  cible  (''ttaarrggeett'').  La source est celle a partir de laquelle
 vous faites l'installation habituellement. Selectionnez les paquetages
 que  vous desirez installer et continuez mais NNEE LLAANNCCEEZZ PPAASS configure.

 Choisissez le mode 'EXPERT'.

 J'ai choisi les ensembles 'A', 'AP' et  'N'  en  n'installant  que  le
 minimum  pour  faire tourner le systeme plus un editeur auquel je suis
 habitue (vi, jed, joe) qui soit suffisamment petit.

 lqqqqqqqq SELECTING PACKAGES FROM SERIES A (BASE LINUX SYSTEM) qqqqqqqqk
 x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
 x x   [X] aaa_base  Basic filesystem, shell, and utils - REQUIRED    x x
 x x   [X] bash      GNU bash-1.14.7 shell - REQUIRED                 x x
 x x   [X] devs      Device files found in /dev - REQUIRED            x x
 x x   [X] etc       System config files & utilities - REQUIRED       x x
 x x   [X] shadow    Shadow password suite - REQUIRED                 x x
 x x   [ ] ide       Linux 2.0.30 no SCSI (YOU NEED 1 KERNEL)         x x
 x x   [ ] scsi      Linux 2.0.30 with SCSI (YOU NEED 1 KERNEL)       x x
 x x   [ ] modules   Modular Linux device drivers                     x x
 x x   [ ] scsimods  Loadable SCSI device drivers                     x x
 x x   [X] hdsetup   Slackware setup scripts - REQUIRED               x x
 x x   [ ] lilo      Boots Linux (not UMSDOS), DOS, OS/2, etc.        x x
 x x   [ ] bsdlpr    BSD lpr - printer spooling system                x x
 x x   [ ] loadlin   Boots Linux (UMSDOS too!) from MS-DOS            x x
 x x   [ ] pnp       Plug'n'Play configuration tool                   x x
 x x   [ ] umsprogs  Utilities needed to use the UMSDOS filesystem    x x
 x x   [X] sysvinit  System V-like INIT programs - REQUIRED           x x
 x x   [X] bin       GNU fileutils 3.12, elvis, etc. - REQUIRED       x x
 x x   [X] ldso      Dynamic linker/loader - REQUIRED                 x x
 x x   [ ] ibcs2     Runs SCO/SysVr4 binaries                         x x
 x x   [X] less      A text pager utility - REQUIRED                  x x
 x x   [ ] pcmcia    PCMCIA card services support                     x x
 x x   [ ] getty     Getty_ps 2.0.7e - OPTIONAL                       x x
 x x   [X] gzip      The GNU zip compression - REQUIRED               x x
 x x   [X] ps        Displays process info - REQUIRED                 x x
 x x   [X] aoutlibs  a.out shared libs - RECOMMENDED                  x x
 x x   [X] elflibs   The ELF shared C libraries - REQUIRED            x x
 x x   [X] util      Util-linux utilities - REQUIRED                  x x
 x x   [ ] minicom   Serial transfer and modem comm package           x x
 x x   [ ] cpio      The GNU cpio backup/archiving utility            x x
 x x   [X] e2fsbn    Utilities for the ext2 file system               x x
 x x   [X] find      GNU findutils 4.1                                x x
 x x   [X] grep      GNU grep 2.0                                     x x
 x x   [ ] kbd       Change keyboard mappings                         x x
 x x   [X] gpm       Cut and paste text with your mouse               x x
 x x   [X] sh_utils  GNU sh-utils 1.16 - REQUIRED                     x x
 x x   [X] sysklogd  Logs system and kernel messages                  x x
 x x   [X] tar       GNU tar 1.12 - REQUIRED                          x x
 x x   [ ] tcsh      Extended C shell version 6.07                    x x
 x x   [X] txtutils  GNU textutils-1.22 - REQUIRED                    x x
 x x   [ ] zoneinfo  Configures your time zone                        x x
 x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x

 Dans l'ensemble 'AP', je n'utilise que 'JOE' et l'editeur que je pref-
 ere, et 'MC', petit outil utile de gestion de fichiers. Choisissez les
 outils dont vous aurez besoin sur votre systeme.

 lqqqqqqqqq SELECTING PACKAGES FROM SERIES AP (APPLICATIONS) qqqqqqqqqk
 x x     [ ] ispell    The International version of ispell          x x
 x x     [ ] jove      Jonathan's Own Version of Emacs text editor  x x
 x x     [ ] manpgs    More man pages (online documentation)        x x
 x x     [ ] diff      GNU diffutils                                x x
 x x     [ ] sudo      Allow special users limited root access      x x
 x x     [ ] ghostscr  GNU Ghostscript version 3.33                 x x
 x x     [ ] gsfonts1  Ghostscript fonts (part one)                 x x
 x x     [ ] gsfonts2  Ghostscript fonts (part two)                 x x
 x x     [ ] gsfonts3  Ghostscript fonts (part three)               x x
 x x     [ ] jed       JED programmer's editor                      x x
 x x     [X] joe       joe text editor, version 2.8                 x x
 x x     [ ] jpeg      JPEG image compression utilities             x x
 x x     [ ] bc        GNU bc - arbitrary precision math language   x x
 x x     [ ] workbone  a text-based audio CD player                 x x
 x x     [X] mc        The Midnight Commander file manager          x x
 x x     [ ] mt_st     mt ported from BSD - controls tape drive     x x
 x x     [ ] groff     GNU troff document formatting system         x x
 x x     [ ] quota     User disk quota utilities                    x x
 x x     [ ] sc        The 'sc' spreadsheet                         x x
 x x     [ ] texinfo   GNU texinfo documentation system             x x
 x x     [ ] vim       Improved vi clone                            x x
 x x     [ ] ash       A small /bin/sh type shell - 62K             x x
 x x     [ ] zsh       Zsh - a custom *nix shell                    x x
 x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x

 Dans l'ensemble 'N' je n'ai pris que TCP/IP. Ceci n'est  pas  vraiment
 necessaire, mais est tres utile et permet d'avoir acces au reseau pen-
 dant un travail de reparation ou de mise a jour avec la matrice RAID a
 la  racine  demontee. TCP/IP contient aussi 'biff' qui est utilise par
 certaines applications de  'A'.  Si  vous  n'installez  pas  'N'  vous
 voudrez quand meme installer le paquetage biff.

 lqqqq SELECTING PACKAGES FROM SERIES N (NETWORK/NEWS/MAIL/UUCP) qqqqqk
 x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
 x x    [ ] apache    Apache WWW (HTTP) server                      x x
 x x    [ ] procmail  Mail delivery/filtering utility               x x
 x x    [ ] dip       Handles SLIP/CSLIP connections                x x
 x x    [ ] ppp       Point-to-point protocol                       x x
 x x    [ ] mailx     The mailx mailer                              x x
 x x    [X] tcpip     TCP/IP networking programs                    x x
 x x    [ ] bind      Berkeley Internet Name Domain server          x x
 x x    [ ] rdist     Remote file distribution utility              x x
 x x    [ ] lynx      Text-based World Wide Web browser             x x
 x x    [ ] uucp      Taylor UUCP 1.06.1 with HDB && Taylor configs x x
 x x    [ ] elm       Menu-driven user mail program                 x x
 x x    [ ] pine      Pine menu-driven mail program                 x x
 x x    [ ] sendmail  The sendmail mail transport agent             x x
 x x    [ ] metamail  Metamail multimedia mail extensions           x x
 x x    [ ] smailcfg  Extra configuration files for sendmail        x x
 x x    [ ] cnews     Spools and transmits Usenet news              x x
 x x    [ ] inn       InterNetNews news transport system            x x
 x x    [ ] tin       The 'tin' news reader (local or NNTP)         x x
 x x    [ ] trn       'trn' for /var/spool/news                     x x
 x x    [ ] trn-nntp  'trn' for NNTP (install 1 'trn' maximum)      x x
 x x    [ ] nn-spool  'nn' for /var/spool/news                      x x
 x x    [ ] nn-nntp   'nn' for NNTP (install 1 'nn' maximum)        x x
 x x    [ ] netpipes  Network pipe utilities                        x x
 x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x

 A  la  fin  de l'installation, dites non a tout le reste (non a toutes
 les demandes de configuration) et sortez du script.

 33..66..  IInnssttaallllaattiioonn ddee LLiinnuuxx pptthhrreeaaddss

 Vous devez maintenant installer la  bibliotheque  linuxthreads  plutot
 que  d'expliquer  les  details  de l'installation a la main. Sauvez le
 Makefile d'origine, appliquez le patch et ensuite :

         cd /usr/src/linuxthreads-0.71
   patch
         make
         make install

 -------------------diff Makefile.old  Makefile.raid-----------------
 2a3,13
 > # If you are building "linuxthreads" for installation on a mount
 > # point which is not the "root" partition, redefine 'BUILDIR' to
 > # the mount point to use as the "root" directory
 > # You may wish to do this if you are building an 'initial ram disk'
 > # such as used with bootable root raid devices.
 > # REQUIRES ldconfig version 1.9.5 or better
 > # do ldconfig -v to check
 > #
 > BUILDIR=/root/raidboot/mnt
 > #BUILDIR=
 >
 81,82c92,93
 <       install pthread.h $(INCLUDEDIR)/pthread.h
 <       install semaphore.h $(INCLUDEDIR)/semaphore.h
 ---
 >       install pthread.h $(BUILDIR)$(INCLUDEDIR)/pthread.h
 >       install semaphore.h $(BUILDIR)$(INCLUDEDIR)/semaphore.h
 84c95
 <       test -f /usr/include/sched.h || install sched.h $(INCLUDEDIR)/sched.h
 ---
 >       test -f $(BUILDIR)/usr/include/sched.h || install sched.h $(BUILDIR)$(INCLUDEDIR)/sched.h
 86,89c97,103
 <       install $(LIB) $(LIBDIR)/$(LIB)
 <       install $(SHLIB) $(SHAREDLIBDIR)/$(SHLIB)
 <       rm -f $(LIBDIR)/$(SHLIB0)
 <       ln -s $(SHAREDLIBDIR)/$(SHLIB) $(LIBDIR)/$(SHLIB0)
 ---
 >       install $(LIB) $(BUILDIR)$(LIBDIR)/$(LIB)
 >       install $(SHLIB) $(BUILDIR)$(SHAREDLIBDIR)/$(SHLIB)
 >       rm -f $(BUILDIR)$(LIBDIR)/$(SHLIB0)
 >       ln -s $(SHAREDLIBDIR)/$(SHLIB) $(BUILDIR)$(LIBDIR)/$(SHLIB0)
 > ifneq ($(BUILDIR),)
 >       ldconfig -r ${BUILDIR} -n $(SHAREDLIBDIR)
 > else
 91c105,106
 <       cd man; $(MAKE) MANDIR=$(MANDIR) install
 ---
 > endif
 >       cd man; $(MAKE) MANDIR=$(BUILDIR)$(MANDIR) install

 33..77..  IInnssttaallllaattiioonn ddeess oouuttiillss ppoouurr llee RRAAIIDD

 L'etape suivante est l'installation des outils RAID :  raidtools-0.42.

 Vous devez lancer le script "configure" pour faire pointer le Makefile
 vers le repertoire de construction des fichiers ramdisk.
   cd /usr/src/raidtools-0.42
   configure --sbindir=/root/raidboot/mnt/sbin --prefix=/root/raidboot/mnt/usr
   make
   make install

 Maintenant ! Le Makefile pour l'installation n'est  pas  tout  a  fait
 correct,  effectuez  les  operations  suivantes pour le nettoyer. Ceci
 sera modifie dans les versions futures pour que la liaison  des  liens
 ne soit pas a nouveau necessaire.

      Reparer l'erreur du make install

 Les  liens  des  fichiers specifies dans le Makefile a 'LINKS' doivent
 etre enleves et re-lies pour fonctionner correctement.

         cd /root/raidboot/mnt/sbin
         ln -fs mdadd mdrun
         ln -fs mdadd mdstop

 33..88..  nnoouuvveeaauu  ssyysstteemmee  ddee  ffiicchhiieerrss  EEffffaacceemmeenntt  ddeess  rreeppeerrttooiirreess  eett
 ffiicchhiieerrss nnoonn nneecceessssaaiirreess ddaannss llee

 Effacez les repertoires suivants du systeme de fichiers (ATTENTION  NE
 LES  EFFACEZ  PAS  DE VOTRE SYSTEME EN FONCTIONNEMENT), c'est facile a
 faire, devinez comment j'ai trouve !!!

         cd /root/raidboot/mnt
         rm -r home/ftp/*
         rm -r lost+found
         rm -r usr/doc
         rm -r usr/info
         rm -r usr/local/man
         rm -r usr/man
         rm -r usr/openwin
         rm -r usr/share/locale
         rm -r usr/X*
         rm -r var/man
         rm -r var/log/packages
         rm -r var/log/setup
         rm -r var/log/disk_contents

 33..99..  CCrreeaattiioonn ddee //ddeevv//mmdd_x

 La derniere etape  copie  simplement  les  peripheriques  /dev/md*  du
 systeme  de  fichiers  courant  sur le systeme de fichiers de secours.
 Vous pouvez les creer avec mknod.

         cp -a /dev/md* /root/raidboot/mnt/dev

 33..1100..  CCrreeaattiioonn dd''uunn ssyysstteemmee ddee ffiicchhiieerrss nnuu ccoonnvveennaanntt aa _i_n_i_t_r_d

 Vous  avez  maintenant  un systeme de fichiers propre et reutilisable,
 pret a  etre  personnalise.  Une  fois  personnalise,  ce  systeme  de
 fichiers   pourra   etre   utilise  comme  secours,  si  jamais  le(s)
 peripherique(s) RAID, ainsi que  les  outils  RAID  necessaires  a  la
 reparation,  devenaient corrompus. Il sera aussi utilise pour demarrer
 et monter a la racine le peripherique  RAID  en  ajoutant  le  fichier
 linuxrc dont nous parlerons bientot.

 Copiez  le  systeme de fichiers sur un peripherique plus petit pour le
 fichier initrd, 16 Mo devraient etre suffisants.

 Creez le systeme de fichiers plus petit et montez-le

         cd /root/raidboot
         dd if=/dev/zero of=bare.fs bs=1024k count=16

 associez le fichier a un peripherique de boucle et generez un  systeme
 de fichiers ext2 sur ce fichier

         losetup /dev/loop1 bare.fs
         mke2fs -v -m0 -L initrd /dev/loop1
         mount /dev/loop1 mnt2

 Copiez le systeme de fichiers 'build' sur 'bare.fs'

         cp -a mnt/* mnt2

 Sauvez  le systeme 'bare.fs' avant personnalisation pour que les mises
 a jour ulterieures soient facilitees. Le systeme de  fichiers  'build'
 n'est plus necessaire et peut etre efface.

         cd /root/raidboot
         umount mnt
         umount mnt2
         losetup -d /dev/loop0
         losetup -d /dev/loop1
         rm build
         cp bare.fs rescue
         gzip -9 bare.fs

 33..1100..11..  CCrreeaattiioonn dduu ssyysstteemmee ddee ffiicchhiieerrss iinniittrrdd de demarrage/secours

 Copiez maintenant les parties dependantes du systeme qui correspondent
 au  noyau  de  la  plate-forme  de  developpement, ou bien vous pouvez
 modifier a la main les fichiers du systeme de fichiers de secours pour
 correspondre a votre systeme cible.

         losetup /dev/loop0 rescue
         mount /dev/loop0 mnt

 Assurez-vous que votre repertoire etc est propre des fichiers *~, core
 et log. Les deux commandes qui suivent  creent  des  messages  d'aver-
 tissement, ignorez-les.

         cp -dp /etc/* mnt/etc
         cp -dp /etc/rc.d/* mnt/etc/rc.d

         mkdir  mnt/lib/modules
         cp -a  /lib/modules/2.x.x mnt/lib/modules <--- votre noyau 2.x.x en cours

 Editez  les fichiers suivantes pour les corriger pour votre systeme de
 secours.
         cd mnt

 Non reseau
         etc/fstab       mettez en commentaire le montage des peripheriques root et raid
         etc/mdtab       devrait fonctionner
 Reseau
         etc/hosts
         etc/resolv.conf
         etc/hosts.equiv         et fichiers lies
         etc/rc.d/rc.inet1       adresses IP, masque, passerelle, etc. correctes
         etc/rc.d/rc.S           enlevez entierement la section sur l'etat du systeme de fichiers
                 de :
                         # Test to see if the root partition isread-only
                 a, mais n'incluant pas :
                         # remove /etc/mtab* so that mount will .....
                                 ceci evite l'avertissement ennuyeux que
                                 le disque RAM est monte en lecture/ecriture
         etc/rc.d/rc.xxxxx       d'autres si necessaire, voir plus bas
         root/.rhosts            si present
         home/xxxx/xxxx          d'autres si necessaire

     ATTENTION : la procedure ci-dessus deplace vos fichiers de mot de
                 passe et shadow sur le disque de secours !!!

     ATTENTION : vous ne voudrez pas faire ceci pour des raisons de securite

 Creez tous les repertoires pour monter /dev/dsk... tels qu'ils peuvent
 etre necessaires et uniques a votre systeme. Le mien necessite :

         cd /root/raidboot/mnt           <--- racine initrd
         mkdir dosa                      point de montage partition DOS
         mkdir dosc                      point de montage miroir DOS

 Le systeme de fichiers de secours est termine !

 Vous  noterez  en  examinant  les  fichiers  du systeme de fichiers de
 secours qu'il y a  encore  de  nombreux  fichiers  que  l'on  pourrait
 effacer.  Je  ne l'ai pas fait car cela compliquerait totalement cette
 procedure et la plupart des systemes RAID ont suffisamment  de  disque
 et  de memoire. Si vous voulez encore diminuer la taille du systeme de
 fichiers, allez-y !

 33..1100..22..  FFaaiirree qquu''_i_n_i_t_r_d demarre le peripherique RAID - lliinnuuxxrrcc

 Pour  que  la  disquette  de  demarrage  de secours puisse demarrer le
 peripherique RAID, vous n'avez besoin que de copier le fichier  script
 executable :

      lliinnuuxxrrcc

 a la racine du peripherique.

 ---------------------- linuxrc --------------------
 #!/bin/sh
 # ver 1.07 2-12-98
 # monter le systeme de fichiers proc
 /bin/mount /proc

 # Ceci peut varier pour votre systeme.
 # Monter les partitions DOS, essayer les deux
 # au cas ou l'un des disques est mort
 /bin/mount /dosa
 /bin/mount /dosc

 # Positionner un drapeau au cas ou le fichier d'etat RAID n'est pas
 # trouve puis chercher le fichier d'etat sur les deux disques
 RAIDOWN="raidstat.ro not found"
 /bin/echo "Reading md0 shutdown status."
 if [ -f /dosa/linux/raidstat.ro ]; then
   RAIDOWN=`/bin/cat /dosa/linux/raidstat.ro`
   RAIDREF=`/bin/cat /dosc/linux/raidgood.ref`
 else
   if [ -f /dosc/linux/raidstat.ro ]; then
     RAIDOWN=`/bin/cat /dosc/linux/raidstat.ro`
     RAIDREF=`/bin/cat /dosc/linux/raidgood.ref`
   fi
 fi

 # Tester si l'extinction a ete propre avec des disques en etat de
 # marche
 if [ "${RAIDOWN} != ${RAIDREF}" ]; then
   echo "ERROR ${RAIDOWN}"
 # Utilisez les deux lignes suivantes pour SORTIR et laisser le secours
 # tourner
    /bin/echo 0x100>/proc/sys/kernel/real-root-dev
    exit                 # laissant les fichier d'erreurs dans dosa/linux, etc.
 fi

 # La matrice RAID est propre, continuer en enlevant
 # le fichier d'etat et en ecrivant un superblock propre
 /bin/rm /dosa/linux/raidstat.ro
 /bin/rm /dosc/linux/raidstat.ro
 /sbin/mkraid /etc/raid1.conf -f --only-superblock

 /bin/umount /dosa
 /bin/umount /dosc

 # Monter la matrice RAID
 echo "Mounting md0, root filesystem"
 /sbin/mdadd -ar

 # S'il y a des erreurs, SORTIR et laisser le secours tourner
 if [ $? -ne 0 ]; then
    echo "RAID device has errors"
 # Utilisez les trois lignes suivantes pour SORTIR
    /bin/rm /etc/mtab            # enlever le mtab mauvais
    /bin/echo 0x100>/proc/sys/kernel/real-root-dev
    exit
 fi

 # sinon annoncer au noyau de passer a /dev/md0 comme peripherique
 # /root. La valeur 0x900 est le numero de peripherique calcule par :
 #  256*numero_periph_majeur + numero_periph_mineur
 /bin/echo 0x900>/proc/sys/kernel/real-root-dev

 # demonter /proc pour liberer l'espace memoire du peripherique initrd
 /bin/umount /proc
 /bin/echo "/dev/md0 mounted as root"
 exit
 #------------------ end linuxrc ----------------------

 Ajoutez 'linuxrc' au peripherique de demarrage initrd.

         cd /root/raidboot
         chmod 777 linuxrc
         cp -p linuxrc mnt

 33..1111..  MMooddiiffiiccaattiioonn ddeess ssccrriippttss rrcc ppoouurr ll''eexxttiinnccttiioonn

 Pour terminer l'installation, modifiez les scripts rc pour sauvegarder
 l'etat md sur  le  vrai  peripherique  racine  quand  l'extinction  du
 systeme arrive.

 Dans la Slackware, c'est rc.0 -> rc.6

 J'ai  modifie  legerement  le  contournement  de  Bohumil Chalupa pour
 stopper le RAID. Sa solution a l'origine est presentee  dans  l'annexe
 ``A''.

 Puisqu'il  ne  reste  plus  de partition Linux libre sur le systeme de
 production exceptee  mmdd00,  les  partitions  DOS  sont  utilisees  pour
 stocker  l'etat  rraaiiddOOKK  eenn  lleeccttuurree  sseeuullee.  J'ai  choisi d'ecrire un
 fichier sur chaque partition DOS contenant l'etat de la matrice  md  a
 l'extinction  signifiant  que  le  peripherique  md  a  ete remonte en
 lecture seule. Ceci evite la panne du  systeme  si  l'un  des  disques
 meurt.

 J'ai  modifie  mon  script rc.6 pour tenter le demontage de la matrice
 racine en RAID 1 et tout autre peripheriques RAID de mdtab. Vous aurez
 besoin  de  scripts  legerement  differents, mais les elements de base
 devraient etre les memes. Le fichier  rc.6  complet  est  montre  dans
 l'annexe ``B''.

 Pour  capturer l'etat a l'extinction de la matrice RAID, inserez juste
 avant que les systemes de fichiers soient demontes :

         RAIDSTATUS=`/bin/cat /proc/mdstat | /usr/bin/grep md0`

 Apres que tous les systemes de fichiers soient demontes (le systeme de
 fichiers racine ne se demontera pas), ajoutez :

         # le peripheriques racine reste monte en lecture seule
         # les systemes de fichiers DOS sont en lecture/ecriture
         mount -n -o remount,ro /
         echo "Writing RAID read-only boot FLAG(s)."
         mount -n /dosa
         mount -n /dosc
         # creer un drapeau RAID monte en lecture seule en double
         # contenant l'etat d'extinction de la matrice RAID
         echo ${RAIDSTATUS} > /dosa/linux/raidstat.ro
         echo ${RAIDSTATUS} > /dosc/linux/raidstat.ro

         umount -n /dosa
         umount -n /dosc

         # stoppe toutes les matrices RAID (sauf la racine)
         echo "Stopping raid"
         mdstop -a

 Ceci  arretera  proprement tous les peripheriques RAID sauf la racine.
 L'etat de la racine est passe au demarrage suivant dans rraaiiddssttaatt..rroo.

 Copiez le fichier rc sur votre nouvelle matrice RAID,  le  systeme  de
 fichiers  de secours qui est encore monte sur //rroooott//rraaiiddbboooott//mmnntt et le
 systeme de developpement s'il est sur la meme machine.

 Modifiez le eettcc//ffssttaabb de secours si necessaire et assurez-vous que  le
 mmddttaabb de secours est correct.

 Copiez  maintenant  la disquette de secours sur votre partition DOS et
 tout devrait etre pret pour demarrer le peripherique RAID a la racine.

         umount mnt
         losetup -d /dev/loop0
         gzip -9 rescue

 Copiez rescue.gz sur votre partition DOS.

 Tout  ce  qui  reste  est  de tester le nouveau systeme de fichiers en
 redemarrant. Voyez les parametres loadlin sur le fichier DOS lliinnuuxx..bbaatt
 dans ce qui suit.

 33..1122..   MMiissee  eenn ppllaaccee dduu ddeemmaarrrraaggee aavveecc llooaaddlliinn ppoouurr llee sseeccoouurrss eett llee
 RRAAIIDD

 Les  disques  que  j'ai choisis pour mon systeme sont bien plus grands
 que ceux que LILO peut gerer. Par  consequent,  j'ai  utilise  loadlin
 pour  demarrer  le systeme a partir d'une petite partition DOS avec un
 miroir (copie) sur le disque accompagnateur.

 Mon systeme DOS de demarrage  contient  un  petit  editeur  parmi  les
 utilitaires pour que je puisse modifier les parametres de demarrage de
 loadlin si necessaire, ce qui me permet de redemarrer le systeme Linux
 sur mon disque de depannage pendant que je fais des tests.

 Le systeme DOS contient cette arborescence pour Linux :

         c:\linux.bat
         c:\linux\loadlin.exe
         c:\linux\zimage
         c:\linux\rescue.gz
         c:\linux\raidgood.ref
         c:\linux\raidstat.ro    (seulement a l'extinction)

 ---------------------- linux.bat ---------------------------
 rem  fichier batch DOS d'exemple pour demarrer Linux
 rem  Demarrage du processus LOADLIN :

 rem c:\linux\loadlin c:\linux\zimage root=/dev/ram0 ro ramdisk_size=16384 initrd=c:\linux\rescue.gz mem=131072k
 c:\linux\loadlin c:\linux\zimage root=/dev/md0 ro ramdisk_size=16384 initrd=c:\linux\rescue.gz mem=131072k

 rem -- ceci est mon systeme de developpement -- il s'en va plus tard
 rem c:\linux\loadlin c:\linux\zimage root=/dev/hda3 ro noinitrd mem=131072k
 ------------------------------------------------------------

 ***** >> NOTE !! la seule difference entre forcer le lancement du
         systeme de secours et le montage du peripherique RAID est le
         parametre de loadlin.

                 root=/dev/ram0          pour le systeme de secours
                 root=/dev/md0           pour RAID

                 Avec root=/dev/ram0 les peripheriques RAID ne seront
                 pas montes et le systeme de secours tournera sans
                 conditions

 Si  la  matrice RAID tombe en panne, le systeme de secours reste monte
 et tourne (ceci semble ne pas fonctionner de temps  en  temps,  je  ne
 sais  pas  pourquoi,  cela fonctionne quand le bouton reset est appuye
 mais ne fonctionne pas avec 'shutdown -r now').

 44..  CCoonnffiigguurraattiioonn dduu ssyysstteemmee ddee pprroodduuccttiioonn eenn RRAAIIDD

 44..11..  SSppeecciiffiiccaattiioonnss dduu ssyysstteemmee

 Carte mere :    Iwill P55TU     double ide + adaptec scsi
 Processeur :    Intel P200
 Disques:                2 ea. Maxtor 7 gig eide

 Les disques sont designes par Linux comme 'hda' et 'hdc'

 44..22..  PPaarrttiittiioonnnneemmeenntt ddeess ddiissqquueess dduurrss

 Puisque le test d'une grande matrice  RAID  qu'on  peut  monter  a  la
 racine  est  difficile  a  cause  du  probleme  du  redemarrage,  j'ai
 repartitionne mon espace d'echange (swap) pour inclure  une  partition
 RAID plus petite a des fins de tests. Vous pourrez trouver ceci utile.

         <bf/SYSTEME DE DEVELOPPEMENT/

   /dev/hda1     dos             16meg
 * /dev/hda2     extended        126m
   /dev/hda3     linux           126m    partition racine pendant le developpement
   /dev/hda4     linux           6+gig   RAID 1
 * /dev/hda5     linux            26m    RAID 1 de test
 * /dev/hda6     linux swap      100m

   /dev/hdc1     est simplement une copie exacte de hda1 pour que cette
                 partition puisse etre activee si hda tombe en panne
 * /dev/hdc2     extended        126m
   /dev/hdc3     linux           126m    /usr/src pendant le developpement
   /dev/hdc4     linux           6+gig   miroir RAID 1
 * /dev/hdc5     linux            26m    miroir RAID 1 de test
 * /dev/hdc6     linux swap      100m

         <bf/SYSTEME DE PRODUCTION/

 /dev/hda1       dos             16meg
 /dev/hda2       linux swap      126m
 /dev/hda3       linux swap      126m
 /dev/hda4       linux           6+gig   RAID 1

 /dev/hdc1       est simplement une copie exacte de hda1
 /dev/hdc2       linux swap      126m
 /dev/hdc3       linux swap      126m
 /dev/hdc4       linux           6+gig   miroir RAID 1

 Les partitions hdx3 ont ete changees en 'swap' apres  avoir  developpe
 cet  utilitaire.  J'aurais pu le faire sur une autre machine, mais les
 bibliotheques et les noyaux ont tous a peu pres un an  de  retard  sur
 mes autres machines Linux et j'ai prefere le construire sur la machine
 cible.

 J'ai choisi de partitionner  de  cette  facon  et  d'utiliser  loadlin
 plutot que LILO parce que :

 1. la  partition  principale  (6  Go)  est  trop  grande  pour pouvoir
    demarrer  avec  LILO  seul  et   aurait   demande   une   partition
    supplementaire  plus petite situee a l'interieur des 1024 premieres
    adresses du disque ;

 2. Si jamais ce disque tombe en panne de  maniere  catastrophique,  le
    systeme doit continuer a tourner et etre demarrable avec un minimum
    d'efforts et AUCUNE perte de donnees.

 +o  Si l'un des disques durs tombe en panne, le  demarrage  s'arretera,
    et le systeme de secours se mettra en marche. L'examen du message a
    l'ecran ou de /dos_x/linux/raidstat.ro indiquera a  l'administrateur
    l'etat de la matrice defaillante.

 +o  Si  hda  tombe en panne, la partition DOS sur hdc doit etre marquee
    'active' et le BIOS doit  reconnaitre  hdc  comme  peripherique  de
    demarrage ou bien il doit etre deplace physiquement en position hda
    en le recablant. On peut reactiver a nouveau  le  systeme  RAID  en
    enlevant le disque defectueux et en tapant :

             "/sbin/mkraid /etc/raid1.conf -f --only-superblock"

 pour reconstruire le superblock restant.

 +o  Une fois ceci fait, alors

            mdadd -ar

 +o  Examinez  l'etat de la matrice pour verifier que tout est en ordre,
    puis remplacez la reference de la matrice en bon  etat  par  l'etat
    courant  jusqu'a  ce que le disque defectueux puisse etre repare et
    remplace.

            cat /proc/mdstat | grep md0 > /dosa/linux/raidgood.ref

            shutdown -r now

 pour effectuer un redemarrage propre, et le  systeme  sera  a  nouveau
 disponible.

 55..  CCoonnssttrruuccttiioonn dduu ssyysstteemmee ddee ffiicchhiieerrss RRAAIIDD

 Cette  description  convient  a  mon  systeme  RAID  1 decrit dans les
 specifications du systeme. Votre systeme peut avoir  une  architecture
 RAID  differente,  vous  ferez les modifications appropriees. Veuillez
 lire les  pages  de  manuel  et  le  QuickStart.RAID  livre  avec  les
 raidtools-0.42. Mon /etc/raid1.conf contient :

         # configuration RAID 1
         raiddev                 /dev/md0
         raid-level              1
         nr-raid-disks           2
         nr-spare-disks          0

         device                  /dev/hda4
         raid-disk               0

         device                  /dev/hdc4
         raid-disk               1

 55..11..   PPrroocceedduurreess  ppaass  aa  ppaass  ppoouurr  llaa  ccoonnssttrruuccttiioonn dd''uunn ssyysstteemmee ddee
 ffiicchhiieerrss RRAAIIDD ddee pprroodduuccttiioonn

 Pour mon systeme RAID 1, j'ai fait une installation complete de :

         Slackware-3.4
         linuxthreads-0.71
         raidtools-0.42
         linux-2.0.32 avec le patch raid145

 Creez et formatez le peripherique RAID.

         mkraid /etc/raid1.conf
         mdcreate raid1 /dev/md0 /dev/hda4 /dev/hdc4
         mdadd -ar
         mke2fs /dev/md0
         mkdir /md
         mount -t ext2 /dev/md0 /md

 Creez les fichiers de reference que reboot utilisera, ils peuvent etre
 differents sur votre systeme.

         cat /proc/mdstat | grep md0 > /dosa/linux/raidgood.ref
         cat /proc/mdstat | grep md0 > /dosc/linux/raidgood.ref

 Utilisez Slackware 3.4 ou une autre distribution pour construire votre
 systeme d'exploitation.

         setup

 Specifiez  'md'  comme  cible,  et  comme  source ce que vous utilisez
 habituellement. Selectionnez et installez  les  ensembles  de  disques
 interessants  sauf  pour  le noyau. Configurez le systeme, mais passez
 les sections sur LILO et le demarrage du noyau. Sortez de setup.

 Installez les 'pthreads'

         cd /usr/src/linuxthreads-0.71

 Editez le Makefile et specifiez

         BUILDIR=/md

         make
         make install

 Installez les 'raidtools'

         cd /usr/src/raidtools-0.42
         configure --sbindir=/md/sbin --prefix=/md/usr

 Reparez l'erreur du make install des raidtools

         cd /md/sbin
         rm mdrun
         rm mdstop
         ln -s mdadd mdrun
         ln -s mdadd mdstop

 Creez /dev/mdx

         cp -a /dev/md* /md/dev

 Ajoutez la configuration systeme du  systeme  en  cours  (ignorez  les
 erreurs).

         cp -dp /etc/* mnt/etc
         cp -dp /etc/rc.d/* mnt/etc/rc.d         (incluez le nouveau rc.6)
         mkdir  mnt/lib/modules
         cp -a  /lib/modules/2.x.x mnt/lib/modules <--- votre 2.x.x en cours

 Editez  les  fichiers suivants pour les corriger pour votre systeme de
 fichiers

         cd /md

 Non reseau
         etc/fstab       correct pour les peripheriques racine reelle et RAID
         etc/mdtab       devrait etre correct
 Reseau
         etc/hosts
         etc/resolv.conf
         etc/hosts.equiv         et fichiers associes
         etc/rc.d/rc.inet1       adresses IP, masque, passerelle, etc. correctes
         etc/rc.d/rc.S           enlevez la section entiere sur l'etat du systeme de fichiers
                 a partir de :
                         # Test to see if the root partition isread-only
                 jusqu'a mais ne comprenant pas :
                         # remove /etc/mtab* so that mount will .....
                                 Ceci evite l'avertissement ennuyeux que
                                 le disque RAM est monte en lecture/ecriture
         etc/rc.d/rc.xxxxx       d'autres si necessaire
         root/.rhosts            s'il existe
         home/xxxx/xxxx          d'autres si necessaire

     ATTTENTION :        La procedure ci-dessus deplace vos fichiers de
                         mot de passe et shadow sur le nouveau systeme
                         de fichiers !!!

     ATTENTION :         Vous n'aurez pas envie de faire ceci pour des
                         raisons de securite

 Creez tous les repertoires pour  monter  /dev/disk...  qui  pourraient
 etre necessaire compte-tenu de votre systeme. Le mien necessite :

         cd /md          <--- nouvelle racine du systeme de fichiers
         mkdir dosa              point de montage de la partition DOS
         mkdir dosc              point de montage du miroir DOS

 Le  nouveau  systeme  de fichiers est termine. Assurez-vous de sauveg-
 arder l'etat de reference de md sur le 'veritable' peripherique racine
 et vous etes pret a demarrer.

 montez les partitions DOS sur dosa et dosc

         cat /proc/mdstat | grep md0 > /dosa/linux/raidgood.ref
         cat /proc/mdstat | grep md0 > /dosc/linux/raidgood.ref

         mdstop /dev/md0

 66..  UUnnee ddeerrnniieerree ppeennsseeee

 Souvenez-vous qu'un expert est quelqu'un qui en connait au moins 1% de
 plus que vous  sur  un  sujet.  Gardez  ceci  a  l'esprit  quand  vous
 m'enverrez  un  e-mail  demandant de l'aide. J'essaierai, mais je n'ai
 fait ceci qu'une fois !
 Michael Robinton [email protected] <mailto:[email protected]>

 77..  AAnnnneexxee AA.. -- eexxttiinnccttiioonn ddee mmdd00 cchheezz BBoohhuummiill CChhaalluuppaa

 Voici le post de Bohumil Chalupa sur la liste Linux RAID concernant le
 contournement  du  probleme  de mdstop avec RAID 1 + 5. Sa solution ne
 considere pas la possibilite d'une corruption du peripherique  RAID  a
 l'extinction.  J'ai  donc ajoute une simple comparaison d'etat avec un
 etat de reference  correct  et  connu  au  demarrage.  Ceci  permet  a
 l'administrateur  d'intervenir si quelque chose ne va pas bien avec un
 disque dans une matrice. La description de  ceci  est  dans  le  corps
 principal de ce document.

 (NdT  :  j'ai  traduit le message parce qu'il est long et interessant,
 celui en anglais se trouve bien evidemment dans la  version  d'origine
 de ce HOWTO.)

 > From: Bohumil Chalupa <[email protected]>
 >
 > Je peux maintenant demarrer initrd et utiliser linuxrc pour demarrer
 > la matrice RAID 1, puis changer la racine en /dev/md0 avec succes.
 >
 > Je ne connais pas, cependant, de maniere d'_arreter_ proprement la
 > matrice.

 Bon. Je dois repondre moi-meme :-)

 > Date: Mon, 29 Dec 1997 02:21:38 -0600 (CST)
 > From: Edward Welbon <[email protected]>
 > Subject: Re: dismounting root raid device
 >
 > Pour les peripheriques md autres que RAID 0, il y a surement un etat
 > a sauvegarder qui n'est connu qu'une fois que toutes les ecritures
 > sont terminees. Un tel etat ne peut bien sur etre sauve a la racine
 > une fois qu'elle est montee en lecture seule. Dans ce cas, on
 > devrait pouvoir monter un systeme de fichiers "X" en ecriture sur la
 > racine en lecture seule et pouvoir ecrire sur "X" (je me rappelle
 > l'avoir fait pendant des operations de "secours", mais pas dans une
 > procedure automatisee).
 >
 > Le systeme de fichiers "X" serait je pense un peripherique de
 > demarrage a partir duquel le RAID (pendant l'execution de linuxrc a
 > travers initrd) irait prendre son etat initial. Heureusement RAID 0
 > ne demande pas d'ecrire un quelconque etat (bien qu'il serait utile
 > de pouvoir ecrire les sommes de verification (checksums) dans mdtab
 > apres un mdstop). En fin de compte, je bricolerai ceci mais ca ne
 > parait pas difficile bien que le "diable" se trouve toujours dans
 > les "details".

 Oui, c'est ca.
 J'ai deja eu cette idee a l'esprit depuis quelques temps, mais je n'ai
 pas eu le temps de l'essayer. Je l'ai fait hier, et ca marche.

 Avec mon RAID 1 (miroir), je ne sauvegarde aucune somme de
 verification ni donnees de superblock RAID. Je ne sauvegarde une
 information que sur la partition de demarrage "reelle", celle sur
 laquelle le volume md racine etait remonte en lecture seule pendant
 l'extinction. Alors, pendant le demarrage, le script linuxrc lance
 mkraid --only-superblock quand il trouve cette information ; sinon, il
 lance ckraid. Ceci veut dire que l'information du superblock RAID
 n'est pas mise a jour pendant l'extinction ; elle est mise a jour au
 demarrage. Ce n'est pas tres propre, j'en ai peur, :-( mais ca
 fonctionne.

 J'utilise Slackware et initrd.md d'Edward Welbon pour demarrer le
 peripherique RAID a la racine.
 Autant que je puisse m'en souvenir, les seuls fichiers modifies sont
 mkdisk et linuxrc, et le script d'extinction /etc/rc.d/rc.6. Et
 lilo.conf, bien sur.

 J'annexe les parties importantes.

 Bohumil Chalupa

 --------------- mon.linuxrc suit -----------------
 #!/bin/sh
 # nous avons besoin de /proc
 /bin/mount /proc
 # demarrer le peripherique md0. Laisser les scripts /etc/rc.d
 s'occuper du reste. Nous devrions en faire le moins possible ici.
 # ________________________________________
 # test d'extinction du RAID 1 racine et recreation
 # /start doit etre cree sur l'image rd dans mon.mkdisk
 echo "preparation de md0: montage de /start"
 /bin/mount /dev/sda2 /start -t ext2
 echo "lecture de l'etat sauvegarde de md0 dans /start"
 if [ -f /start/root.raid.ok ]; then
  echo "RAID ok, modification du superblock"
  rm /start/root.raid.ok
  /sbin/mkraid /etc/raid1.conf -f --only-superblock
 else
  echo "RAID pas propre, lancement de ckraid --fix"
  /sbin/ckraid --fix /etc/raid1.conf
 fi
 echo "demontage de /start"
 /bin/umount /start
 # _________________________________________
 #
 echo "ajout de md0 pour le systeme de fichiers racine"
 /sbin/mdadd /dev/md0 /dev/sda1 /dev/sdb1
 echo "lancement de md0"
 /sbin/mdrun -p1 /dev/md0
 # dire au noyau que nous voulons passer /dev/md0 comme peripherique
 # racine, la valeur 0x900 vient de 256*numero_periph_majeur +
 # numero_periph_mineur.
 echo "mise en place du vrai-periph-racine (real-root-dev)"
 /bin/echo 0x900>/proc/sys/kernel/real-root-dev
 # demontage de /proc pour que le disque RAM puisse etre enleve de la
 # memoire
 echo "unmounting /proc"
 /bin/umount /proc
 /bin/echo "On peut normalement monter /dev/md0 (majeur 9, mineur 0) a la racine"
 exit
 --------------- fin de mon.linuxrc ----------------------------------

 ----------- extrait de /etc/rc.d/rc.6 suit -----------------
   # arreter la swap, puis demonter les systemes de fichiers locaux
   echo "Extinction de la swap."
   swapoff -a
   echo "Demontage des systemes de fichiers locaux."
   umount -a -tnonfs
   # Ne pas remonter les volumes UMSDOS racine :
   if [ ! "`mount | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
     mount -n -o remount,ro /
   fi

   # Sauvegarder l'etat RAID
   echo "Sauvegarde de l'etat RAID"
   /bin/mount -n /dev/sda2 /start -t ext2
   touch /start/root.raid.ok
   /bin/umount -n /start

 -------------- fin de l'extrait de rc.6 ------------------------

 ------------------ une partie de mon.mkdisk suit ----------------------
 #
 #  maintenant que le systeme de fichiers est pret a etre rempli, nous
 #  devons obtenir quelques repertoires importants. J'ai eu des
 #  problemes sans fin jusqu'a ce que je cree un fichier mtab tout
 #  neuf. Dans mon cas, il est pratique de recopier /etc/mdtab, de
 #  cette maniere je peux activer md avec un simple "/sbin/mdadd -ar"
 #  dans linuxrc.
 #
 cp -a $ROOT/etc $MOUNTPNT 2>cp.stderr 1>cp.stdout
 rm -rf $MOUNTPNT/etc/mtab
 rm -rf $MOUNTPNT/etc/ppp*
 rm -rf $MOUNTPNT/etc/termcap
 rm -rf $MOUNTPNT/etc/sendmail*
 rm -rf $MOUNTPNT/etc/rc.d
 rm -rf $MOUNTPNT/etc/dos*
 cp -a $ROOT/sbin $ROOT/dev $ROOT/lib $ROOT/bin $MOUNTPNT 2>>cp.stderr
 1>>cp.stdout
 # _____________________________________________________________________
 #  RAID: aura besoin de mkraid et ckraid
 cp -a $ROOT/usr/sbin/mkraid $ROOT/usr/sbin/ckraid $MOUNTPNT/sbin
 2>>cp.stderr 1>>cp.stdout
 #
 ---------------------------------------------------------------------
 #  il semble qu'init ne voudra pas jouer sans utmp. on peut probablement
 #  reduire ceci de beaucoup. aucune idee de ce que le vrai bug etait 8-).
 #
 mkdir $MOUNTPNT/var $MOUNTPNT/var/log $MOUNTPNT/var/run $MOUNTPNT/initrd
 touch $MOUNTPNT/var/run/utmp $MOUNTPNT/etc/mtab
 chmod a+r $MOUNTPNT/var/run/utmp $MOUNTPNT/etc/mtab
 ln -s /var/run/utmp $MOUNTPNT/var/log/utmp
 ln -s /var/log/utmp $MOUNTPNT/etc/utmp
 ls -lstrd $MOUNTPNT/etc/utmp $MOUNTPNT/var/log/utmp $MOUNTPNT/var/run/utmp
 #
 #  puisque je voulais changer le point de montage, j'avais besoin de
 #  ceci bien que je suppose que j'aurais pu faire un "mkdir /proc"
 #  dans linuxrc.
 #
 mkdir $MOUNTPNT/proc
 chmod 555 $MOUNTPNT/proc
 #
 #  ------------------------------------------------------
 #  nous monterons le vrai peripherique de demarrage sur /start de
 #  maniere temporaire pour verifier l'etat du RAID racine sauve au
 #  moment de l'extinction
 #
 mkdir $MOUNTPNT/start
 #  -------------------------------------------------------
 #
 #  besoin de linuxrc (c'est, apres tout, le but de l'exercice).
 #
 if [ -x ./my.linuxrc ]; then
   cp -a ./my.linuxrc $MOUNTPNT/linuxrc
   chmod 777 $MOUNTPNT/linuxrc
 else
    ln -s /bin/sh $MOUNTPNT/linuxrc
 fi
 #
 ----------------- fin de la partie de mon.mkdisk -----------------

 88..  AAnnnneexxee BB.. -- ffiicchhiieerr rrcc..00 -- rrcc..66 ccoommpplleett

 #! /bin/sh
 #
 # rc.6          Ce fichier est execute par init quand il passe au
 #               runlevel (niveau d'execution) 0 (halt) ou runlevel 6
 #               (redemarrage). Il tue tous les processus, demonte les
 #               systemes de fichiers et soit stoppe soit redemarre.
 #
 # Version:      @(#)/etc/rc.d/rc.6      1.50    1994-01-15
 #
 # Author:       Miquel van Smoorenburg <[email protected]>
 # Modified by:  Patrick J. Volkerding, <[email protected]>
 # Modified by:  Michael A. Robinton, <[email protected]> for RAID shutdown

   # Positionner le chemin.
   PATH=/sbin:/etc:/bin:/usr/bin

   # Mettre en mode saut de ligne pour eviter l'effet d'escalier.
   stty onlcr

   echo "Lancement du script d'extinction $0:"

   # Trouver comment nous sommes appeles.
   case "$0" in
         *0)
                 message="Le systeme est stoppe."
                 command="halt"
                 ;;
         *6)
                 message="Redemarrage."
                 command=reboot
                 ;;
         *)
                 echo "$0: veuillez m'appeler en tant que \"rc.0\" or \"rc.6\" !"
                 exit 1
                 ;;
   esac

   # Tuer tous les processus.
   # INIT est sense s'occuper entierement de tout ceci, mais il n'a pas
   # toujours fonctionne correctement sans cette seconde passe de
   # tuerie de processus. Puisqu'INIT a deja averti les utilisateurs
   # que les processus etaient tues, nous eviterons d'afficher cette
   # information cette fois-ci.
   if [ "$1" != "fast" ]; then # shutdown n'a pas encore tue tous les processus
     killall5 -15
     killall5 -9
   fi

   # Essayer d'arreter les quotas et la comptabilite.
   if [ -x /usr/sbin/quotaoff ]
   then
         echo "Arret des quotas."
         /usr/sbin/quotaoff -a
   fi
   if [ -x /sbin/accton ]
   then
         echo "Arret de la comptabilite."
         /sbin/accton
   fi

   # Avant de demonter les systemes de fichiers ecrire un
   # enregistrement reboot ou halt dans wtmp.
   $command -w

   # Sauvegarde de l'heure locale
   [ -e /usr/lib/zoneinfo/localtime ] && cp /usr/lib/zoneinfo/localtime /etc
   # Demontage asynchrone de tout systeme de fichiers distant
   echo "Demontage des systemes de fichiers distants."
   umount -a -tnfs &

   # vous devez avoir lance
   # 'cat /proc/mdstat | grep md0 > {your boot vol}/linux/raidgood.ref'
   # avant que linuxrc s'execute proprement avec cette information
   RAIDSTATUS=`/bin/cat /proc/mdstat | /usr/bin/grep md0 # capture raid status`

   # Arret de la swap, puis demontage des systemes de fichiers locaux.
   # effacement de mdtab par la meme occasion
   echo "Arret de la swap."
   swapoff -a
   echo "Demontage des systemes de fichiers locaux."
   umount -a -tnonfs

   # Ne pas remonter les volumes UMSDOS racine :
   if [ ! "`mount | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
     mount -n -o remount,ro /
   fi

   # le peripherique racine reste monte
   # monter les systemes de fichiers DOS en lecture/ecriture
   echo "Ecriture des drapeaux RAID de demarrage en lecture seule."
   mount -n /dosa
   mount -n /dosc
   # creation du drapeau RAID monte en lecture seule en double
   # contenant l'etat a l'extinction de la matrice RAID
   echo ${RAIDSTATUS} > /dosa/linux/raidstat.ro
   echo ${RAIDSTATUS} > /dosc/linux/raidstat.ro

   umount -n /dosa
   umount -n /dosc

   # Arreter toutes les matrices RAID (sauf la racine)
   echo "Arret du RAID"
   mdstop -a

   # Voir si c'est une situation de coupure de courant.
   if [ -f /etc/power_is_failing ]; then
     echo "Extinction de l'UPS, a+."
     /sbin/powerd -q
     exit 1
   fi

   # Maintenant arret ou redemarrage.
   echo "$message"
   [ ! -f /etc/fastboot ] && echo "Au prochain demarrage fsck sera FORCE."
   $command -f