Après quelques recherches je n’ai trouvé aucun guide simple et efficace pour ça.
La méthode suivante devrait fonctionner pour n’importe quelle distribution Linux (Ubuntu, Debian, Manjaro, Archlinux, Fedora…). Les systèmes source et cible doivent être sur la même architecture processeur (mais un transfert depuis 32bit vers 64bit devrait fonctionner).
Il vous faut:
- 2 clés USB live (ou cds)
- Pour un transfert plus rapide: des bons câbles ethernet (un seul câble entre les 2 ordis suffit), ou un disque usb avec une GROSSE partition ext4. Vous pouvez essayer en Wifi, mais ça risque d’être lent.
1. Démarrer les machines source et cible sur live USB/CD
N’importe quel clé USB ou CD devrait faire l’affaire.
Sur l’ordinateur cible, vous aurez besoin d’un outil pour partitionner votre disque dûr, comme gparted.
rsync est également nécessaire pour le transfert de données : il est inclus dans la plupart des systèmes live.
Exemples de live USB/CDs : Ubuntu, Manjaro
2. Partitionnez votre disque cible
Utilisez un outil comme gparted pour partitionner votre disque cible, avec les mêmes partitions que votre système source (slash, swap, home…).
Je vous recommande d’affecter des LABELs / étiquettes à vos partitions : c’est plus simple que les UUIDs pour la fstab.
3. Monter toutes les partitions sur les 2 machines
Sur les 2 systèmes, ouvrez un terminal root. Pour chaque partition de données (on ignore la swap) :
mkdir /mnt/slash mount /dev/sdaX /mnt/slash
Si vous avez une partition home:
mkdir /mnt/home mount /dev/sdaY /mnt/home
4. Transférer les données (réseau ou usb)
Cette partie peut être complexe. Choisissez la méthode que vous préférez.
Réseau
- Configurez le réseau. Testez la connectivité avec la commande ping.
Le plus simple est de brancher les PCs sur un réseau DHCP (comme la box de votre FAI) pour obtenir des adresses IP automatiques. Si vous reliez les 2 pcs avec un seul cable, vous devrez configurer les IPs avec NetworkManager (ips statiques ou réseau adhoc). - Sur le système source, en root, créez un fichier
/etc/rsyncd.conf
:uid = root gid = root use chroot = no [all] path = /
- Lancez le démon serveur rsync :
rsync --daemon
- Sur le PC cible, pour chaque partition :
rsync -avHX SOURCE_IP::all/mnt/slash/ /mnt/slash/
N’oubliez pas les ‘/’ à la fin des chemins.
-a
pour conserver plusieurs attributs comme propriétaire et permissions,-H
pour conserver d’éventuels liens en dûr,-X
pour conserver les attributs étendus comme setuid. Vous pouvez également ajouter-A
si vous utilisez des acls. L’avantage de rsync, c’est que vous pouvez arrêter et relancer le transfert quand vous voulez.
USB
Préparez un disque USB avec une GROSSE partition ext4.
- Montez la partition USB sur le système source (
mount /dev/sdbX /mnt/usb
) - Pour chaque partition :
rsync -avHX /mnt/slash/ /mnt/usb/slash/
- Démontez (umount), débranchez et remontez le disque USB sur le système cible.
- Pour chaque partition :
rsync -avHX /mnt/usb/slash/ /mnt/slash/
5. Changer la fstab sur le système cible
En tant que root, éditez /mnt/slash/etc/fstab
Pour chaque partition (swap y compris), remplacez le 1er champ avec le nouvel UUID ou LABEL (plus simple avec les LABELs) :
UUID=the-long-uuid
, or LABEL=yourlabel
2 méthode pour obtenir les UUIDs / LABELs :
ls -l /dev/disk/by-uuid/ blkid /dev/sdaX
6. Réinstaller Grub
Nous allons utiliser un chroot (environnement avec racine changée) pour lancer l’install grub à l’intérieur du système migré.
Tout d’abord, monter (bind) les répertoires systèmes requis par grub. Lancer ensuite le chroot :
mount --bind /proc /mnt/slash/proc mount --bind /sys /mnt/slash/sys mount --bind /dev /mnt/slash/dev mount --bind /run /mnt/slash/run chroot /mnt/slash
Enfin, installer grub dans la zone d’amorçage (Master Boot Record) de votre disque dûr, et mettre à jour le fichier de configuration de grub (avec les nouveaux uuids…) :
grub-install /dev/sda update-grub
7. Redémarrer la machine cible
Voila ! Votre système devrait fonctionner sur le nouvel ordinateur.
N’hésitez pas à commenter en cas de problème.
Hello Marc,
Juste quelques remarques, déjà je ne connaissais pas Manjaro comme distribution, je vais y jeter un œil, tu as des retours à faire dessus?
Pour le clone des machines j’avais l’habitude de cloner directement de disque à disque avec la commande dd. Par contre ta méthode comme la mienne risque de poser problème au niveau des modules à charger en fonction des périphériques spécifiques ou par exemple pour passer d’une machine avec un BIOS vers une machine UEFI.
J’ai du me confronter à ce problème pour installer ma nouvelle machine, c’est assez déroutant le nouveau système de partition spécifique.
Manjaro est un peu ce que Ubuntu est à Debian : une distribution orientée utilisateur, mais basée sur ArchLinux.
Le projet est encore un peu jeune, donc pour les novices je conseille tout de même Ubuntu.
Par contre, Manjaro a tous les avantages de ArchLinux : système de paquets, rolling release.
.. en un peu plus stable, car les mainteneurs manjaro attendent un peu avant de pousser certaines maj de paquets critiques pour le système.
Je n’ai jamais été confronté à des problèmes d’UEFI. J’ai migré d’un Laptop Dell latitude vers un thinkpad X1 carbon neuf sans soucis.
En réalité si, j’ai eu le problème une fois sur un laptop samsung : j’ai désactivé l’UEFI dans le BIOS.
Salut Marc,
D’abord, un grand merci pour tes instructions qui m’ont été très utiles.
Je viens de cloner sans aucun problème et via le réseau Fedora 27 (F27)
SOURCE: Dell Optiplex 790 (i3, 2ème génération, HDD)
CIBLE: HP Elitedesk, (i5, 4ème génération, SSD)
J’ai utilisé des clefs USB avec une Version Live de F27. Pour pouvoir me connecter d’une machine à l’autre via le réseau j’ai dû créer des mots de passe pour l’utilisateur root (SOURCE) et ajouter “-e ssh” dans la commande rsync ci-dessous :
# sur la machine SOURCE
# il n’y a par défaut pas de root password dans le système Live de Fedora
: su
: passwd
# sur la machine CIBLE (étant root et non pas liveuser !)
su
rsync -avHX -e ssh SOURCE_IP::all/mnt/slash/ /mnt/slash/
à la place de update-grub* il fallait utiliser
: grub-mkconfig -o /boot/grub/grub.cfg
* https://unix.stackexchange.com/questions/111889/how-do-i-update-grub-in-arch-linux
A ne pas oublier, il faut toujours être root et faire des BACKUP car si on se trompe …