g4u — Un cloneur d'image système pour PC

Version française de g4u — Harddisk Image Cloning for PCs

Joseph Boiteau

Adaptation française

François-Xavier Detournière

Relecture de la version française

Jean-Philippe Guérard

Préparation de la publication de la v.f.

Version : 2.2.fr.0.3

5 octobre 2006

Historique des versions
Version 2.2.fr.0.314-09-2006JB,FXD
Mises à jour du document (formatage) et relecture
Version 2.2.fr.0.224-07-2006JB
Première publication en français
Version 2.231-05-2006HF

Résumé

Ce document décrit la configuration et l'exploitation du logiciel libre g4u, un programme permettant de sauvegarder, sur un serveur FTP, une image disque de la machine locale. Simple, robuste et efficace, cette application ne manquera pas de séduire bon nombre d'administrateurs.


Table des matières

Qu'est ce que c'est ?
Pourquoi pas une des alternatives existantes ?
Prérequis & téléchargement
L'utiliser
Préparations
Création de l'image
Déploiement de l'image
Copier un disque localement
Copier une partition localement
FAQ et autres détails sur le clonage de disque
Systèmes de fichiers supportés
Systèmes d'exploitations supportés
Matériel supporté
Un mot sur les disques de différentes tailles
Changer le niveau de compression
Liste des disques reconnus
Problèmes avec les images de 2 giga-octets
Pouvez-vous ajouter une fonctionnalité XXX ?
Problèmes de performance réseau
Réduire la taille de l'image
Paramétrer l'IP manuellement
Extraire le noyau g4u
Boot réseau de g4u via PXE
Quel serveur FTP utiliser ?
Aide et rapports d'erreurs
Aide
Rapport d'erreur
Blog
Recompiler depuis les sources
Liens & Ressources (en langue anglaise)
Historique
Copies, licences & donations
[Note]Note

Traduction en français basée sur la version 2.2 de la documentation officielle

g4u (« ghost for unix ») est un système à base NetBSD, amorçable (disquette/cdrom), qui permet de cloner facilement des images disques, permettant ainsi de déployer un même système sur de multiples machines via FTP. Le support amorçable offre 2 options : l'une est de remonter, compressée, l'image d'une machine locale via FTP, l'autre est la restauration via FTP, suivi d'une décompression et d'un remplacement du disque original. La configuration réseau se fait via DHCP. L'exploitation du disque se faisant comme une image, tout système de fichier ou d'exploitation peut être déployé en utilisant g4u. Le clonage des disques et partitions locales est tout aussi facilement possible.

Pour les impatients curieux, quelques captures d'écran sont disponibles :

Ajouté à ça, vous pourriez avoir besoin des éléments suivants :

  • Les images disquettes g4u 2.2 (zippées / non compressées : disquette une, disquette deux et disquette trois)

  • L'image ISO CD g4u 2.2 (zippée / non compressée)

  • Le code source de g4u 2.2

    Les checksums MD5 associés :

    MD5 (g4u-2.2-1.fs) = 195d8e8efe4a5ae30ab9c3f9c4714927
    MD5 (g4u-2.2-2.fs) = b0244439fb3f3826a8915d27fc9008e3
    MD5 (g4u-2.2-3.fs) = aac41da46ee3f3c420eea5cdf45877d6
    MD5 (g4u-2.2.iso) = f0e884c04b332e0b029b1a7b2ed98f2c
    MD5 (g4u-2.2.tgz) = f3e05d5953c4b43f37812362665fcdae
    MD5 (g4u-2.2.fs.zip) = 3de640a7c53704980f416b740512ddf6
    MD5 (g4u-2.2.iso.zip) = 5b0252a83fb432e51d2fbdf3bcc310d8    

D'anciennes versions sont également disponibles :

