Ceci est valable pour un ordinateur GNU/Linux installé sans UEFI, ce qui nous arrange puisque nous préférons utiliser du matériel reconditionné et qu'il est encore possible de s'en passer.
L'idée est de cloner un disque HDD de 500GB vers un disque SSD de 240GB à condition qu'il y moins de 240GB d'utilisés sur le disque d'origine. C'est souvent le cas pour des ordinateurs utilisés dans un bureau parce que la plupart des données sont sur un serveur et que les disques d'origines contiennent principallement le système d'exploitation, les applications et peut-être l'un ou l'autre profile utilisateur·ice dans /home
.
Attention cela fonctionne pour des disques qui ont été installés sans UEFI et donc sur du matériel qui supporte encore des BIOS plus anciens (legacy).
Toutes les commandes sont à faire avec les droits de root
.
Sur l'ordinateur de destination
On part du principe qu'un ordinateur plus récent, équipé d'un disque SSD de 240GB permet de brancher l'ancien disque de 500GB. En 2022, c'est tout à fait possible en SATA et au pire, il faut peut-être prévoir de mettre le vieux disque HDD dans un boitier USB externe et faire la procédure en utilisant un port USB au lieu d'un port SATA.
Booter avec un clé UBS
Nous utilisons System Rescue parce qu'il est basé sur Archlinux et qu'il contient l'outil arch-chroot
dont nous aurons besoin.
De plus, en démarrant le PC, on peut choisir de charger l'OS dans la RAM, ce qui permet de libérer la clé USB et de faire d'autres ordinateurs en parallèle sans avoir besoin d'une clé USB bootable par machine.
Donc, au démarrage, il faut choisir l'option copy to ram
.
Partitionner le nouveau disque
L'idée ici est d'avoir une partition racine /
qui contiendra tout le système et une seconde partition plus petite pour en faire une swap
.
Avec les deux disques branchés dans la machine.
Bien identifier le nouveau SSD de 240GB et l'ancien HDD de 500GB.
# lsblk -fs
Et partitionner le nouveau disque, dans notre cas il s'appelle /dev/sdb
mais ça pourrait être différent pour vous.
Ne vous trompez pas de disque !
La commande fdisk
se gère avec des commandes comme o, n, p, t, a, w
mais vous comprendrez dés que vous aurez exécuté fdisk /dev/sdX
(ou X est votre nouveau disque SSD).
# fdisk /dev/sdb
o (vire tout)
n p enter -10G
n p enter enter
t 2 82
a 1
w
Formater et créer une swap
Les deux partitions ayant été créés, il faut maintenant formater la première (en ext4 dans notre cas) et créer une swap
sur la seconde.
# mkfs.ext4 /dev/sdb1
# mkswap /dev/sdb2
Monter les deux disques
Maintenant, l'ancien disque HDD et le nouveau SSD sont utilisables et nous pouvons les monter pour avoir accès à leur système de fichier.
# mkdir /vieudisk
# mkdir /newdisk
# mount -o ro /dev/sda1 /vieudisk
# mount /dev/sdb1 /newdisk
Recopier tout le système
Et ensuite, copier tout le système, les applications, les données, les journeaux, etc. de l'ancien disque vers le nouveau avec la commande rsync
.
# rsync -av /vieudisk/ /newdisk/
Finaliser le travail sur le nouveau disque
Nous allons activer la swap
pour que l'utilitaire genfstab
que nous exécuterons puisse l'identifer et l'inscrire dans la fstab
.
# swapon /dev/sdb2
# genfstab -U /newdisk/ > /newdisk/etc/fstab
Et maintenant nous pouvons installer le secteur d'amorçage avec grub-install
et arch-chroot
pour quitter le système de fichier de System Rescue et utiliser le système de fichier du nouveau disque SSD. Le kernel
permet de changer de racine lorsqu'on lui demande, ce qui dans le jargon porte le doux nom de chrooter
le système en cours de fonctionnement.
# arch-chroot /newdisk
# export PATH=/bin:/sbin:/usr/bin:/usr/sbin
# grub-install /dev/sdb # ou si cela ne fonctionne pas, essayez la commande suivante
# grub-install --boot-directory=/newdisk/boot/ /dev/sdb
# update-grub
Et tant que nous sommes sur le nouveau système avec notre kernel chrooté
, nous en profitons pour activer fstrim
qui a la responsabilité de libérer les blocks du disque SSD lorsque des données seront supprimées.
# systemctl enable fstrim.timer
Et pour terminer, nous utilisons sync
pour demander au kernel
de terminer et clôturer les oppérations d'écritures sur les disques, cela nous assure qu'il n'y a pas encore des oppérations en attente dans le cache et cela évite la corruption de données. Et nous pouvons éteindre l'ordinateur avec poweroff
.
# sync
# poweroff
Enlever le vieux disque et démarrer
Il reste à déconnecter l'ancien disque HDD de la machine et l'allumer.
Si la distribution GNU/Linux d'origine n'est pas trop vielle et que le noyaux trouve de quoi piloter le matériel de la nouvelle machine, l'ordinateur devrait fonctionner sur ce nouveau matériel.
Voilà ! Nous avons « cloné » un système complet autrement qu'en utilisant, par exemple dd
ou ddrescue
pour faire des copies bit à bit complète, y compris des secteurs non utilisés et/ou gparted
pour redimensionner le disque trop grand (500GB > 240GB).