Hard Disk Upgrade Mini How-To
 Yves Bellefeuille, [email protected]
 traduction Eric Cano, [email protected]
 Version 1.0, 31 janvier 1998, traduction mars 1998

 Comment copier un systeme LLiinnuuxx d'un disque dur a un autre

 11..  IInnttrroodduuccttiioonn

 Recemment,  j'ai remplace mon petit disque dur de 249 Mo par un disque
 plus grand. Je voulais transferer mon LLiinnuuxx entier,  LILO  inclus,  de
 l'ancien au nouveau disque.  Voici comment je l'ai fait.

 Dans  les explications qui suivent, j'utilise "/dev/hda" pour designer
 mon "ancien" disque, "/dev/hda1" designe mon ancienne partition LLiinnuuxx.
 "/dev/hdb"  designe  le  nouveau  disque,  et  "/dev/hdb1" la nouvelle
 partition LLiinnuuxx.

 Je suppose donc que LLiinnuuxx est sur la  premiere  partition  du  premier
 disque.  Adaptez ceci a votre propre configuration.

 Ce  document est base sur mon propre systeme, qui fait tourner une RReedd
 HHaatt 44..22, et j'ai teste toutes les commandes  qui  suivent  sous  cette
 distribution.   Je  les  ai aussi testees sous une DDeebbiiaann 11..33..11 et une
 SSllaacckkwwaarree 33..33, et j'indique quelques differences a prendre  en  compte
 si vous utilisez ces distributions.

 Si  ces  commandes  ne  marchent  pas correctement sous votre systeme,
 faites le moi - _N_d_T _l_'_a_u_t_e_u_r_, _p_a_s _l_e _t_r_a_d_u_c_t_e_u_r - savoir, en indiquant
 la version de LLiinnuuxx que vous utilisez.

 22..  IInnssttaalllleezz lleess ddeeuuxx ddiissqquueess ddaannss vvoottrree ssyysstteemmee

 Comme  les  systemes  modernes  peuvent  accepter quatre peripheriques
 "EIDE" sur le controleur de disque dur, vous ne devriez pas  avoir  de
 probleme  pour  installer  en  meme  temps  les deux disques sur votre
 systeme, meme si vous avez d'autres peripheriques  EIDE.  Les  disques
 durs  et  les lecteurs de CD-ROM sont des peripheriques EIDE typiques.
 Les lecteurs de disquettes et de bandes sont connectes le plus souvent
 sur le controleur de disquettes plutot que sur le controleur de disque
 dur.

 Les controleurs SCSI  sont  plus  souples  et  peuvent  accepter  sept
 peripheriques.   Si  vous etes assez chanceux (et riche) pour avoir un
 controleur SCSI, vous savez  sans  doute  deja  cela,  et  vous  savez
 probablement  lesquels, parmi vos peripheriques, sont SCSI ! Pour plus
 d'information,         voyez          le          SCSI          How-To
 <http://www.freenix.fr/linux/HOWTO/SCSI-HOWTO.html>.

 Meme  les  systemes les plus vieux peuvent accepter deux peripheriques
 sur le controleur de disque dur, donc vous pouvez  toujours  installer
 deux  disques  en  meme  temps.  Toutefois,  si  vous  avez  un  autre
 peripherique installe en plus de votre disque dur,  (par  exemple,  si
 vous  avez  un  disque  dur  et un CD-ROM) vous devrez retirer l'autre
 peripherique pour pouvoir installer le nouveau et l'ancien disque  dur
 en meme temps.

 Vous  devez  configurer  les  disques  comme  "maitre" ou "esclave" en
 placant les cavaliers de facon appropriee.  Vous trouverez souvent des
 informations sur leur configuration sur les disques eux memes ; sinon,
 consultez les manuels ou les fabricants de vos disques.

 Vous devez aussi informer le BIOS de la presence  des  disques  et  de
 leur  "geometries".  En  general  vous entrez dans le Setup du BIOS en
 pressant une touche durant le demarrage du systeme. Voila la marche  a
 suivre avec quelques BIOS courants :

    AAmmeerriiccaann MMeeggaattrreennddss ((AAMMII))
       Touche _S_u_p_p_r pendant l'autotest de demarrage.

    AAwwaarrdd
       _C_t_r_l_-_A_l_t_-_E_c_h_a_p

    CCoommppaaqq
       Touche _F_1_0 apres que le carre soit apparu dans le coin en haut a
       droite de l'ecran a la mise en route.

    DDeellll
       _C_t_r_l_-_A_l_t_-_E_n_t_r_e_e

    DDTTKK
       Touche _E_c_h_a_p pendant l'autotest de demarrage.

    IIBBMM PPSS//22
       _C_t_r_l_-_A_l_t_-_S_u_p_p_r, puis _C_t_r_l_-_A_l_t_-_I_n_s_e_r quand le curseur est dans le
       coin en haut a droite de l'ecran.

    PPhhooeenniixx
       _C_t_r_l_-_A_l_t_-_E_c_h_a_p, ou _C_t_r_l_-_A_l_t_-_S, ou _C_t_r_l_-_A_l_t_-_E_n_t_r_e_e

    AAuuttrreess......
       De   nombreux   autres   systemes  ont  besoin  d'une  disquette
       d'_i_n_s_t_a_l_l_a_t_i_o_n ou de _r_e_f_e_r_e_n_c_e

 (Je - _N_d_T _: _l_'_a_u_t_e_u_r - suis interesse par  des  informations  sur  les
 autres BIOS pour les inclure dans cette liste.)

 Redemarrez le systeme et loguez-vous root.

 33..  DDeemmoonntteezz lleess ppaarrttiittiioonnss nnoonn--LLiinnuuxx

 Certains aiment monter les partitions d'autres systemes d'exploitation
 (DDOOSS, WWiinnddoowwss, OOSS//22, etc.)  pour pouvoir les utiliser sous LLiinnuuxx.  Ces
 partitions  devraient  etre creees et copiees sous leur propre systeme
 d'exploitation, et vous devriez les demonter  avant  de  copier  votre
 partition  LLiinnuuxx.  Par  exemple,  si vous avez une partition montee en
 /dos, vous devez la demonter avec cette commande :

         umount /dos

 Notez que la commande est "umount", avec le premier "n" qui manque par
 rapport au mot "_u_n_m_o_u_n_t" _- _N_d_T _"_d_e_m_o_n_t_e_r_" _e_n _a_n_g_l_a_i_s.

 44..  PPaarrttiittiioonnnneezz llee nnoouuvveeaauu ddiissqquuee

 Utilisez la commande :

         fdisk /dev/hdb

 pour partitionner le nouveau disque.

 Pour  plus d'informations sur le partitionnement, voyez l'Installation
 How-To <http://www.freenix.fr/linux/HOWTO/Installation-HOWTO.html>  et
 le   Partitionning   Mini  How-To  <http://www.freenix.fr/linux/HOWTO-
 vo/mini/Partition>.

 Si votre disque a plus de 1024 cylindres, voyez  le  Large  Disk  Mini
 How-To    <http://www.freenix.fr/linux/HOWTO-vo/mini/Large-Disk>.   En
 bref, vous devriez installer tous les fichiers  requis  pour  demarrer
 LLiinnuuxx dans les 1024 premiers cylindres.  Une facon de s'en assurer est
 de creer une petite partition (1Mo ou 2Mo) juste  pour  le  repertoire
 /boot  au debut du disque. (ssppeecciiffiicciittee SSllaacckkwwaarree : comme le noyau est
 plutot  en  /vmlinuz  qu'en  /boot/vmlinuz,  vous  devez  mettre   les
 repertoires / et /boot dans cette partition.)

 Les  partitions  pour  les  systemes  autres  que LLiinnuuxx devraient etre
 creees en utilisant leur propre fdisk plutot que celui de LLiinnuuxx.

 55..  FFoorrmmaatteezz llee nnoouuvveeaauu ddiissqquuee..

 Utilisez la commande suivante pour formater le nouveau disque :

         mkfs.ext2 /dev/hdb1

 Pour rechercher les mauvais blocs (defauts physiques) sur  le  disque,
 ajoutez l'option -c juste avant "/dev/hdb1".

 (_N_o_t_e  _:  Contrairement  a  ce  qu'indiquent  les  pages de manuel, la
 commande  "mkfs  -t  ext2  /dev/hdb1"  ne  recherche  pas  les   blocs
 defectueux, sous aucune de la RReedd HHaatt, DDeebbiiaann ou SSllaacckkwwaarree.)

 66..  MMoonntteezz llee nnoouuvveeaauu ddiissqquuee

 Creez un repertoire la ou vous monterez le nouveau disque, par exemple
 /new-disk, et montez le :

         mkdir /new-disk
         mount -t ext2 /dev/hdb1 /new-disk

 77..  CCooppiieezz lleess ffiicchhiieerrss ddee ll''aanncciieenn ddiissqquuee aauu nnoouuvveeaauu

 Il faut reproduire completement la structure du disque, liens  inclus.

 Toutefois,  il  ne faut _p_a_s copier le repertoire /new-disk, puisque ca
 reviendrait a recopier le nouveau disque sur lui-meme !

 De plus, il faut copier le repertoire /proc  sur  le  nouveau  disque,
 mais  pas  son  contenu : "/proc" est un systeme de fichiers "virtuel"
 qui ne contient pas de vrais fichiers, mais  plutot  des  informations
 sur les processus qui tournent sur le systeme.

 Voici  quatre facons de copier un vieux disque sur un nouveau. Ca peut
 prendre du temps, d'autant plus que le disque est gros ou  la  memoire
 peu  importante.   Vous pouvez vous attendre a copier 10Mo par minute,
 ou meme plus.

 Vous pouvez suivre la progression de la copie en utilisant la commande
 "df"  depuis un autre terminal. Si vous etes aussi bon public que moi,
 essayez "watch df" ou "watch ls -l /new-disk" pour voir un rapport mis
 a  jour  toutes  les  deux  secondes  ;  utilisez  _C_t_r_l_-_C pour arreter
 l'affichage. Soyez conscient que la commande "watch"  va  ralentir  la
 copie.

 1.      cp -ax / /new-disk

 Ceci  est la methode la plus simple, mais ne fonctionnera que si votre
 systeme LLiinnuuxx est sur une seule partition. L'option -a preserve autant
 que  faire  se peut le systeme original. L'option -x restreint cp a un
 seul systeme de fichiers. Ceci est necessaire pour  eviter  de  copier
 les repertoires /proc et /new-disk.

 2.  cd / && cp -a `/bin/ls -1A | egrep -v "^new-disk$|^proc$"` /newdisk

 Ceci  va  a la racine puis copie tous les fichiers et repertoires sauf
 /proc et /new-disk. Notez que la  premiere  option  apres  ls  est  le
 chiffre "1", et non la lettre "L" !

 Cette commande devrait fonctionner en toutes circonstances.

 3.       (cd / && tar cpf - . --exclude new-disk --exclude proc) | (cd
          /new-disk && tar xpf -)

 (Ecrire cette commande sur une seule ligne)

 Ceci  va dans le repertoire racine, "archive" tout sauf /proc et /new-
 disk, va dans /new-disk et "desarchive" tout la. Notez qu'il  ne  doit
 pas  y avoir de slash ("/") avant ou apres les noms de repertoire dans
 les options --exclude.

 (_N_o_t_e : L'option -l ne marche pas  ici,  puisque  tar  recreerait  les
 repertoires  /proc et /new-disk meme s'il ne copie pas leurs contenus.
 C'est pourquoi l'option -l de tar n'a pas  le  meme  comportement  que
 l'option -x de cp.)

 Cette methode est quelque peu plus lente que les autres.

 4.      cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin
         /tmp /usr /var /new-disk

 (Ecrire la commande sur une seule ligne)

 Le  dernier repertoire, /new-disk, est la destination pour la commande
 cp. Tous les autres repertoires sont les sources.  C'est  pourquoi  je
 copie tous les repertoires listes dans /new-disk.

 Avec  cette  methode, vous faites simplement une liste des repertoires
 que vous voulez copier.  Ici  j'ai  indique  tous  mes  repertoires  a
 l'exception  de  /proc et /new-disk. Si vous ne pouvez utiliser aucune
 des   methodes  pour  une  raison  quelconque,  vous  pouvez  toujours
 utiliser  cette  commande  pour specifier manuellement les repertoires
 que vous voulez copier.

 Avec cette methode seulement, s'il y a des fichiers dans le repertoire
 racine  lui-meme,  vous  avez  besoin  d'une  autre  commande pour les
 copier.  En particulier, ceci est requis avec les DDeebbiiaann et SSllaacckkwwaarree,
 car ces distributions placent des fichiers dans le repertoire racine :

          cp -dp /* /.* /new-disk

 Apres avoir utilise une methode parmi les  quatre,  vous  devez  aussi
 creer le repertoire /proc sur le nouveau disque :

         mkdir /new-disk/proc

 A  ce point, vous pouvez, si vous le voulez, verifier la structure des
 fichiers sur le nouveau disque :

         umount /new-disk
         fsck.ext2 -f /dev/hdb1
         mount -t ext2 /dev/hdb1 /new-disk

 Vous pouvez aussi utiliser le script suivant pour  comparer  les  deux
 disques, et vous assurer que les fichiers ont ete copies correctement.

 #!/bin/sh
 cd /
 for file in `/bin/ls -1A | egrep -v '^new-disk$|^proc$'`
 do
     find $file -xtype f -exec cmp \{\} /new-disk/\{\} \;
 done

 (SSppeecciiffiicciittee SSllaacckkwwaarree : une installation de  base  n'inclut  pas  les
 commandes  "cmp"  et  "diff",  alors  vous  ne  pourrez pas lancer ces
 scripts si vous avez seulement installe les fichiers de base.)

 Ceci compare seulement les  fichiers  normaux,  et  non  les  fichiers
 speciaux  associes  a  des peripheriques (dans le repertoire /dev, les
 sockets, etc., car la commande cmp ne fonctionne pas correctement avec
 ceux-ci. Je - _N_d_T _l_'_a_u_t_e_u_r - serais interesse par toute suggestion sur
 le moyen de verifier ces fichiers "speciaux").

 88..  MMeetttteezz aa jjoouurr ""//eettcc//ffssttaabb"

 Si votre nouveau disque  n'a  pas  les  meme  partitions  ou  la  meme
 organisation   que   l'ancien,   modifiez  le  fichier  /etc/fstab  en
 consequence. Souvenez vous que ce fichier se  trouve  actuellement  en
 /new-disk/etc/fstab.

 Assurez  vous  que  les  partitions de disque dans la premiere colonne
 correspondent a l'organisation que vous aurez sur le  nouveau  disque,
 une  fois que l'ancien disque aura ete enleve, et que vous ne monterez
 plus qu'une partition en "/", comme indique dans la seconde colonne.

 99..  PPrreeppaarreezz LLIILLOO pour demarrer le nouveau disque

 C'est le point complique. Je suppose que LILO est installe sur le bloc
 principal  de demarrage (_m_a_s_t_e_r _b_o_o_t _r_e_c_o_r_d_, _M_B_R); ceci semble etre la
 configuration la plus courante.

 Vous voulez installer LILO sur  ce  qui  est  actuellement  le  second
 disque  dur.   Il  est clair que LILO ne peut pas etre _l_a_n_c_e depuis le
 second disque dur; toutefois, la documentation  de  LILO  anticipe  le
 fait  que  vous  vouliez  _i_n_s_t_a_l_l_e_r LILO sur le second disque dur, par
 exemple si le premier disque dur doit etre enleve :

      LILO ne peut etre stocke sur aucun des emplacements suivants :

      - sur le second disque dur. (A moins que, pour des besoins de
      sauvegarde, si le premier disque dur va etre retire ou desactive,
      ou si un autre lanceur, qui est capable de charger les secteurs de
      demarrage d'autres disques, est installe.)

 Toutefois, la documentation n'explique pas la facon  d'installer  LILO
 sur  le second disque dur si le premier va etre retire, et j'ai deduit
 apres de nombreux essais qu'il n'est pas possible d'installer LILO sur
 le MBR du second disque dur et de le faire marcher du premier coup.

 A  la  place,  je  suggere  d'utiliser une disquette de demarrage pour
 demarrer sur le nouveau disque dur la premiere fois.

 Inserez une disquette vide, formatez la, creez y un systeme de fichier
 et montez la :

          fdformat /dev/fd0H1440
          mkfs.ext2 /dev/fd0
          mount -t ext2 /dev/fd0 /mnt

 (DDeebbiiaann  sseeuulleemmeenntt  :  La  commande  "fdformat" n'est pas incluse dans
 l'installation de base chez DDeebbiiaann. Si vous n'avez pas cette commande,
 vous pouvez l'ignorer si la disquette est deja formatee.  Dans ce cas,
 vous devez rechercher les secteurs  defectueux  sur  la  disquette  en
 ajoutant l'option "-c" apres la commande "mkfs.ext2".)

 (DDeebbiiaann  eett  SSllaacckkwwaarree  sseeuulleemmeenntt  :  utilisez  la  commande "fdformat
 /dev/fd0h1440" avec un "h" minuscule)

 copiez tous les fichiers de /boot sur la disquette :

          cp -dp /boot/* /mnt

 (SSllaacckkwwaarree sseeuulleemmeenntt : Copiez le fichier /vmlinuz sur la disquette  de
 boot; utilisez la commande "cp /vmlinuz /mnt".)

 Creez un nouveau fichier /mnt/lilo.conf comme suit :

 boot=/dev/fd0           # Installe LILO sur la disquette.
 map=/mnt/map            # Emplacement du fichier de correspondance.
 install=/mnt/boot.b     # Fichier a copier sur le secteur d'amorce.
 prompt                  # Faire afficher l'invite "LILO boot:" par LILO.
 timeout=50              # Lancer le systeme par defaut apres 5 secondes.
                         # (La valeur est en dixiemes de seconde.)
 image=/mnt/vmlinuz      # Emplacement du noyau Linux sur la disquette.
     label=linux         # Etiquette du systeme Linux.
     root=/dev/hda1      # Emplacement de la racine sur le nouveau disque
                         # dur. Mettre en accord avec votre systeme.
                         # Notez que vous devez utiliser le nom du futur
                         # emplacement, une fois que l'ancien disque aura
                         # ete retire.

 (DDeebbiiaann  sseeuulleemmeenntt  :  Sur  la  ligne "image", utilisez le vrai nom du
 noyau  LLiinnuuxx.   Par   exemple   avec   la   DDeebbiiaann   1.3.1,   utilisez
 "/mnt/vmlinuz-2.0.29".)

 Installez LILO sur la disquette de demarrage :

          /sbin/lilo -C /mnt/lilo.conf

 L'option "-C" dit a "/sbin/lilo" quel fichier utiliser.

 Demontez la disquette :

          umount /mnt

 et lancez la procedure d'extinction du systeme.

 1100..  RReettiirreezz ll''aanncciieenn ddiissqquuee

 Apres  avoir  retire  l'ancien  disque,  n'oubliez pas de modifier les
 cavaliers de configuration du disque,  et  l'information  du  BIOS  en
 rapport avec les changements.

 1111..  RReeddeemmaarrrreezz llee ssyysstteemmee,, iinnssttaalllleezz LLIILLOO sur le nouveau disque

 Redemarrez le systeme depuis la disquette que  vous  venez  de  creer.
 Pour  cela, vous devez modifier la sequence de demarrage de votre BIOS
 en "A: C:"

 Faites tous les changement necessaires dans le fichier  /etc/lilo.conf
 et  lancez  /sbin/lilo pour installer LILO sur le nouveau disque. Avec
 une DDeebbiiaann, assurez vous que la ligne "boot" indique "/dev/hda" plutot
 que "/dev/hda1" ou quelque chose de similaire si vous voulez installer
 LILO sur le secteur d'amorce du disque dur.

 Vous pouvez essayer de redemarrer votre systeme depuis  votre  nouveau
 disque  dur  pour  verifier  que  tout  marche  bien. Si vous avez des
 problemes, vous pouvez toujours utiliser la  disquette  pour  demarrer
 votre systeme.

 1122..  RReemmeerrcciieemmeennttss

 Je  tiens  a  remercier  tout  specialement  le  _D_r  _K_o_n_r_a_d  _H_i_n_s_e_n de
 l'Institut  de  Biologie  structurale  de  Grenoble,  France,  qui   a
 gentiment  agit  comme mon gourou LLiinnuuxx personnel. Merci aussi a _F_r_a_n_k
 _D_a_m_g_a_a_r_d,  _P_a_u_l  _K_o_n_i_n_g,  et  _J_o_s_h  _R_a_b_i_n_o_w_i_t_z,   ainsi   qu'a   _S_c_o_t_t
 _C_h_r_i_s_t_e_n_s_e_n   pour   avoir   attire   mon   attention   sur   quelques
 particularites de la SSllaacckkwwaarree.