On 12/15/23 08:48, benoit wrote:
Bonjour,
Je recherche une méthode sûre et facile et un logiciel libre pour
copier un système (Debian) sur un disque plus grand.
Je comprends la question de la manière suivante:
Vous disposez d'un PC (probablement un ordinateur fixe, pas un portable)
sur lequel tourne une Debian. Cet ordinateur a deux disques, qu'on
suppose ici être /dev/sda pour le plus petit (disque source) et /dev/sdb
pour le plus gros (disque cible). Le BIOS ou UEFI voit bien les deux
disques. Vous êtes capable (si besoin était) d'ouvrir le capot de
l'ordinateur et de débrancher (temporairement) chacun de ces deux
disques (par exemple leur câble SATA). Vous avez lu la notice du BIOS ou
UEFI ou de la carte mère. Vous avez confiance dans votre alimentation
électrique (pas de coupure ou d'orage prévu dans la journée), ou bien
vous disposez d'un onduleur et d'une clef USB sur laquelle vous pouvez
télécharger un Debian netinstall. Vous disposez en plus de quelques
clefs USB en bon état (préférentiellement neuves) d'au moins 8Go (et
plutôt plus) chacune.
Il reste de la place (quelques gigaoctets de libre dans une partition
montée donc dans un système de fichier) sur l'ancien disque (sur
/dev/sda). À vérifier avec la commande "/usr/bin/df -h".
Vous connaissez l'usage de la ligne de commande, le mot de passe root,
et cet ordinateur est connecté à Internet de façon fiable.
Systématiquement, vous allez explicitement utiliser la commande
"/usr/bin/sync" ou "/bin/sync" qui vidange les tampons du noyau sur les
disques. Dans certains cas, elle prend une dizaine de secondes. Il faut
la faire très souvent.
Vous avez préalablement sauvegardé les données les plus précieuses (ou
les plus chères) de votre ordinateur. (précaution contre les
catastrophes ou les fautes de frappe), peut être sur un serveur externe
à distance ou sur des clefs USB neuves ou sur un disque externe. Vous
seul savez quelles sont vos données les plus importantes pour vous. Les
commandes à connaître sont /usr/bin/tar et /usr/bin/afio et
/usr/bin/find. Essayez bien sûr "/usr/bin/tar --help" etc.
La première étape est simplement de noter en totalité (sur un cahier, ou
de prendre en photo avec son smartphone) la sortie des commandes
"/sbin/fdisk -l /dev/sda" et "/sbin/fdisk -l /dev/sdb" et le contenu du
fichier /etc/fstab (donc la sortie de "/bin/cat /etc/fstab"); si vous
disposez d'une imprimante, imprimez ces sorties de fdisk et votre
(ancien) fichier /etc/fstab ; il est très utile de noter la sortie de
"/sbin/blkid" sur chacune des partitions visibles par ces commandes. Si
on dispose de clef USB supplémentaire sauvegarder ces sorties sur une
clef, ainsi que votre ancien répertoire /etc .... et peut-être la liste
des paquets installés par "/usr/bin/dpkg -l"
=================
Ensuite, vous définissez sur papier un schéma de partitionnement du
disque cible. A minima en respectant les contraintes suivantes:
1. il faut une petite et première partition de boot réservée de quelques
mégaoctets réservée au BIOS / UEFI. Donc /dev/sdb1 - de nos jours, soyez
généreux et prévoyez par exemple un demi gigaoctet (qui seront
"gaspillées").
2. Je recommande une partition pour la racine et les logiciels systèmes
(/sbin, /bin/, /usr/, /lib/, ....) donc /dev/sdb2 - soyez généreux et
prévoyez large (plus grand que sur le vieux disque /dev/sda). Peut-être
300Go (mais on peut avoir bien moins, au minimum 60Go).
3. Je recommande une partition d'échange (swap) en /dev/sdb3. Prévoyez
large, en particulier pour une machine récente que vous envisagerez
d'améliorer dans un an ou deux par l'achat de barrettes de RAM
supplémentaires, prévoyez une partition plus grande que la mémoire RAM
que vous espérez avoir dans deux ans. La commande /usr/bin/free donne la
mémoire physique actuelle et la taille actuelle de votre zone de swap.
Une heuristique serait de prévoir pour la partition de swap 50% de plus
que la mémoire RAM totale envisagée dans deux ans.
4. Selon l'usage de la machine une ou quelques partitions de données. A
minima une partition pour le futur /home en /dev/sdb4. Il existe des cas
où avoir deux partitions de données est utile voir nécessaire. Par
exemple pour la compilation de nombreux logiciels sources, ou pour le
traitement vidéo ou photo, la sauvegarde périodique (par crontab) de
fichiers importants. Il existe des cas où avoir une seule partition de
donnée est bénéfique.
==========
La deuxième étape est de se fabriquer ou se procurer une clef USB
bootable d'installation Debian netinstall. Par exemple en faisant
wget -v
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.4.0-amd64-netinst.iso
pour obtenir une image ISO d'environ 630Moctets. Ensuite, insérer une
clef USB neuve, la détecter par la commande /usr/bin/dmesg et
/usr/bin/df et notez sur papier quelle est cette clef USB et comment
a-t-elle été montée automatiquement. Je la suppose ici être /dev/sdd. Il
faut d'abord la démonter, par exemple par "/usr/bin/umount /dev/sdd1" et
ainsi de suite. Une fois que la clef a été démontée, on peut en faire
une clef bootable d'installation par la commande "/usr/bin/dd
if=debian-12.4.0-amd64-netinst.iso of=/dev/sdd oflag=sync bs=64
status=progress" qui peut prendre plusieurs dizaines de minutes. Je
conseille un /usr/bin/sync .... (en principe inutile).
On arrête proprement le PC Debian, par exemple par "/sbin/poweroff"
Il est alors temps de se restaurer (un café, un repas). Ensuite on
débranche le secteur, on ouvre le capot de la machine, et on débranche
les câbles sur le vieux disque dur /dev/sda.
Après avoir fermé le capot et rebranché le câble secteur, on redémarre
la machine avec la clef USB d'installation. On installe une Debian
minimale (ou confortable) sur le nouveau disque cible /dev/sdb (qui, vu
de la clef Debian, s'appelle autrement!). ça peut prendre des heures.
Pour reconnaître la partition nouvelle, on y écrit un fichier, par
exemple par une commande "/usr/bin/date > /nouveau-disque" suivi
indispensablement de "/bin/sync".
On arrête proprement la nouvelle Debian. On vérifie explicitement
(plutôt deux fois qu'une) que la nouvelle Debian démarre et s'arrête
convenablement. Et que fdisk y détecte bien le nouveau disque.
On débranche le câble secteur. On ouvre le capot et on rebranche les
câbles de l'ancien disque /dev/sda. On redémarre.
Ayant préalablement lu la notice du PC ou de la carte mère ou de son
BIOS, on paramètre le BIOS ou UEFI pour booter sur le nouveau disque
/dev/sdb ... (qui s'appelle autrement dans le BIOS ou UEFI). On vérifie
que /nouveau-disque existe et contient une date. Sinon, on reboote avec
d'autres paramètres BIOS/UEFI.
On monte les partitions de données du vieux disque source.
J’ai cru comprendre qu’un clonage avec dd ou Clonezilla, va crée des
partitions de même tailles du disque source ver le disque cible.
Mais ce ne peut pas être l'objectif puisque le nouveau disque cible (ici
/dev/sdb) est plus grand que l'ancien disque source (ici /dev/sda).
Les partitions vont laisser une partie du disque cible non
partitionné, qu’il faudra ensuite déplacer et redimensionner avec les
données. Le peu d’expérience que j’ai de cette étape avec Gparted,
c’est que ça prend des heures et que ça n’a pas toujours fonctionné.
Oui, ça prend des heures, et oui, parfois ça échoue.
Il me semble que le plus simple serait de faire l’inverse : créer la
table de partition sur le disque cible avec cfdisk.
Mais après je fais comment pour copier les secteurs d’amorçage, la
partition EFI, les droits d’accès, les liens symboliques etc ?
De mon point de vue on ne recopie que les partitions de données
utilisateurs (/home etc... par deux tar en tube, peut-être tar cf -
/home | tar xf - /home-nouveau) et on prévoit de galérer pendant
plusieurs jours (à réinstaller des paquets utiles, peaufiner des
fichiers de configurations, etc).
Une fois que les données chères sont copiés, on éteint l'ordinateur, on
démonte (au tournevis) le vieux disque. On vérifie à plusieurs reprises
que toutes les données importantes sont présentes. Selon la
confidentialité des données dessus (sur le vieux disque), il peut-être
nécessaire de le casser physiquement au marteau.
Le plus important est de prendre le temps (plusieurs jours), d'être
systématique et de noter sur un cahier toutes les étapes faites et à faire.
Bon courage et bonnes fêtes.
NB: je cherche des partenaires intéressés par le projet logiciel libre
RefPerSys (moteur d'inférences) sur https://github.com/RefPerSys/RefPerSys/
--
Basile Starynkevitch
<bas...@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/