G4L (Ghost4Linux) est un outil de clonage de disques et de partitions. Les images disque des systèmes peuvent être compressées et transférées sur un serveur FTP local ou clonées localement. Étant donné qu’on transfère le contenu brut des disques, G4L est agnostique en termes d’OS ou de systèmes de fichiers.
Pour l’historique, G4L est un fork de G4U (Ghost4Unix), un projet basé sur NetBSD qui fonctionne tout aussi bien, même s’il est un peu plus obtus à manipuler.
- Applications pratiques
- Confectionner une clé USB G4L
- Utiliser G4L
- Réduire la taille de l’image
- Cloner un poste de travail Linux
Applications pratiques
Dans mon quotidien professionnel, j’utilise G4L pour deux tâches principalement.
- Sauvegarder « à la louche » le système et les données d’un client avant d’intervenir sur la machine, y compris les PC tournant sous Microsoft Windows.
- Cloner les postes clients Linux d’une salle informatique.
Confectionner une clé USB G4L
En temps normal, l’ISO de G4L est censé être écrit sur un CD. Il est certes possible de confectionner une clé USB amorçable, mais la procédure n’est pas bien documentée et produit des résultats aléatoires suivant la version de G4L.
J’ai décidé de contacter Michael D. Setzer II, le développeur de G4L. Monsieur Setzer est un professeur d’université qui a pris sa retraite en 2017. Il est d’une extrême gentillesse et a répondu en détail à toutes mes questions. Non content de cela, il m’a même envoyé un fichier ISO mis à jour qui peut être directement écrit sur clé USB.
Il ne reste plus qu’à l’écrire sur la clé.
$ sudo dd if=g4l-v0.56alpha95-fc28h.iso of=/dev/sdX
Utiliser G4L
Démarrer sur la clé USB G4L et confirmer le noyau par défaut.
Confirmer la succession de messages explicatifs au démarrage. G4L se connecte au réseau local.
Choisir la disposition du clavier.
Pour utiliser G4L en mode graphique, saisir g4l
à l’écran d’accueil. Notez qu’ici, c’est une bonne idée de retirer la clé USB pour éviter les erreurs de disque, comme cela a pu m’arriver.
On choisira le mode RAW
pour le transfert de l’OS. Ici, le contenu du disque dur est transféré « brut de décoffrage » sans prendre en compte le ou les systèmes de fichiers.
J’utilise un serveur FTP local pour stocker les images Ghost.
On arrive à l’écran principal de G4L.
- Vérifier si l’adresse IP est correctement définie si ce n’est pas déjà fait.
- Renseigner le nom d’hôte ou l’adresse IP du serveur FTP local.
- Renseigner le nom d’utilisateur et le mot de passe pour se connecter au serveur FTP, sous la forme
utilisateur:mot_de_passe
. Attention, l’identifiant et le mot de passe apparaissent en clair dans l’interface. - Sélectionner un nom suffisamment parlant pour l’image disque, par exemple
centos-7.6-server-amandine
ouopensuse-15.1-desktop-bernadette
. - Garder la compression par défaut.
Sélectionner le disque que l’on souhaite transférer.
G4L affiche un résumé des informations pour le transfert.
La durée du transfert est fonction de la taille du disque et de la vitesse du réseau.
Pour récupérer une image Ghost depuis le serveur, on procédera de manière similaire. La seule chose qu’il faudra faire, c’est choisir Restore drive from FTP server
au lieu de Backup drive to FTP server
. Là aussi, on choisira un disque entier pour transférer l’image dessus.
Il ne reste plus qu’à aller boire un café en attendant que l’image Ghost s’écrive sur le disque.
Réduire la taille de l’image
Étant donné que G4L transfère « à la louche » le contenu d’un disque dur bloc par bloc, on imagine bien que les images résultantes sont assez volumineuses. L’astuce pour réduire la taille des images consiste à écrire des zéros sur la partie non utilisée du système. Sur un système Linux installé, on pourra utiliser la commande suivante.
# dd if=/dev/zero of=/0bits bs=20M ; rm -f /0bits
- L’option
bs
signfie blocksize et désigne la taille des bloc écrits sur le disque.
Sur un système Windows, c’est l’utilitaire nullfile.exe
qui permet de réduire l’image du disque.
nullfile-1.02.exe
(32-bits)nullfile-1.01_64bit.exe
(64-bits)
Cloner un poste de travail Linux
J’ai utilisé G4L pour cloner les postes clients de notre lycée local, qui tournent tous sous OpenSUSE Leap 15.1. Le matériel est assez hétéroclite, mais j’ai pris soin de remplacer tous les disques SATA des machines par des disques SSD de taille identique.
Les postes sont tous configurés en authentification centralisée avec les données des utilisateurs rangées dans des partages NFS. J’ai donc pu acheter des SSD d’une taille relativement réduite (60 Go), ce qui offre le double avantage d’être peu coûteux tout en réduisant de façon significative le temps des transferts.
Dans une installation standard d’OpenSUSE, certaines informations relatives au matériel sont codées « en dur » dans la configuration. Il s’agit donc de relever les informations en question pour ensuite les remplacer par quelque chose de plus générique.
Le fichier /etc/fstab
utilise les UUID pour les partitions.
# /etc/fstab
UUID=bec7e62d-0d89-42ae-8a2d-337a7364fc75 / ext4 acl,user_xattr 0 1
UUID=4d64bc79-94ec-414d-a29b-f12accacfa88 /boot ext2 defaults 0 2
UUID=9550e307-ca10-4388-a5a9-5088a68aa04c swap swap defaults 0 0
serveur:/home /home nfs defaults,_netdev,nfsvers=4 0 0
Ici, il faudra trouver les partitions équivalentes en affichant les cibles des liens symboliques dans /dev/disk/by-uuid/
pour ensuite les remplacer dans le fichier.
# /etc/fstab
/dev/sda3 / ext4 acl,user_xattr 0 1
/dev/sda2 /boot ext2 defaults 0 2
/dev/sda4 swap swap defaults 0 0
serveur:/home /home nfs defaults,_netdev,nfsvers=4 0 0
De même, le fichier /etc/default/grub
contient des informations codées « en dur ».
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/disk/by-id/ata-TCSUNBOW_60GB-part4 \ quiet \ mitigations=off"
Là aussi, on va fournir une information plus générique.
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda4 \ quiet \ mitigations=off"
Ne pas oublier de prendre en compte les modifications.
# grub2-mkconfig -o /boot/grub2/grub.cfg
Côté réseau, le fichier /etc/udev/rules.d/70-persistent-net.rules
fournit une interface réseau persistante en fonction de l’adresse MAC de la carte réseau de la machine. Il suffit de supprimer ce fichier, qui sera régénéré à la volée au prochain démarrage.
# rm -f /etc/udev/rules.d/70-persistent-net.rules
Étant donné que les machines de mon réseau sont équipées de cartes vidéo assez hétéroclites – et dont certaines nécessitent une configuration manuelle – il vaut mieux éviter de démarrer en mode graphique par défaut.
# systemctl set-default multi-user.target
Enfin, c’est toujours une bonne idée de tester les performances de son réseau local avant de lancer G4L.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
4 commentaires
Luigi · 9 juillet 2019 à 10 h 35 min
Bonjour,
Comme toujours très intéressant, j’ai utilisé il y a des années Ghost4Linux, puis je suis passé sur clonezilla (utilisé en bootftp) qui permet la création d’images de tout type (avec différente valeur de compression) et la restauration en batch. Il faudrait que je réessaye Ghost4Linux. De votre côté avez-vous déjà testé Clonezila? Bonne journée et merci encore pour tous ces super articles
kikinovak · 9 juillet 2019 à 10 h 44 min
Oui, j’ai sommairement testé Clonezilla. Mais j’ai préféré l’ergonomie de G4L. Différents chemins mènent à Saint-Bauzille-de-Putois.
Benoît Boudaud · 9 juillet 2019 à 12 h 29 min
Bonjour,
Merci pour cet article intéressant qui me fait découvrir G4L. Je m’en vais de ce pas le tester.
Benoît
tenek · 15 mars 2020 à 11 h 58 min
bonjour
Merci pour cet article fort intéressant, bon je vais déjà essayer d’utiliser la clé, et j’aimerais savoir si à votre connaissance, G4L peut être utilisé pour cloner une installation linux d’un disque dur classique à un ssd m.2 (les deux disques sur la même machine) « à la volée », c’est à dire sans passer par un enregistrement intermédiaire ?
Merci !