このページは大阪弁化フィルタによって翻訳生成されたんですわ。

翻訳前ページへ


toutes les autres structures RAID avec des modifications mineures.

1. Introduction

Nous supposerons que le lecteur est familier avec les divers types d'impl駑entation RAID, leurs avantages et inconv駭ients. Ceci n'est sunsite.unc.edu/mdw/HOWTO/ Disponible en SGML et HTML.

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 :-( apr鑚 chaque red駑arrage.

La solution de contournement stocke l'騁at de la matrice au moment de s'assurer de la pr馗ision des informations document馥s ici, l'auteur / 馘iteur / mainteneur ne prend AUCUNE RESPONSABILITノ sur toute erreur ou pour tout dommage, direct ou en d馗oulant, r駸ultant de l'utilisation des informations document馥s ici.

2. Ce dont vous avez besoin AVANT DE COMMENCER

Les paquetages dont vous avez besoin et la documentation qui r駱ond aux questions les plus fr駲uentes sur la mani鑽e d'installer et de linux-2.0.32 de sunsite

  • raid145-971022-2.0.31 patch qui ajoute le support pour RAID 1/4/5
  • raidtools-pre3-0.42 outils pour cr馥r et maintenir des p駻iph駻iques RAID (et aussi de la documentation).
  • linuxthreads-0.71 ftp.kernel.org/pub/linux/daemons/raid/

    2.2 Autres impl駑entations similaires.

    J'ai choisi d'inclure dans le noyau tous les morceaux n馗essaires au fonctionnement d鑚 le d駑arrage sans charger aucun module. L'image de http://www.realtime.net/~welbon/initrd.md.tar.gz

    2.3 Documentation -- lectures recommand馥s

    Veuillez lire :

    /usr/src/linux/Documentation/initrd.txt

    ainsi que la documentation et les pages de manuel qui accompagnent l'ensemble raidtools. En particulier, lisez man mdadd ainsi que le document QuickStart.RAID inclus dans le paquetage raidtools.

    2.4 Ressources sur RAID

    testez votre (vos) p駻iph駻ique(s) RAID. Les d騁ails sur la mani鑽e de proc馘er sont inclus dans le paquetage raidtools et revus en d騁ails plus loin dans ce document.

    3.3 Construction du syst鑪e de fichier initrd de secours et de d駑arrage

    Cr馥z des points de montage sur lesquels travailler

            mkdir mnt
            mkdir mnt2
    

    Cr馥z un fichier suffisamment grand pour effectuer l'installation du syst鑪e de fichiers. Il sera beaucoup plus grand que le syst鑪e de 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'馘iteur que je pr馭鑽e, et 'MC', petit outil utile de gestion de fichiers. Choisissez les outils dont vous aurez besoin sur votre syst鑪e.

    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 vous voudrez quand m麥e 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
    

    3.6 Installation de Linux pthreads

    Vous devez maintenant installer la biblioth鑷ue 'linuxthreads-0.71'. J'ai inclus un patch pour le Makefile de -------------------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

    3.7 Installation des outils pour le RAID

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

    Vous devez lancer le script "configure" pour faire pointer le Makefile vers le r駱ertoire 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
    
    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

    3.9 Cr饌tion de /dev/mdx

    La derni鑽e 騁ape copie simplement les p駻iph駻iques /dev/md* du syst鑪e de fichiers courant sur le syst鑪e de fichiers de secours. Vous pouvez les cr馥r avec mknod.

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

    Copiez le syst鑪e de fichiers sur un p駻iph駻ique plus petit pour le fichier initrd, 16 Mo devraient 黎re suffisants.

    Cr馥z le syst鑪e de fichiers plus petit et montez-le

            cd /root/raidboot
            dd if=/dev/zero of=bare.fs bs=1024k count=16
    
    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

            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
    
    ノditez les fichiers suivantes pour les corriger pour votre syst鑪e 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
    
    Cr馥z tous les r駱ertoires pour monter /dev/dsk... tels qu'ils peuvent effacer. Je ne l'ai pas fait car cela compliquerait totalement cette proc馘ure et la plupart des syst鑪es RAID ont suffisamment de disque et de m駑oire. Si vous voulez encore diminuer la taille du syst鑪e de fichiers, allez-y !

    Faire qu'initrd d駑arre le p駻iph駻ique RAID - linuxrc

    ---------------------- 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 p駻iph駻ique de d駑arrage initrd.
            cd /root/raidboot
            chmod 777 linuxrc
            cp -p linuxrc mnt
    

    3.11 Modification des scripts rc pour l'extinction

    Pour terminer l'installation, modifiez les scripts rc pour sauvegarder

    Puisqu'il ne reste plus de partition Linux libre sur le syst鑪e de production except馥 md0, les partitions DOS sont utilis馥s pour stocker l'騁at raidOK en lecture seule. J'ai choisi d'馗rire un fichiers racine ne se d駑ontera 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 arr黎era proprement tous les p駻iph駻iques RAID sauf la sur la m麥e machine.

    Modifiez le etc/fstab de secours si n馗essaire et assurez-vous que le mdtab de secours est correct.

    Copiez maintenant la disquette de secours sur votre partition DOS et red駑arrant. Voyez les param鑼res loadlin sur le fichier DOS linux.bat dans ce qui suit.

    3.12 Mise en place du d駑arrage avec loadlin pour le secours et le RAID

    Les disques que j'ai choisis pour mon syst鑪e sont bien plus grands utilitaires pour que je puisse modifier les param鑼res de d駑arrage de loadlin si n馗essaire, ce qui me permet de red駑arrer le syst鑪e Linux sur mon disque de d駱annage pendant que je fais des tests.

    Le syst鑪e 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 contient :
    ---------------------- 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
    mais ne fonctionne pas avec 'shutdown -r now').

    4. Configuration du syst鑪e de production en RAID

    4.1 Sp馗ifications du syst鑪e

    Carte mere :    Iwill P55TU     double ide + adaptec scsi
    Processeur :    Intel P200
      /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
    
  • Une fois ceci fait, alors
            mdadd -ar
    
  • Examinez l'騁at de la matrice pour v駻ifier que tout est en ordre, puis remplacez la r馭駻ence de la matrice en bon 騁at par raid-level 1 nr-raid-disks 2 nr-spare-disks 0 device /dev/hda4 raid-disk 0 device /dev/hdc4 raid-disk 1
  • linux-2.0.32 avec le patch raid145

    Cr馥z et formatez le p駻iph駻ique 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
    
    Cr馥z les fichiers de r馭駻ence que reboot utilisera, ils peuvent 黎re diff駻ents sur votre syst鑪e.
            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 syst鑪e d'exploitation.
            setup
    
    Sp馗ifiez 'md' comme cible, et comme source ce que vous utilisez habituellement. S駘ectionnez et installez les ensembles de disques int駻essants sauf pour le noyau. Configurez le syst鑪e, mais passez les sections sur LILO et le d駑arrage du noyau. Sortez de setup.

    Installez les 'pthreads'

            cd /usr/src/linuxthreads-0.71
    
    ノditez le Makefile et sp馗ifiez
            BUILDIR=/md
    
            make
            make install
    
    Installez les 'raidtools'
            cd /usr/src/raidtools-0.42
            configure --sbindir=/md/sbin --prefix=/md/usr
    
    R駱arez l'erreur du make install des raidtools
            cd /md/sbin
            rm mdrun
            rm mdstop
            ln -s mdadd mdrun
            ln -s mdadd mdstop
    
    Cr馥z /dev/mdx
            cp -a /dev/md* /md/dev
    
    Ajoutez la configuration syst鑪e du syst鑪e 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
    
    ノditez les fichiers suivants pour les corriger pour votre syst鑪e 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
    
    Cr馥z tous les r駱ertoires pour monter /dev/disk... qui pourraient 黎re n馗essaire compte-tenu de votre syst鑪e. Le mien n馗essite :
            cd /md          <--- nouvelle racine du systeme de fichiers
    fait ceci qu'une fois !

    Michael Robinton Michael@bzs.org

    7. Annexe A. - extinction de md0 chez Bohumil Chalupa

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

    > From: Bohumil Chalupa <bochal@apollo.karlov.mff.cuni.cz>
    >  
    > 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 mani鑽e d'_arreter_ proprement la
    > matrice.
     
    Bon. Je dois repondre moi-meme :-)
     
    > Date: Mon, 29 Dec 1997 02:21:38 -0600 (CST)
    > From: Edward Welbon <welbon@bga.com>
    > 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
    > 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 v駻ification (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 p駻iph駻ique 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 騁ait 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 -----------------
    

    8. Annexe B. - fichier rc.0 - rc.6 complet

    #! /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 <miquels@drinkel.nl.mugnet.org>
    # Modified by:  Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>
    # Modified by:  Michael A. Robinton, <michael@bzs.org> 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.
      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