<!--                    Mini Howto  Hard disk upgrade

            Auteur :  Yves Bellefeuille (yan@ottawa.com) 
        Traducteur :  Eric Cano (eric.cano@cern.ch)
-->
<!doctype linuxdoc system>
<article>

<title> Hard Disk Upgrade Mini How-To
<author> Yves Bellefeuille, <tt/<htmlurl url="mailto:yan@ottawa.com"
 name="yan@ottawa.com">/ <newline>
traduction Eric Cano, <tt/<htmlurl url="mailto:Eric.Cano@cern.ch"
 name="Eric.Cano@cern.ch">/
<date> Version 1.0, 31 janvier 1998, traduction mars 1998

<abstract>
Comment copier un syst&egrave;me <bf/Linux/ d'un disque dur &agrave; un autre
</abstract>

<sect> Introduction

<p>
R&eacute;cemment, j'ai remplac&eacute; mon petit disque dur de 249 Mo 
par un disque plus grand. Je voulais transf&eacute;rer mon <bf/Linux/ 
entier, <tt/LILO/ inclus, de l'ancien au nouveau disque. 
Voici comment je l'ai fait.

<p>
Dans les explications qui suivent, j'utilise <sq><tt>/dev/hda</tt></sq> 
pour d&eacute;signer mon <sq>ancien</sq> disque, 
<sq><tt>/dev/hda1</tt></sq> d&eacute;signe mon ancienne partition 
<bf/Linux/. 
<sq><tt>/dev/hdb</tt></sq> d&eacute;signe le nouveau disque, 
et <sq><tt>/dev/hdb1</tt></sq> la nouvelle partition <bf/Linux/.

<p>
Je suppose donc que <bf/Linux/ est sur la premi&egrave;re partition 
du premier disque. 
Adaptez ceci &agrave; votre propre configuration.

<p>
Ce document est bas&eacute; sur mon propre syst&egrave;me, qui fait 
tourner une <bf/Red Hat 4.2/, et j'ai test&eacute; toutes les 
commandes qui suivent sous cette distribution.
Je les ai aussi test&eacute;es sous une <bf/Debian 1.3.1/ 
et une <bf/Slackware 3.3/, et j'indique quelques diff&eacute;rences 
&agrave; prendre en compte si vous utilisez ces distributions.

<p>
Si ces commandes ne marchent pas correctement sous votre syst&egrave;me, 
faites le moi - <em/NdT l'auteur, pas le traducteur/ - savoir, en indiquant 
la version de <bf/Linux/ que vous utilisez.

<sect> Installez les deux disques dans votre syst&egrave;me
<p> 
Comme les syst&egrave;mes modernes peuvent accepter quatre 
p&eacute;riph&eacute;riques "EIDE" sur le contr&ocirc;leur de disque dur, vous ne devriez 
pas avoir de probl&egrave;me pour installer en m&ecirc;me temps les deux 
disques sur votre syst&egrave;me, m&ecirc;me si vous avez d'autres p&eacute;riph&eacute;riques 
EIDE. Les disques durs et les lecteurs de CD-ROM sont des p&eacute;riph&eacute;riques 
EIDE typiques. Les lecteurs de disquettes et de bandes sont 
connect&eacute;s le plus souvent sur le contr&ocirc;leur de disquettes 
plut&ocirc;t que sur le contr&ocirc;leur de disque dur.

<p>
Les contr&ocirc;leurs SCSI sont plus souples et peuvent accepter sept p&eacute;riph&eacute;riques. 
Si vous &ecirc;tes assez chanceux (et riche) pour avoir un contr&ocirc;leur SCSI, 
vous savez sans doute d&eacute;j&agrave; cela, et vous savez probablement 
lesquels, parmi vos p&eacute;riph&eacute;riques, sont SCSI ! Pour plus d'information, 
voyez le 
<url url="http://www.freenix.fr/linux/HOWTO/SCSI-HOWTO.html" 
name="SCSI How-To">.