Vous pouvez aussi télécharger une image d'un de ces miroirs :

  • En utilisant les images disquettes :

    1. Téléchargez les images disquettes, g4u-2.2-1.fs, g4u-2.2-3.fs et g4u-2.2-3.fs ou g4u-2.3.fs.zip, qui contient ces fichiers.

    2. Si vous avez téléchargé le fichier g4u-2.1.fs.zip, décompressez le, vous obtiendrez les 2 fichiers g4u-2.1-1.fs et g4u-2.1-2.fs

    3. Mettez chacune de ces images sur des disquettes distinctes. Sur un système Unix, un simple « cat g4u-2.2-1.fs >/dev/diskette » fera l'affaire (et de même pour -2.fs). Le chemin du lecteur de disquette devrait vous être familier, les chemins courants sont :

      • NetBSD : /dev/fd0a

      • Solaris : /dev/diskette

      • Linux : /dev/fd0

      Il en va de même pour les périphériques USB (clés et autres mémoires flash), mais vous devrez y mettre l'image g4u.fs venant de l'ISO :

      • NetBSD : /dev/sd0d

      • Linux : /dev/sd0

      Si vous utilisez Microsoft Windows ou DOS, utilisez rawrite.exe. Il y a aussi un programme Windows appelé rawr32.zip qui vous le permettra.

  • Utilisation de l'image CDROM de g4u :

    1. Téléchargez l'image CD, g4u-2.2.iso ou g4u-2.2.iso.zip

    2. Si vous téléchargez le fichier g4u-2.1.iso.zip, décompressez le pour avoir g4u-2.1.iso.

    3. Référez vous au manuel de votre logiciel de gravure (Nero, DiskJuggler, WinOnCD, cdrecord, et cætera), pour réussir votre coup. Notez bien que l'image est amorçable.

  • Sur le serveur FTP de votre choix, créez un compte utilisateur appelé install, et protégez-le d'un mot de passe. Vérifiez que l'utilisateur « install » puisse se connecter via ftp.

    Si vous voulez utiliser un compte différent, vous pouvez spécifier login@server pour slurpdisk, uploaddisk, et cætera.

  • Assurez vous d'avoir un service DHCP fonctionnel vous permettant d'accéder par la suite au serveur ftp (name server, netmask, default gateway). Dans le cas contraire vous pourrez toujours faire un paramétrage manuel de l'IP.

Le système utilisant g4u peut avoir des disques de type IDE, SATA, SCSI ou RAID avec de multiples contrôleurs (Adaptec, et cætera). Il en est de même pour bon nombre de cartes PCMCIA, Cardbus, ISA et autres cartes PCI. Jetez un oeil à la configuration du noyau de g4u pour une liste plus complète du matériel supporté.

Pour vous assurer le bon support d'un type matériel, il vous suffit d'amorcer votre système avec g4u et de vérifier avec la commande ifconfig -a que votre carte réseau est listée et donc reconnue, et de même pour les disques avec la commande disks . Dans le cas contraire, un long périple peut vous être nécessaire pour arriver à vos fins... analysez la sortie de dmesg (sous g4u ;touche espace pour faire défiler l'affichage). Si besoin, demandez de l'aide . Voyez la partie « Retour d'erreurs » pour plus d'informations à ce sujet.

Des gens se plaignent de la taille trop importante des images créées par g4u. Ces tailles de fichiers sont normales, elles sont dues au fait que g4u clone tout le disque, tous les blocs, sans se soucier de savoir si ils contiennent une quelconque donnée. Pour différencier un bloc utilisé d'un non utilisé, g4u devrait connaître le système de fichier employé - Windows FAT, Linux Ext2/3/ReiserFS/et cætera, BSD FFS, Solaris UFS, et cætera. Etant donnée la faible capacité d'une disquette, et le nombre d'implémentations nécessaires pour couvrir différents systèmes de fichiers, il est peu probable qu'un tel tri soit ajouté aux fonctionnalités de g4u.

Malgré tout il y a un moyen plutôt simple de contourner le problème : utiliser le système d'exploitation d'origine afin d'optimiser l'occupation du système de fichiers. Il suffit de faire en sorte que les blocs non utilisés / vides ne soient pas remplis de données aléatoires, mais au contraire de valeurs facilement compressibles par g4u. Ceci donnant lieu à des images disques plus petites.

En clair, remplacez les blocs non-utilisés de votre disque avec des octets à 0. Ouvrez un fichier et remplissez-le d'octets à 0 jusqu'à ce que le disque soit plein, puis fermez le fichier et effacez le. Le résultat est que tous les blocs non utilisés contiennent maintenant des données que g4u peut facilement compresser. En toute logique le système d'exploitation marque juste les blocs inutilisés comme 'inutilisés' mais ne modifie en rien leur contenu.

L'utilisation de cette technique sur un disque de 20Go avec un système Solaris 8/x86 de 6Go et le reste en Windows 2000 Workstation a permis de diminuer l'image compressée de ~6Go à ~2Go. Vous imaginez bien sûr le gain de temps au déploiement. :)

