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.