<p>
M&ecirc;me les syst&egrave;mes les plus vieux peuvent accepter deux p&eacute;riph&eacute;riques 
sur le contr&ocirc;leur de disque dur, donc vous pouvez toujours installer 
deux disques en m&ecirc;me temps. Toutefois, si vous avez un autre p&eacute;riph&eacute;rique
install&eacute; en plus de votre disque dur, (par exemple, si vous avez
un disque dur et un CD-ROM) vous devrez retirer l'autre p&eacute;riph&eacute;rique pour 
pouvoir installer le nouveau et l'ancien disque dur en m&ecirc;me temps.

<p>
Vous devez configurer les disques comme "ma&icirc;tre" ou "esclave" en 
pla&ccedil;ant les cavaliers de fa&ccedil;on appropri&eacute;e. 
Vous trouverez souvent des informations sur leur configuration 
sur les disques eux m&ecirc;mes ; sinon, consultez les manuels ou 
les fabricants de vos disques.

<p>
Vous devez aussi informer le BIOS de la pr&eacute;sence des disques 
et de leur "g&eacute;om&eacute;tries". En g&eacute;n&eacute;ral
vous entrez dans le Setup du BIOS en pressant une touche durant 
le d&eacute;marrage du syst&egrave;me. Voil&agrave; la marche &agrave; 
suivre avec quelques BIOS courants :

<descrip>
<tag/American Megatrends (AMI)/
Touche <em/Suppr/ pendant l'autotest de d&eacute;marrage.

<tag/Award/
<em/Ctrl-Alt-Echap/

<tag/Compaq/ Touche <em/F10/ apr&egrave;s que le carr&eacute; soit 
apparu dans le coin en haut &agrave; droite de l'&eacute;cran &agrave;
la mise en route.

<tag/Dell/
<em/Ctrl-Alt-Entr&eacute;e/

<tag/DTK/
Touche <em/Echap/ pendant l'autotest de d&eacute;marrage.

<tag>IBM PS/2</tag>
<em/Ctrl-Alt-Suppr/, puis <em/Ctrl-Alt-Inser/ quand le curseur est
dans le coin en haut &agrave; droite de l'&eacute;cran.

<tag/Phoenix/
<em/Ctrl-Alt-Echap/, ou <em/Ctrl-Alt-S/, ou <em/Ctrl-Alt-Entr&eacute;e/


<tag/Autres.../
De nombreux autres syst&egrave;mes ont besoin d'une disquette 
d'<em/installation/ ou de <em/r&eacute;f&eacute;rence/

</descrip>

<p>
(Je - <em/NdT : l'auteur/ - suis int&eacute;ress&eacute; par des 
informations 
sur les autres BIOS pour les inclure dans cette liste.)

<p>
Red&eacute;marrez le syst&egrave;me et loguez-vous <tt/root/.

<sect>
D&eacute;montez les partitions non-<bf/Linux/

<p>
Certains aiment monter les partitions d'autres syst&egrave;mes 
d'exploitation (<bf/DOS/, <bf/Windows/, <bf>OS/2</bf>, etc.)
pour pouvoir les utiliser sous <bf/Linux/. Ces partitions devraient
&ecirc;tre cr&eacute;&eacute;es et copi&eacute;es sous leur propre
syst&egrave;me d'exploitation, et vous devriez les d&eacute;monter
avant de copier votre partition <bf/Linux/. Par exemple, si vous avez
une partition mont&eacute;e en <tt>/dos</tt>, vous devez la 
d&eacute;monter avec cette commande :
<verb>
        umount /dos
</verb>
Notez que la commande est "<tt/umount/", avec le premier "n" qui manque
par rapport au mot "<em/unmount/" <em/- NdT "d&eacute;monter" en anglais/.

<sect>
Partitionnez le nouveau disque

<p>
Utilisez la commande :
<verb>
        fdisk /dev/hdb
</verb>
pour partitionner le nouveau disque.

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

<p>
Si votre disque a plus de 1024 cylindres, voyez le
<url url="http://www.freenix.fr/linux/HOWTO-vo/mini/Large-Disk"
name="Large Disk Mini How-To">. En bref, vous devriez installer 
tous les fichiers requis pour d&eacute;marrer <bf/Linux/ dans les
1024 premiers cylindres.
Une fa&ccedil;on de s'en assurer est de cr&eacute;er une petite
partition (1Mo ou 2Mo) juste pour le r&eacute;pertoire <tt>/boot</tt>
au d&eacute;but du disque. (<bf/sp&eacute;cificit&eacute; Slackware/ :
comme le noyau est plut&ocirc;t en <tt>/vmlinuz</tt> qu'en <tt>/boot/vmlinuz</tt>,
vous devez mettre les r&eacute;pertoires <tt>/</tt> et <tt>/boot</tt>
dans cette partition.)