Pour effectuer le remplissage des blocs non utilisés avec des octets à 0, il y a plusieurs méthodes, dépendant du système d'exploitation de la machine et des logiciels disponibles :

Lancez l'une de ces commandes avant d'éteindre le système d'exploitation, puis créez une image avec g4u, vous verrez une nette différence de taille d'image.

On m'a demandé comment démarrer depuis le disque dur (en utilisant grub par exemple). L'idée est d'extraire le noyau de la disquette de démarrage, et de l'associer à grub (ou n'importe quel autre bootloader - voyez peut-être avec PXE to netboot g4u). Voici comment extraire le noyau, appelé « netbsd » :

% ( cat g4u-2.2-1.fs | dd bs=512 skip=16 ; \
? cat g4u-2.2-2.fs | dd bs=512 skip=16 \
? ) | tar vxf -
-r--r--r-- 1 feyrer netbsd 53948 Nov 3 23:08 boot
-rw-rw-r-- 1 feyrer netbsd 1479905 Nov 3 23:08 netbsd   

Notez que le noyau à ce niveau (« netbsd ») est toujours compressé, ce qui va très bien à un bootloader comme grub, mais au cas où vous voudriez le décompresser :

% file netbsd
netbsd: gzip compressed data, was "netbsd-INSTALL_G4U", from Unix
% mv netbsd netbsd.gz
% gunzip netbsd.gz
% ls -la netbsd
-rw-rw-r-- 1 feyrer wheel 5523084 Dec 7 18:08 netbsd
% file netbsd
netbsd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped   

Afin de faire un boot réseau de g4u via PXE, vous devrez d'abord extraire le noyau des disquettes , puis suivre les étapes qui décrivent un boot réseau, dit « diskless boot » (sans disquette), voir la documentation NetBSD pour les nombreux moyens de réaliser une telle chose.

Un condensé des étapes nécessaires à g4u est disponible dans les archives, soit en français par Jean-Christophe Guis ou une traduction en anglaise de Steve Clement.

Un autre petit rapport sur Comment configurer une Fedora Core 5 en tant que serveur PXE de Aaron Axelsen est disponible en anglais.

Lorsque vous récupérez ou envoyez des images sur votre serveur FTP et que vous voyez une ligne du style :

553 Cannot send file larger than 4 gigabytes   

vous pouvez être sûr que cette ligne (ou tout autre ligne avec un numéro en entête) vient de votre serveur FTP, et de la même manière, que ce n'est pas g4u qui a un problème mais le serveur FTP.

Quelques programmes connus de serveurs FTP :

  • ftpd(8) de NetBSD qui est disponible sur une installation par défaut.

  • GuildFTPd pour Windows XP.

  • Le service FTP de Microsoft Windows 2000 et 2003 Server (à savoir qu'il existe quelques soucis avec les services FTP des versions MS Windows non serveur.).

  • Le démon vsftp de votre distribution Linux favorite (reconnu fonctionnel sur Fedora 2 et Debian Sarge).

  • Cerberus FTP.

  • Le service FTP de Novell Netware (reconnu fonctionnel sur Netware 6).

  • TYPSoft FTP Server sur une clé USB avec Windows XP.

  • Filezilla Server sur Windows 98SE et XP.

  • Le démon FTP de Mac OS X et Mac OS X Server.

  • (D'autres ? Faites m'en part !).

Voici la liste des éléments permettant d'obtenir de l'aide :

Suivant la mode du moment, j'ai créé un blog g4u pour les gens s'intéressant de près à l'actualité des développements. Celui-ci fait partie de mon blog NetBSD.

Et pour ceux que ça intéresse, il y a aussi le feed RSS de la partie g4u de disponible (en addition au feed RSS complet de mon blog NetBSD ).

G4u est construit sur les bases de la disquette de démarrage NetBSD. Un noyau ainsi qu'une disquette de boot personnalisés, tous deux ramenés à la taille minime de 3 disquettes de 1.44Mo ou un cdrom.

Pour recompiler ces images :

  • Il est à noter que la compilation depuis les sources ne nécessite pas les droits 'root'. Ci-dessous, les actions précédées du prompt « # » sont à exécuter en tant que root, celles précédées de « % » sont les commandes à exécuter en tant que simple utilisateur.

  • Munissez-vous d'une machine i386/PC sous NetBSD 3.0. Tout autre système d'architecture Unix-like devrait faire l'affaire aussi, ceci restant non testé à ma connaissance.

  • Installez mkisofs (contenu dans le package cdrecord), via le paquet de binaires :

    # PKG_PATH=ftp://ftp.NetBSD.org/pub/NetBSD/packages/3.0/i386/All
    # export PKG_PATH
    # pkg_add -v cdrecord

    ou, si vous avez pkgsrc d'installé :

    # cd /usr/pkgsrc/sysutils/cdrecord
    # make install    
  • Récupérez les sources NetBSD-current (~23 mai 2006) dans /usr/src :

    % su
    # mkdir /usr/cvs
    # chown $USER /usr/cvs
    # ln -s cvs/src /usr/src
    # exit
    % cd /usr/cvs
    % env CVS_RSH=ssh cvs -d [email protected]:/cvsroot co -D 20060523 src    
  • Pour être sûr de votre coup, recompilez complètement la version (afin d'exécuter les tests de régression et autres) :

    % ./build.sh -N 1 -U release
  • Rappelez-vous où récupérer le nouveau compilateur - ajustez si nécessaire :

    % setenv T /usr/src/obj.i386/tooldir.NetBSD-3.0-i386/bin    
  • Récupérez les source de g4u 2.2

  • Décompressez-les :

    % cd /usr/src
    % tar plzvxf .../g4u-2.2.tgz    
  • Appliquez les patches :

    % cd /usr/src/sys/dev/ata
    % patch <wd.c.patch-g4u
    % cd /usr/src/sys/dev/scsipi
    % patch <sd.c.patch-g4u
    % cd /usr/src/sys/kern
    % patch <subr_prf.c.patch-g4u    
  • Compilez les images disquettes et ISO de G4U :

    % cd /usr/src/distrib/i386/floppies/g4u
    % $T/nbmake-i386    
  • Après ça, vous devrez trouver les fichiers images « g4u1.fs », « g4u1.fs » et « g4u.iso » dans le répertoire /usr/src/distrib/i386/floppies/g4u :

    % pwd /usr/cvs/src/distrib/i386/floppies/g4u
    % ls -l g4u.*
    -rw-rw-r-- 1 feyrer netbsd 3309568 Nov 3 23:09 g4u.iso
    -rw-rw-r-- 1 feyrer netbsd 1474560 Nov 3 23:08 g4u1.fs
    -rw-rw-r-- 1 feyrer netbsd 1474560 Nov 3 23:08 g4u2.fs    
  • Un tutoriel pour installer M0n0wall avec g4u. Pereyra a fournit les instructions pour installer M0n0wall firewall avec g4u.

  • Récolter les GUIDs / UUIDs afin de procéder à une installation distante (RIS) des comptes utilisateurs. « Une activité coûteuse en terme de temps, et qui de surcroît se veut extrêmement répétitive lorsque vous avez un parc d'un grand nombre de machines, c'est d'avoir à gérer le remplacement des anciennes machines ainsi que de commander des nouvelles. La méthode traditionnelle consiste à noter la MAC adresse et le nom de la machine, envoyer via email les données à quelqu'un d'autre, mettre à jour les données du serveur DHCP, et cætera, et cætera. Ce projet cherche à minimiser le temps d'intervention humain nécessaire à mettre une machine en place. » Et en plus, ceci est basé sur du NetBSD ! :)[le lien du site d'origine (en anglais)].

  • MIDS - g4u avec un menu. Rob Bennett a modifié g4u afin que celui-ci charge du code additionnel depuis un serveur FTP, et d'implémenter une interface graphique (des boîtes de dialogues de type 'curses'). Comme le but premier de g4u est de tenir sur une disquette, cette extension mérite d'y jetter un oeil !

  • La page iR110/150 (sparc64) dd Network Backup : Des gens cherchaient une version UltraSPARC (sparc64) based de g4u. Eh bien messieurs, elle existe : The iR110/150 dd Network Backup Page vous donnera les scripts vous permettant de faire les sauvegardes des disques d'un UltraSPARC sur un serveur NFS distant. Bravo à l'auteur !

  • Yet Another Ghost Installer (YAGI) : La thèse de Daniel Ettle, que l'auteur a supervisé, porte sur un installeur réseau au Toshiba Regensburg Operations.

  • Symantec Ghost. La solution commerciale qui ne faisait pas ce dont j'avais besoin et qui m'a poussé à créer g4u. Essayez-le si vous ne voulez pas d'un système de sauvegarde à images. Et si vous le trouvez trop cher, dites-vous bien que moi-même je ne souhaites pas mourir de faim. :)

Voir l'historique de l'auteur (anglais)

Aucune licence n'est nécessaire, excepté pour le domaine militaire et usages associés, un licence commerciale est disponible, et les donations sont toujours les bienvenues ! Vous pouvez envoyer de l'argent via paypal ou m'acheter un livre depuis ma liste de souhaits Amazon, comme tous les gens qui ont déjà tant donné - Merci beaucoup !

g4u est distribué sous la licence « standard BSD license » :

/*
 * Copyright (c) 1999-2006
 * Hubert Feyrer <hubert CHEZ feyrer POINT de>.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met :
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 * This product includes software developed for g4u by 
 * Hubert Feyrer <hubert CHEZ feyrer POINT de>.
 * 4. Neither the name of the author nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */  

et voici une version française « non-officielle » de la licence BSD :

   Copyright © 1999-2006 Hubert Feyrer <hubert CHEZ feyrer POINT 
   de>. Tous droits réservés.
   
   La redistribution du code source, modifié ou non, sous forme de binaire
   est soumise aux conditions suivantes :
        * Le copyright ci-dessus, la présente liste des conditions et
   l'avertissement qui la suit doivent figurer dans le code source.
        * La documentation et/ou les fichiers accompagnant le code source 
   distribué sous forme de binaire doivent faire apparaître le copyright 
   ci-dessus, la présente liste des conditions et l'avertissement qui la suit.
        * Tout produit incluant tout ou partie du code de ce programme doit
   comporter la mention : Ce produit s'inspire d'un programme développé par
   l'université de Californie Berkeley et ses collaborateurs.
        * Le nom de la dite université, pas plus que ceux de ses collaborateurs,
   ne sauraient être utilisés dans le but de promouvoir ou de légitimer un
   produit dérivé de ce programme sans autorisation écrite préalable à cette
   effet.

    CE PROGRAMME EST FOURNI « TEL QU'EN L'ÉTAT » PAR LES MEMBRES DU CONSEIL 
    D'ADMINISTRATION ET LEURS COLLABORATEURS ET IL N'EST DONNÉ AUCUNE GARANTIE,
    IMPLICITE OU EXPLICITE, QUANT À SON UTILISATION COMMERCIALE, PROFESSIONNELLE 
    OU AUTRE. LES MEMBRES DU CONSEIL D'ADMINISTRATION ET LEURS COLLABORATEURS NE 
    PEUVENT EN AUCUN CAS ÊTRE TENUS POUR RESPONSABLES DE QUELQUE DOMMAGE OU 
    PRÉJUDICE DIRECT, INDIRECT, SECONDAIRE OU ACCESSOIRE (Y COMPRIS LES PERTES
    FINANCIÈRES DUES AU MANQUE À GAGNER, À L'INTERRUPTION D'ACTIVITÉS, OU 
    LA PERTE D'INFORMATIONS ET AUTRES) DÉCOULANT DE L'UTILISATION DU PROGRAMME,
    OU DE L'IMPOSSIBILITÉ D'UTILISER CELUI-CI, ET DONT L'UTILISATEUR ACCEPTE 
    L'ENTIÈRE RESPONSABILITÉ.