Dans l'école de ma dulcinée, il y a un tas de PC identiques qui leur ont été donnés sans OS. Du coup ils restent inutilisés. Hum, voici un bon moyen de faire entrer un manchot à l'école ! Une fois le premier installé (debian sarge car Xubuntu n'existait pas encore quand j'ai fait mon choix), le mieux est d'en faire une copie et de la dupliquer sur les autres. (on appelle ca un master, ou une procedure de clonage)
Après quelques recherches, mon choix est fait, ce sera à l'aide de g4u, comprenez Ghost For Unix. Ses avantages sont :
  • Loge sur deux disquettes (bah oui y'a pas de lecteur CD sur ces vieux coucous)
  • Copie "brute" du disque
  • Nécessite seulement un serveur ftp accessible
  • Fonctionne pour tous les systèmes de fichiers
  • Une documentation très claire et complète
  • Et bien sur, open source ;) (NetBSD powered)
Bref simplicité est le maître mot de la solution ! Nous allons donc installer proprement un PC, copier son disque vers un serveur ftp puis dupliquer ce disque du serveur ftp vers tous les autres PC (identiques au 1er) vides.

Etape 1 : installer un serveur ftp

La aussi, j'en veux un simple et léger que je ne lancerai qu'à la demande, allons y pour le simple ftpd (sur un serveur dans le reseau) : apt-get install ftpd Pour la config, c'est aussi très simple :
  • créer un utilisateur install
  • l'ajouter dans /etc/ftpchroot
Quand il se loggera sur le serveur, il sera alors directement dans son home directory /home/install et ne pourra en sortir. Pour lancer le serveur : sudo /usr/sbin/in.ftpd -l -l -D -l 2 fois pour logguer les commandes (mode: je veux tout savoir) et -D pour en faire un démon.

Etape 2 : préparer le disque

Pour limiter la taille de l'image créée, il est bon de "nettoyer" l'espace libre. En effet g4u fait une image complète du disque sans se soucier de la présence de données. Donc pour faciliter la compression, nous allons remplir l'espace libre de "vide" : [en tant que root sur la source]
dd if=/dev/zero of=/0bits bs=20971520
rm /0bits
Pour plus d'infos, allez voir la FAQ Vérifiez aussi que vous avez assez de place dans /home/install sur le serveur

Etape 3 : booter g4u et sauvegarder

Premièrement il faut télécharger les deux images de g4u (notez qu'il existe aussi un cd) puis les copier sur deux disquettes. sudo cat g4u-2.1-1.fs > /dev/fd0
sudo cat g4u-2.1-2.fs > /dev/fd0
Note: je suis demandeur d'une commande permettant de verifier la copie autrement qu'en bootant dessus :) Il ne vous reste plus qu'à booter sur la première et à inserer la deuxième quand on vous le demande. Vous avez alors un superbe écran d'aide qui vous donne toutes les commandes utiles !
Si comme moi vous n'avez pas de serveur DHCP, configurez l'adresse ip : ifconfig -a
[regardez le nom de votre interface]
ifconfig ex0 192.168.0.2 netmask 255.255.255.0
ex0 votre interface réseau, 192.168.0.2 l'adresse ip de la source. Attention le clavier est en qwerty. Toujours se référer à la documentation pour plus de détails
Enfin lancez votre sauvegarde du disque complet : uploaddisk 192.168.0.10 debian-ecole.gz avec 192.168.0.10 l'ip de votre serveur ftp et debian-ecole.gz le nom de l'image qui sera créé. Vous entrez alors le mot de passe de l'utilisateur install et c'est parti pour un moment ! A titre d'info, dans mon cas j'ai obtenu ces données : Source : PII 350MHz, 32Mo de RAM, 770Mo de données sur un disque de 4Go Le transfert à duré ~1h et l'image résultante fait 323Mo

Etape 4 : Restaurer et configurer

Pour restaurer l'image, c'est tout aussi simple. Commencez par booter et configurer le reseau comme précédement. Puis la commande magique est : slurpdisk 192.168.0.10 debian-ecole.gz Cette étape est plus rapide, avec la même configuration que ci-dessus, cela m'a pris ~20 minutes. Une fois ceci fait, vous pouvez retirer la disquette et rebooter votre belle machine clonée.
Il nous reste quelques tâches à executer. En effet maintenant vous avez deux machines parfaitement identiques, il faut les differentier un petit peu. Premièrement, le hostname. Pour cela éditez les fichiers /etc/hostname et /etc/hosts. Vous pouvez aussi le changer en live avec la commande : [en tant que root] hostname nouveauNom Malheureusement, cela ne suffit généralement pas, le nom peux aussi être stocké dans la configuration de différentes applications. Pour en trouver toutes les occurences, tapez : rgrep -i ancienNom /etc et remplacez les toutes par le nouveau (attention à la syntaxe).
Vous pouvez aussi tenter la méthode CowBoy : sed -i 's/ancienNom/nouveauNom/g' `rgrep -l ancienNom /etc|xargs` qui devrait tout remplacer sans faire de backup...à vos risques et périls :)
Dans le cas d'une ip statique (ie: sans serveur DHCP) vous devez éditer le fichier /etc/network/interface et remplacer l'adresse ip dans la ligne address. Pour prendre la modification en compte tapez : /etc/init.d/networking restart (Attention, si vous êtes connecté via le réseau, vous allez bien entendu vous faire déconnecter)
Et voila, il ne reste plus qu'a répéter la dernière étape pour chaque PC :)