<p>
Les partitions pour les syst&egrave;mes autres que <bf/Linux/ devraient
&ecirc;tre cr&eacute;&eacute;es en utilisant leur propre <tt/fdisk/ plut&ocirc;t
que celui de <bf/Linux/.

<sect> Formatez le nouveau disque.

<p>
Utilisez la commande suivante pour formater le nouveau disque :
<verb>
        mkfs.ext2 /dev/hdb1
</verb>

Pour rechercher les mauvais blocs (d&eacute;fauts physiques) sur le disque, ajoutez 
l'option <tt/-c/ juste avant "<tt>/dev/hdb1</tt>".

(<em/Note :/ Contrairement &agrave; ce qu'indiquent les pages de manuel, la commande
"<tt>mkfs -t ext2 /dev/hdb1</tt>" ne recherche pas les blocs d&eacute;fectueux,
sous aucune de la <bf/Red Hat/, <bf/Debian/ ou <bf/Slackware/.) 


<sect> Montez le nouveau disque

<p>
Cr&eacute;ez un r&eacute;pertoire l&agrave; o&ugrave; vous monterez le
nouveau disque, par exemple <tt>/new-disk</tt>, et montez le :
<verb>
        mkdir /new-disk
        mount -t ext2 /dev/hdb1 /new-disk
</verb>

<sect> Copiez les fichiers de l'ancien disque au nouveau

<p>
Il faut reproduire compl&egrave;tement la structure du disque, liens inclus.

<p>
Toutefois, il ne faut <em/pas/ copier le r&eacute;pertoire <tt>/new-disk</tt>, 
puisque &ccedil;a 
reviendrait &agrave; recopier le nouveau disque sur lui-m&ecirc;me !

<p>
De plus, il faut copier le r&eacute;pertoire <tt>/proc</tt> sur le nouveau 
disque, mais pas son contenu : "<tt>/proc</tt>" est un syst&egrave;me de fichiers 
"virtuel" qui ne contient pas de vrais fichiers, mais plut&ocirc;t des informations
sur les processus qui tournent sur le syst&egrave;me.

<p>
Voici quatre fa&ccedil;ons de copier un vieux disque sur un nouveau. &Ccedil;a peut prendre 
du temps, d'autant plus que le disque est gros ou la m&eacute;moire peu importante.
Vous pouvez vous attendre &agrave; copier 10Mo par minute, ou m&ecirc;me plus.

<p>
Vous pouvez suivre la progression de la copie en utilisant la commande "<tt/df/"
depuis un autre terminal. Si vous &ecirc;tes aussi bon public que moi, essayez
"<tt/watch df/" ou "<tt>watch ls -l /new-disk</tt>" pour voir un rapport mis &agrave; jour
toutes les deux secondes ; utilisez <em/Ctrl-C/ pour 
arr&ecirc;ter l'affichage. Soyez conscient que la commande "<tt/watch/"
va ralentir la copie.
<verb>

1.      cp -ax / /new-disk
</verb>
<p>
Ceci est la m&eacute;thode la plus simple, mais ne fonctionnera que si votre 
syst&egrave;me <bf/Linux/ est sur une seule partition. L'option <tt/-a/ pr&eacute;serve
autant que faire se peut le syst&egrave;me original. L'option <tt/-x/ restreint <tt/cp/
&agrave; un seul syst&egrave;me de fichiers. Ceci est n&eacute;cessaire pour &eacute;viter 
de copier les r&eacute;pertoires <tt>/proc</tt> et <tt>/new-disk</tt>.
<verb>

