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/

Répondre à