Ghost4LinuxG4L (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

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.

G4L

Confirmer la succession de messages explicatifs au démarrage. G4L se connecte au réseau local.

G4L

Choisir la disposition du clavier.

G4L

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.

G4L

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.

G4L

J’utilise un serveur FTP local pour stocker les images Ghost.

G4L

On arrive à l’écran principal de G4L.

  1. Vérifier si l’adresse IP est correctement définie si ce n’est pas déjà fait.
  2. Renseigner le nom d’hôte ou l’adresse IP du serveur FTP local.
  3. 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.
  4. Sélectionner un nom suffisamment parlant pour l’image disque, par exemple centos-7.6-server-amandine ou opensuse-15.1-desktop-bernadette.
  5. Garder la compression par défaut.

G4L

Sélectionner le disque que l’on souhaite transférer.

G4L

G4L affiche un résumé des informations pour le transfert.

G4L

La durée du transfert est fonction de la taille du disque et de la vitesse du réseau.

G4L

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.

G4L

Il ne reste plus qu’à aller boire un café en attendant que l’image Ghost s’écrive sur le disque.

G4L

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.

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.

 


3 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

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.