2.  cd / && cp -a `/bin/ls -1A | egrep -v "^new-disk$|^proc$"` /newdisk
</verb>
<p>
Ceci va &agrave; la racine puis copie tous les fichiers et 
r&eacute;pertoires sauf <tt>/proc</tt> et <tt>/new-disk</tt>. Notez que la 
premi&egrave;re option apr&egrave;s ls est le chiffre "1", et non la lettre
"L" !
<p>
Cette commande devrait fonctionner en toutes circonstances.
<verb>

3.       (cd / && tar cpf - . --exclude new-disk --exclude proc) | (cd
         /new-disk && tar xpf -)
</verb>
<p>
(Ecrire cette commande sur une seule ligne)
<p>
Ceci va dans le r&eacute;pertoire racine, "archive" tout sauf 
<tt>/proc</tt> et <tt>/new-disk</tt>, va dans <tt>/new-disk</tt> et 
"d&eacute;sarchive" tout l&agrave;. Notez qu'il ne doit pas y avoir de 
slash ("/") avant ou apr&egrave;s les noms de r&eacute;pertoire 
dans les options <tt/--exclude/.

<p>
(<em/Note/ : L'option <tt/-l/ ne marche pas ici, puisque <tt/tar/ 
recr&eacute;erait les r&eacute;pertoires <tt>/proc</tt> et <tt>/new-disk</tt>
m&ecirc;me s'il ne copie pas leurs contenus. C'est pourquoi l'option <tt/-l/
de <tt/tar/ n'a pas le m&ecirc;me comportement que l'option <tt/-x/ 
de <tt/cp/.)
<p>
Cette m&eacute;thode est quelque peu plus lente que les autres.
<verb>

4.      cp -a /bin /boot /dev /etc /home /lib /lost+found /mnt /root /sbin
        /tmp /usr /var /new-disk
