Pré-requis et notions préliminaires:
Le serveur PXE (Preboot eXecution Environment, environnement de démarrage d'ordinateurs en réseau) aura ici pour but de fournir aux postes clients connectés une image ISO bootable de Clonezilla en vue du déploiement/sauvegarde d'images disque.
Le serveur PXE utilise Debian GNU/Linux en tant que système d'exploitation.
Des paquets doivent être installés, le serveur doit donc avoir une connexion Internet lors de sa mise en place.
Par la suite, le serveur peut n'avoir qu'une seule interface réseau configurée comme suit (ceci est un exemple à adapter à votre réseau):
⇒ adresse IP : 192.168.1.1
⇒ netmask : 255.255.255.0 (CIDR = /24)
⇒ broadcast : 192.168.1.255
⇒ network : 192.168.1.0 (réseau privée entre serveur et clients)
⇒ gateway : 192.168.1.1 (le serveur lui-même, aucune importance dans ce cadre)
⇒ nameserver : 127.0.0.1 (le serveur lui-même, aucune importance dans ce cadre)\\
Le serveur va fournir un service DHCP au sein du réseau privé, il est donc important qu'il ne soit pas relié au réseau extérieur afin d'éviter tout conflit dans la fourniture du service DHCP.
apt-get install isc-dhcp-server tftpd-hpa syslinux pxe pxelinux nfs-kernel-server
Ce paquet fournit le daemon dhcpd et le service isc-dhcp-server.
Il se configure via le fichier /etc/dhcp/dhcpd.conf, il faut ajouter ce qui suit:
#################################################### # Début de configuration du service DHCP # # Déclaration des leases et plages de service du serveur PXE: subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.20; # à adapter aux nombres de postes clients option broadcast-address 192.168.1.255; option routers 192.168.1.1; # IP du serveur PXE si on veut faire du routage option domain-name-servers 192.168.1.1; # idem filename "pxelinux.0"; } group { next-server 192.168.1.1; # si nécessaire host tftpclient { filename "pxelinux.0"; } } # # Fin de configuration du service DHCP ####################################################
Puis redémarrer le service:
service isc-dhcp-server restart
Il est possible que l'on obtienne un fail si aucun client n'est connecté ou que la connexion est inactive.
Ce service se configure comme suit via le fichier /etc/default/tftpd-hpa:
#################################################### # Début de configuration du service TFTP: # TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure" # # Fin de configuration du service TFTP ####################################################
Puis redémarrer le service:
service tftpd-hpa restart
Ceci peut échouer dans le cas où le dossier /srv/tftp/ n'est pas présent (il est normalement créé automatiquement à l'installation du paquet), il suffit alors de le créer.
Télécharger une image .iso live de Clonezilla:
wget http://heanet.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.2.3-25/clonezilla-live-2.2.3-25-amd64.iso
Monter l'image dans /mnt:
mount -o loop -t iso9660 /root/clonezilla-live-2.2.3-25-amd64.iso /mnt
Copier tous les fichiers dans le dossier réservé du serveur tftp:
cp -ar /mnt/* /srv/tftp/clonezilla
Les images des systèmes que nous souhaitons booter à distance vont être servies aux clients via un partage NFS.
Mise en place des exports NFS:
Création du dossier contenant l'image live de Clonezilla:
mkdir /srv/tftp/clonezilla
emacs /etc/exports
et ajout des lignes correspondantes:
/srv/tftp/clonezilla 192.168.1.0/24(async,no_root_squash,no_subtree_check,ro)
Puis on active les partages NFS:
service nfs-kernel-server restart
Et on les vérifie:
exportfs -v
Cette commande doit renvoyer la liste des partages actifs.
Le paquet syslinux fournit une collection de bootloader dont certains nous seront nécessaires pour démarrer en PXE et afficher le menu qui va bien.
Copie des éléments nécessaires:
cd /usr/lib/syslinux/modules/bios/
cp chain.c32 mboot.c32 menu.c32 reboot.c32 vesamenu.c32 libcom32.c32 libutil.c32 ldlinux.c32 -t /srv/tftp/
cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
Configuration du service PXE:
emacs /etc/pxe.conf
#################################################### # Début de configuration du service PXE: # # which interface to use: interface=eth0 default_address=192.168.1.1 # tftpd base dir: tftpdbase=/srv/tftp # domain name: domain=eveha.fr # # Fin de configuration du service PXE ####################################################
Mise en place du dossier et fichier menu PXE:
mkdir /srv/tftp/pxelinux.cfg
emacs /srv/tftp/pxelinux.cfg/default
Ce fichier va contenir les instructions pour le menu de boot via PXE.
#################################################### # Début de configuration du menu PXE: # # Interface visuelle: DEFAULT vesamenu.c32 MENU TITLE Bienvenue sur le serveur Clonezilla prompt 0 kbdmap french.kbd # Entrée du menu Clonezilla LABEL Demarrer Clonezilla KERNEL clonezilla/live/vmlinuz APPEND boot=live rootfstype=nfs netboot=nfs nfsroot=192.168.1.1:/srv/tftp/clonezilla initrd=clonezilla/live/initrd.img config -- # Entrée du menu de redémarrage LABEL Reboot MENU LABEL Redemarrer KERNEL reboot.c32 # # Fin de configuration du menu PXE ####################################################
APPEND rootfstype=nfs netboot=nfs nfsroot=192.168.11.21:/srv/tftp/clonezilla initrd=clonezilla/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset nodmraid locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no ip= vga=788 net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfw.enable_fbdev=1
Un chmod -R 775 dans ce même dossier peut être nécessaire pour que le daemon TFTPD puisse les lire.
L'idée étant de booter sur un live Clonezilla pour créer et déployer des images disques, nous allons adapter notre environnement à ce but:
Création du dossier qui va contenir les images disques:
mkdir /partimag
(/partimag est le dossier par défaut de Clonezilla, on peut mettre autre chose mais cela implique de le spécifier manuellement à chaque clonage/copie.)
Ces images vont transiter par un partage NFS, on ajoute donc le partage qui va bien:
emacs /etc/exports
Ajout de la ligne:
/partimag 192.168.1.0/24(async,no_root_squash,no_subtree_check,rw)
service nfs-kernel-server restart
Il ne reste plus qu'à connecter les clients, les démarrer via PXE, sélectionner l'entrée de menu 'Clonezilla'.
Le reste est une utilisation classique de Clonezilla à ceci près que les images vont être écrites/lues vers/depuis un partage NFS.