Ma première idée : utiliser CloneZilla , rassembler un switch 24 ports, une bonne vingtaine de cordons ethernet et trouver une machine disponible pour l'utiliser comme serveur de réplication.
Clonezilla
Clonezilla existe en deux versions: Clonezilla Live et Clonezilla SE (pour Server Edition). La première est prévue pour la sauvegarde et la restauration d'une unique machine et la seconde est faite pour le déploiement massif (notamment en multicast).
Dans la documentation suivante nous générons une image du disque complet de la machine à cloner (nommée master) puis nous la clonons en multicast sur des lots de 13 machines.
Création de l'image disque du master
On utilise Clonezilla live . La création du volume bootable s'effectue avec tuxboot .
Une fois le volume booté, on choisi le mode Clonezilla Live , on précise le langage et l'agencement du clavier puis on Start Clonezilla . Dans notre cas nous avons utilisé le mode device-image qui permet de créer une image du disque entier, pour le servir ensuite avec notre serveur Clonezilla, mis en place à l'étape suivante.
Installation de Clonezilla et configuration
Clonezilla s'appuie sur DRBL (Diskless Remote Boot in Linux) pour permettre le boot PXE . DRBL est à l'origine conçu comme un serveur pour clients légers, fournissant des noyaux bootables en PXE, il inclut également Clonezilla.
Pour installer Clonezilla, on télécharge puis installe donc DRBL à la main ou on rajoute le dépôt quivabien dans son sources.list.d
et on laisse apt
faire le reste:
# echo -e "\n# DRBL & Clonezilla repositories\ndeb http://drbl.sourceforge.net/drbl-core drbl stable" >/etc/apt/sources.list.d/drbl.list # curl http://drbl.nchc.org.tw/GPG-KEY-DRBL | apt-key add - # aptitude update && aptitude install drbl
À noter que drbl
n'a d'autres dépendances que bash
et perl
, mais il installera certains paquets lors de sa configuration (ouais, c'est sale).
La configuration se passe ensuite d'une manière semblable à un rituel païen : un ensemble de scripts à invoquer dans le bon ordre, et des réponses à fournir à certaines énigmes. Clonezilla est prévu pour fonctionner avec deux interfaces réseaux : une pour le Internet et une pour le réseau local. Pour des raisons pratiques nous faisons fi de cette recommandation, ne gardant la connexion à Internet que lors de la première étape où à lieu le téléchargement des paquets nécessaires. Par la suite on branchera l'interface réseau sur le réseau local, réseau sur lequel il n'y a que les machines destinataires de l'image clonée.
Voici la suite des invocations de scripts réalisées ensuite :
-
# /opt/drbl/sbin/drblsrv -i
Ce script demande s'il faut installer un autre noyau que celui du serveur, s'il faut configurer la console série, quelle architecture utiliser et s'il faut mettre à jour le système du serveur. On répond non ou i686 à toutes les questions. Ensuite, on peut se passer de la connexion à Internet pour se connecter uniquement au réseau local.
-
# /opt/drbl/sbin/drbl4imp
Cette étape ne me semble pas essentielle, ce script
drbl4imp
(lire DRBL for impatients ) configure très rapidement DRBL à des valeurs par défaut qui correspondront à la plupart des usages. -
# /opt/drbl/sbin/drblpush -i
Ici c'est la configuration du serveur DRBL, le script posera des questions sur l'interface réseau à choisir, le nombre de machines à cloner, les plages d'adresses IP à attribuer, etc.
Lancement de Clonezilla
On invoque # /opt/drbl/sbin/dcs
qui nous posera encore quelques questions, notamment sur le mode de clonage (on choisira multicast ) et sur le comportement des clients, afin de générer et lancer la commande que voici :
# /opt/drbl/sbin/drbl-ocs -b -e2 -x -nogui -j2 -y1 -p reboot --clients-to-wait 13 -l fr_FR.UTF8 startdisk multicast_restore lenovo-meego-OEM-img-2011-10-27-11 sda
Correction des bugs de boot
Au lancement du premier lot de clonage, le noyau booté en PXE par les Lenovos ne détectait pas la carte réseau (NIC pour les intimes) et donc bloquait ... parce qu'elle n'était détectée que quelques secondes après que le noyau ai tenté de la configurer. Une solution a été trouvée en modifiant le configuration du noyau servi par le PXE :
-
Ajout de timeouts plus longs sur la détection du réseau dans
/usr/lib/mkpxeinitrd-net/initrd-skel/etc/modules
, deux modifications :sleep_time_after_NIC="5"
etlink_detect_timeout="150"
-
Ajout des modules nécessaires à la détection de l'interface réseau dans
/usr/lib/mkpxeinitrd-net/initrd-skel/linuxrc.conf
:broadcom tg3 libphy
-
Création de l'
initrd
servi en PXE :# mkpxeinitrd-net
La morale de l'histoire
Le clonage d'un lot à proprement parler prenait moins de 10 minutes. L'ensemble des opérations (incluant déballage, installation des ultraportables autour du switch, rangement de ces derniers une fois le clonage terminé) nous a donc prit 7 bonnes heures, plus le temps de faire la chasse aux bugs et de domestiquer Clonezilla. Sans oublier ensuite de décoller le honteux sceau « Windows 7 » sur les machines fraîchement libérées et de réaliser que les Ghosts appartiennent au passé.