Le but de cet article et de présenter une méthodes pour cloner un poste sous Ubuntu Edgy et ainsi obtenir plusieurs machines identiques.
L’intérêt c’est de gagner du temps par rapport à une installation depuis zéro.
Nous appelerons le poste d’origine A et le poste destination B.
Pour commencer, il nous faut deux CD d’installation de la Ubuntu Edgy. Nous allons donc démarrer les postes A et B sur les CD d’installation de la Edgy.
Le partitionnement
Sur le poste B, nous allons commencer par partitionner le disque comme sur le poste A.
Pour cela, il nous faut lancer gparted ce que l’on peut faire avec Alt-F2 puis la commande suivante :
gksu gparted
Dans mon cas, le poste A est composé d’une partition de Swap de 1 Go puis d’une partition de donnée qui correspond à la racine et prend tout le reste du disque.
Si la taille des partitions n’est pas identique entre A et B, ce n’est pas un problème. Pareil pour la disposition des partitions mais dans ce cas, il faudra adapter les commandes suivantes.
Formatage de la partition racine
Pour les commandes suivantes, nous aurons besoin d’un terminal sous le compte root sur la machine A comme la B. On peut en ouvrir un avec la commande gksu gnome-terminal après un Alt-F2.
Sur le poste B, la partition racine s’appele hda2 dans mon cas. Il faut donc la formatter (ici en Ext3) :
mkfs.ext3 /dev/hda2
Transfert des données entre A et B
Maintenant, nous allons monter la partition hda2 dans /mnt/hda2 et nous allons faire cela sur la machine A et sur la machine B :
mkdir /mnt/hda2
mount /dev/hda2 /mnt/hda2
Le dossier /mnt/hda2 du poste A contient la racine du système Ubuntu alors que celui de B ne contient rien (à part lost+found).
Sur le poste A, nous allons installer openssh-server. Pour cela, nous allons passer par synaptic qui est accessible dans le menu Système > Administration > Gestionnaire de paquets Synaptic puis installer le paquet openssh-server (ATTENTION : il est nécessaire d’avoir une connexion Internet pour faire cela).
Toujours sur le poste A, nous allons définir un mot de passe pour le compte root. Dans notre terminal root (lancé avec gksu), taper la commande suivante :
passwd
Maintenant, avant toute chose, nous devons nous assurer que les postes A et B sont tout les deux en réseau et ont bien une adresse IP. Si ce n’est pas le cas, faire ne nécessaire.
Enfin, sur le poste B, nous allons utiliser rsync et ssh pour transférer les données. Nous le ferons à l’aide de la commande suivante (IP de A : 192.168.0.1, IP de B : 192.168.0.2) :
rsync -ar -e ssh root@192.168.0.1:/mnt/hda2 /mnt/
Les identifiants de partition
Pour reconnaitre ses partitions, la Ubuntu utilise un système de marquage les UUID. Pour que la Ubuntu retrouve ces partitions, nous allons remettre le bon UUID sur la partition racine, nous devons le récupérer dans le fichier /mnt/hda2/etc/fstab. Une fois ce numéro en main, nous pouvons utiliser la commande suivante (a remplacer par votre UUID) :
tune2fs -U 97a79017-efe2-4a3b-b244-7562e6a5eec9
Nous allons aussi formater la partition de Swap. Le formatage doit nous retourner un UUID généré :
mkswap /dev/hda1
Une fois le UUID de la partition de Swap généré, nous pouvons modifier le fichier /mnt/hda2/etc/fstab pour y mettre le nouveau UUID correspondant au Swap.
Les interfaces réseau
La Ubuntu utilise les adresses MAC des cartes réseau pour retrouver les interfaces réseau (eth0, eth1...). Cette correspondance ce trouve dans le fichier /mnt/hda2/etc/iftab.
Il est donc nécessaire de récupérer la liste des interfaces réseau ainsi que leur adresse MAC. Vous pouvez faire cela à l’aide de la commande suivante :
ip link show
Editez alors le fichier iftab pour mettre les bonnes adresses MAC.
Le boot loader
Normalement, le premier secteur du disque (la MBR) contient le code qui sert à démarrer le système d’exploitation. Dans le cas de la Ubuntu, il s’agit de Grub qui se charge de cette tâche et propose si nécessaire le choisir le système à lancer.
Comme notre machine B est "vierge", il est nécessaire de réinstaller la MBR. Nous pouvons faire cela à l’aide des commandes suivantes :
mount -t proc none /mnt/hda2/proc
mount -o bind /dev /mnt/hda2/dev
chroot /mnt/hda2
grub-install /dev/hda
exit
umount /mnt/hda2/proc
umount /mnt/hda2/dev
Clonage fini
Et voilà, nous venons de dupliquer une installation de Ubuntu. Il ne reste plus qu’à démonter /mnt/hda2 sur A et B et redémarrer la machine sans le CD d’installation :
umount /mnt/hda2