</verb>
<p>
(Ecrire la commande sur une seule ligne)
<p>
Le dernier r&eacute;pertoire, <tt>/new-disk</tt>, est la destination
pour la commande <tt/cp/. Tous les autres r&eacute;pertoires sont les 
sources. C'est pourquoi je copie tous les r&eacute;pertoires list&eacute;s dans 
<tt>/new-disk</tt>.
<p>
Avec cette m&eacute;thode, vous faites simplement une liste des r&eacute;pertoires que 
vous voulez copier. Ici j'ai indiqu&eacute; tous mes r&eacute;pertoires &agrave;
l'exception de <tt>/proc</tt> et <tt>/new-disk</tt>. Si vous ne pouvez utiliser
aucune des  m&eacute;thodes pour une raison quelconque, vous pouvez toujours utiliser 
cette commande pour sp&eacute;cifier manuellement les r&eacute;pertoires que vous voulez
copier.
<p>
Avec cette m&eacute;thode seulement, s'il y a des fichiers dans le r&eacute;pertoire
racine lui-m&ecirc;me, vous avez besoin d'une autre commande pour les copier.
En particulier, ceci est requis avec les <bf/Debian/ et <bf/Slackware/, car ces 
distributions placent des fichiers dans le r&eacute;pertoire racine :
<verb>
         cp -dp /* /.* /new-disk
</verb>
<p>
Apr&egrave;s avoir utilis&eacute; une m&eacute;thode parmi les quatre,
vous devez aussi cr&eacute;er le r&eacute;pertoire <tt>/proc</tt> sur le nouveau 
disque :
<verb>
        mkdir /new-disk/proc
</verb>
<p>
A ce point, vous pouvez, si vous le voulez, v&eacute;rifier la structure des fichiers sur le 
nouveau disque :
<verb>
        umount /new-disk
        fsck.ext2 -f /dev/hdb1
        mount -t ext2 /dev/hdb1 /new-disk
</verb>

<p>
Vous pouvez aussi utiliser le script suivant pour comparer les
deux disques, et vous assurer que les fichiers ont &eacute;t&eacute; 
copi&eacute;s correctement.

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

<p>
(<bf/Sp&eacute;cificit&eacute; Slackware/ : une installation de base n'inclut
pas les commandes "<tt/cmp/" et "<tt/diff/", alors vous ne pourrez pas lancer ces scripts 
si vous avez seulement install&eacute; les fichiers de base.)
<p>
Ceci compare seulement les fichiers normaux, et non les fichiers sp&eacute;ciaux
associ&eacute;s &agrave; des p&eacute;riph&eacute;riques (dans le r&eacute;pertoire
<tt>/dev</tt>, les sockets, etc., car 
la commande cmp ne fonctionne pas correctement avec ceux-ci. Je - <em/NdT l'auteur/ -
serais int&eacute;ress&eacute; par toute suggestion sur le moyen de v&eacute;rifier
ces fichiers "sp&eacute;ciaux").

<sect> Mettez &agrave; jour "<tt>/etc/fstab</tt>"
<p>
Si votre nouveau disque n'a pas les m&ecirc;me partitions ou la m&ecirc;me organisation
que l'ancien, modifiez le fichier <tt>/etc/fstab</tt> en 
cons&eacute;quence. Souvenez vous que ce fichier se trouve actuellement
en <tt>/new-disk/etc/fstab</tt>.
<p>
Assurez vous que les partitions de disque dans la premi&egrave;re colonne 
correspondent &agrave; l'organisation que vous aurez sur le nouveau 
disque, une fois que l'ancien disque aura &eacute;t&eacute; 
enlev&eacute;, et que vous ne monterez plus qu'une partition en 
"<tt>/</tt>", comme indiqu&eacute; dans la seconde colonne.

<sect>
Pr&eacute;parez <tt/LILO/ pour d&eacute;marrer le nouveau disque
<p>
C'est le point compliqu&eacute;. Je suppose que <tt/LILO/ est install&eacute;
sur le bloc principal de d&eacute;marrage (<em/master boot record, MBR/); 
ceci semble &ecirc;tre la configuration la plus courante.
<p>
Vous voulez installer <tt/LILO/ sur ce qui est actuellement le second disque dur.
Il est clair que <tt/LILO/ ne peut pas &ecirc;tre <em/lanc&eacute;/ depuis le
second disque dur;
<!-- - <em/NdT &agrave; moins qu'un autre OS loader ne pointe sur lui/ - -->
toutefois, la documentation de <tt/LILO/ anticipe le fait que vous vouliez <em/installer/
<tt/LILO/ sur le second disque dur, par exemple si le premier disque dur doit &ecirc;tre 
enlev&eacute; :
<verb>

     LILO ne peut &ecirc;tre stock&eacute; sur aucun des emplacements suivants :

     - sur le second disque dur. (A moins que, pour des besoins de 
     sauvegarde, si le premier disque dur va &ecirc;tre retir&eacute; ou d&eacute;sactiv&eacute;,
     ou si un autre lanceur, qui est capable de charger les secteurs de 
     d&eacute;marrage d'autres disques, est install&eacute;.)
</verb>
<p>
Toutefois, la documentation n'explique pas la fa&ccedil;on d'installer <tt/LILO/
sur le second disque dur si le premier va &ecirc;tre retir&eacute;, et j'ai
d&eacute;duit apr&egrave;s de nombreux essais qu'il n'est pas possible d'installer
<tt/LILO/ sur le MBR du second disque dur et de le faire marcher du premier coup.

<p>
A la place, je sugg&egrave;re d'utiliser une disquette de d&eacute;marrage
pour d&eacute;marrer sur le nouveau disque dur la premi&egrave;re fois.

<p>
Ins&eacute;rez une disquette vide, formatez la, cr&eacute;ez y un syst&egrave;me
de fichier et montez la :
<verb>
         fdformat /dev/fd0H1440
         mkfs.ext2 /dev/fd0
         mount -t ext2 /dev/fd0 /mnt
</verb>
<p>
(<bf/Debian seulement/ : La commande "<tt/fdformat/" n'est pas incluse 
dans l'installation de base chez <bf/Debian/. Si vous n'avez pas cette 
commande, vous pouvez l'ignorer si la disquette est d&eacute;j&agrave; format&eacute;e.
Dans ce cas, vous devez rechercher les secteurs d&eacute;fectueux sur la disquette
en ajoutant l'option "<tt/-c/" apr&egrave;s la commande "<tt/mkfs.ext2/".)

<p>
(<bf/Debian et Slackware seulement/ : utilisez la commande "<tt>fdformat /dev/fd0h1440</tt>"
avec un "h" minuscule)

copiez tous les fichiers de <tt>/boot</tt> sur la disquette :
<verb>
         cp -dp /boot/* /mnt
</verb>
<p>
(<bf/Slackware seulement/ : Copiez le fichier <tt>/vmlinuz</tt> sur la disquette de 
boot; utilisez la commande "<tt>cp /vmlinuz /mnt</tt>".)

<p>
Cr&eacute;ez un nouveau fichier <tt>/mnt/lilo.conf</tt> comme suit :
<verb>
boot=/dev/fd0           # Installe LILO sur la disquette.
map=/mnt/map            # Emplacement du fichier de correspondance.
install=/mnt/boot.b     # Fichier &agrave; copier sur le secteur d'amorce.
prompt                  # Faire afficher l'invite "LILO boot:" par LILO.
timeout=50              # Lancer le syst&egrave;me par d&eacute;faut apr&egrave;s 5 secondes.
                        # (La valeur est en dixi&egrave;mes de seconde.)
image=/mnt/vmlinuz      # Emplacement du noyau Linux sur la disquette.
    label=linux         # Etiquette du syst&egrave;me Linux.
    root=/dev/hda1      # Emplacement de la racine sur le nouveau disque
                        # dur. Mettre en accord avec votre syst&egrave;me.
                        # Notez que vous devez utiliser le nom du futur
                        # emplacement, une fois que l'ancien disque aura
                        # &eacute;t&eacute; retir&eacute;.
</verb>

<p>
(<bf/Debian seulement/ : Sur la ligne "image", utilisez le vrai nom du noyau
<bf/Linux/. Par exemple avec la <bf/Debian/ 1.3.1, utilisez "<tt>/mnt/vmlinuz-2.0.29</tt>".)

<p>
Installez <tt/LILO/ sur la disquette de d&eacute;marrage :
<verb>
         /sbin/lilo -C /mnt/lilo.conf
</verb>
<p>
L'option "<tt/-C/" dit &agrave; "<tt>/sbin/lilo</tt>" quel fichier utiliser.

<p>
D&eacute;montez la disquette :
<verb>
         umount /mnt
</verb>
et lancez la proc&eacute;dure d'extinction du syst&egrave;me.


<sect> Retirez l'ancien disque
<p>
Apr&egrave;s avoir retir&eacute; l'ancien disque, n'oubliez pas de modifier
les cavaliers de configuration du disque, et l'information du BIOS en rapport
avec les changements.

<sect> Red&eacute;marrez le syst&egrave;me, installez <tt/LILO/ sur le nouveau disque
<p>
Red&eacute;marrez le syst&egrave;me depuis la disquette que vous venez de cr&eacute;er.
Pour cela, vous devez modifier la s&eacute;quence de d&eacute;marrage de votre BIOS
en "<tt/A: C:/"

<p>
Faites tous les changement n&eacute;cessaires dans le fichier <tt>/etc/lilo.conf</tt>
et lancez <tt>/sbin/lilo</tt> pour installer <tt/LILO/ sur le nouveau disque. Avec une 
<bf/Debian/, assurez vous que la ligne "boot" indique "<tt>/dev/hda</tt>" plut&ocirc;t
que "<tt>/dev/hda1</tt>" ou quelque chose de similaire si vous voulez installer
<tt/LILO/ sur le secteur d'amorce du disque dur.

<p>
Vous pouvez essayer de red&eacute;marrer votre syst&egrave;me depuis votre nouveau disque 
dur pour v&eacute;rifier que tout marche bien. Si vous avez des probl&egrave;mes, vous 
pouvez toujours utiliser la disquette pour d&eacute;marrer votre syst&egrave;me.

<sect>Remerciements
<p>
Je tiens &agrave; remercier tout sp&eacute;cialement le <em/Dr Konrad Hinsen/
de l'Institut de Biologie structurale de Grenoble, France, qui a gentiment
agit comme mon gourou <bf/Linux/ personnel. Merci aussi &agrave; 
<em/Frank Damgaard/, <em/Paul Koning/, et <em/Josh Rabinowitz/, ainsi qu'&agrave;
<em/Scott Christensen/ pour avoir attir&eacute; mon attention sur quelques
particularit&eacute;s de la <bf/Slackware/.

</article>