Table des matières

Serveur PXE pour clonage des ordis reconditionnés

Cette configuration d'un serveur de clonage par amorçage PXE (Pre-boot eXecution Environment) pour une installation via le réseau, s'inspire d'un article de David Legrand dans NextInpact

Installation distribution Debian 12

Installation avec debian-12.2.0-amd64-netinst.iso
Nom de la machine : debian-pxe-abeilles
Identifiant : Linux Quimper
Nom du compte : linuxquimper
Schéma de partitionnement : tout dans une seule partition avec un swap de 1Go
Sélection des logiciels :

Compléments à l'installation de Debian

Ajouter l'utilisateur linuxquimper au groupe sudo

Compléments à l'installation de Gnome

Installation et configuration du serveur DHCP/TFTP

Le choix est d'utiliser le serveur DHCP de la box et d'utiliser un proxy DHCP sur notre serveur.
Ainsi, notre serveur utilisé pour l'amorçage PXE ne fera qu'envoyer les requêtes au serveur DHCP de la box, faisant suivre ses réponses en les adaptant au besoin. Pour cela, nous nous reposons sur Dnsmasq. Il s'agit d'une application open source permettant de gérer différents services, dont le proxy DHCP et TFTP
En complément, il nous faut les bibliothèques pxelinux, pour le démarrage du serveur et syslinux pour initialiser les OS.

sudo apt install dnsmasq pxelinux syslinux-common

On commence par créer un répertoire qui sera utilisé comme racine du serveur TFTP et celui pour le menu de l'interface PXE. Nous y plaçons les fichiers qui nous seront nécessaires :

sudo mkdir -p /var/tftpboot/pxelinux.cfg
cd /var/tftpboot
sudo touch pxelinux.cfg/default

sudo cp /usr/lib/PXELINUX/pxelinux.0 .
sudo cp /usr/lib/syslinux/memdisk .
sudo cp /usr/lib/syslinux/modules/bios/* .

On sauvegarde la configuration de Dnsmasq, contenant sa documentation. Elle pourra vous être utile si vous souhaitez aller plus loin dans la gestion des paramètres et du menu. Puis on ouvre son remplaçant :

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.old
sudo nano /etc/dnsmasq.conf

fichier dnsmasq

On y place les lignes suivantes. La variable dhcp-range pour le réseau des Abeilles est à 192.168.1.0:

## On n'active pas le serveur DNS
port=0

## On initialise le serveur TFTP
enable-tftp
tftp-root=/var/tftpboot

## On initialise le proxy DHCP
dhcp-range=192.168.1.0,proxy

## On initialise le service PXE
dhcp-boot=pxelinux.0

## On initialise le menu du service PXE
pxe-prompt="Veuillez faire votre choix :"
pxe-service=x86PC, "Interface PXE", pxelinux
pxe-service=x86PC, "Boot depuis le disque local", 30

# ----- faire fonctionner le boot en UEFI : ne fonctionne pas encore  -----
# https://github.com/WillChamness/Dnsmasq-PXE/blob/main/dnsmasq.conf
  ## BIOS ; notez que le nom du fichier n'est PAS une faute de frappe
# pxe-service=x86PC,"Interface PXE (BIOS)",bios/pxelinux
# UEFI
# dhcp-match=set:efi-x86_64,option:client-arch,7
# dhcp-boot=tag:efi-x86_64,efi64/syslinux.efi

## On active le log du serveur DHCP
log-dhcp

On relance le service mais peut-être redémarrer le serveur sera plus efficace

sudo systemctl restart dnsmasq.service

Ajout de fonctions au menu PXE

Dans /var/tftpboot/pxelinux.cfg/default ajouter les lignes suivantes (hdt est un outil affichant la composition de l'ordinateur)

DEFAULT menu.c32
MENU TITLE Serveur PXE
LABEL hdt
 MENU LABEL ^Hardware Detection Tool
 KERNEL hdt.c32

LABEL reboot
 MENU LABEL Reboot
 COM32 reboot.c32

Installer des iso disponibles dans le menu PXE

Créer un répertoire où seront déposer les fichiers iso

sudo mkdir /var/tftpboot/_iso

Le dispositif est ici assez basique puisque l'on demande à la machine de récupérer l'ISO depuis le serveur TFTP pour la placer en mémoire. Elle est alors montée comme un ramdisk puis utilisée.

Cette façon de faire fonctionne avec les images prévues à cet effet mais ne fonctionne pas passé une certaine taille (1,2 Go environ) et pour la plupart des ISO d'installation classique qui vont chercher un CD/DVD ou une clé USB, sans les trouver comme Debian netinst, antiX ou boot-repair

Ce procédé peut donc être utilisé pour des images de dépannage et autres systèmes minimalistes, mais pas plus.

Déposer les fichiers iso :

Éditons le menu /var/tftpboot/pxelinux.cfg/default :
Parfois, certaines images nécessitent la ligne APPEND iso raw pour être chargées correctement (ajouté systématiquement au cas où) :

LABEL clonezillabeilles
 MENU DEFAULT
 MENU LABEL ^Clonezilla Abeilles amd64
 LINUX memdisk
 INITRD _iso/clonezilla-live-abeilles-3.1.0-22-amd64.iso
 APPEND iso raw
 
LABEL clonezilla32
 MENU LABEL ^Clonezilla i686
 LINUX memdisk
 INITRD _iso/clonezilla-live-3.0.2-21-i686.iso
 APPEND iso raw
 
LABEL clonezilla32pae
 MENU LABEL ^Clonezilla i686 pae
 LINUX memdisk
 INITRD _iso/clonezilla-live-3.0.2-21-i686-pae.iso
 APPEND iso raw
 
LABEL dban
 MENU LABEL ^Dban i586
 LINUX memdisk
 INITRD _iso/dban-2.3.0_i586.iso
 APPEND iso raw
 
LABEL shredos
 MENU LABEL ^Shredos x86-64
 LINUX memdisk
 INITRD _iso/shredos-2021.08.2_23_x86-64_0.34_20221231.iso
 APPEND iso raw
 

Netboot.xyz et iPXE : choisissez votre distribution

Une fois Netboot.xyz lancé, vous verrez un large choix de distributions, Live ou non, que vous pourrez installer comme bon vous semble. Attention, aucune donnée n'étant stockée localement, tous les fichiers seront téléchargés depuis des serveurs ce qui nécessite une bonne connexion internet pour ne pas y passer des heures… Télécharger netboot.xyz.iso et l'installer dans /var/tftpboot/_iso puis ajouter au fichier /var/tftpboot/pxelinux.cfg/default les lignes suivantes :

LABEL netboot
 MENU LABEL ^Netboot.xyz
 LINUX memdisk
 INITRD _iso/netboot.xyz.iso
 APPEND iso raw

Protocole NFS (Network File System) pour accéder et créer les images Clonezilla

Clonezilla pour accéder ou créer des images peut utiliser le protocole NFS. Les images seront crées dans /home/partimag
Installation du serveur NFS

sudo apt install nfs-kernel-server

et on ajoute au fichier /etc/exports

/home/partimag 192.168.1.0/24(sync,no_root_squash,no_subtree_check,rw)

Initialisation du serveur NFS :

sudo exportfs -a

Installation de Virtualbox

Virtualbox sera utilisé pour créer et mettre à jour les images Clonezilla
Voir le wiki de Debian
Télécharger Virtualbox
et installé le avec sudo dpkg -i puis faire sudo apt install -f Installations complémentaires

sudo apt install gcc make perl
sudo apt install linux-headers-amd64 linux-headers-6.1.0-12-amd64
sudo /sbin/vboxconfig
sudo adduser linuxquimper vboxusers

Crer le répertoire /home/linuxquimper/VirtualBox VMs et y copier les machines virtuelles

Configurer Clonezilla

Ajoutez les lignes suivantes dans isolinux.cfg et syslinux.cfg qui se trouvent /home/linuxquimper/clonezilla/syslinux pour (en cas d'utilisation de iPXE et le démarrage sur un ordi UEFI il faudra changer /home/linuxquimper/clonezilla/boot/grub/grub.cfg) :

* Cloner l'image sur les ordis

label Clonage PXE
  MENU DEFAULT
  MENU LABEL CLONAGE disque avec Image sur serveur PXE
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet loglevel=0 noswap edd=on nomodeset enforcing=0 noeject locales="en_US.UTF-8" keyboard-layouts="en" ocs_live_run=" ocs_daemonon="nfs-common" ocs_repository="nfs://192.168.1.15/home/partimag/" ocs_prerun="dhclient" ocs_prerun1="mount -t nfs 192.168.1.15:/home/partimag /home/partimag -o noatime,nfsvers=3" ocs_live_run="/usr/sbin/ocs-sr -g auto -e1 auto -e2 -c -r -j2 -k1 -scr -icds -p poweroff restoredisk Ubuntu-2204-Abeilles sda" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Clonage du disque CIBLE sda
  * SELECTION : image SOURCE
  * Connexion via NFS automatique 
  * Mode VGA 1024x768 
  * MAJ 02/2022          
  ENDTEXT

* créer l'image à cloner

label Sauvegarde NFS
  MENU LABEL SAUVEGARDE (utiliser que sur serveur PXE)
  kernel /live/vmlinuz
  append initrd=/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset noeject locales="fr_FR.UTF-8" keyboard-layouts="fr" ocs_numlk="on" ocs_daemonon="nfs-common" ocs_repository="nfs://192.168.1.15/home/partimag/" ocs_prerun="dhclient" ocs_prerun1="mount -t nfs 192.168.1.15:/home/partimag /home/partimag -o noatime,nfsvers=3" ocs_live_run="/usr/sbin/ocs-sr -q2 -c -j2 -z1 -i 0 -sfsck -senc -p poweroff savedisk Ubuntu-2204-Abeilles sda" ocs_live_extra_param="" ocs_live_batch="no" vga=791 ip= net.ifnames=0  nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
  TEXT HELP
  * Sauvegarde du disque sda
  * SELECTION : image SOURCE
  * Connexion via NFS automatique 
  * Mode VGA 1024x768 
  * MAJ 10/2023          
  ENDTEXT
  

Création de /var/tftpboot/_iso/clonezilla-live-Abeilles-NFS-3.1.0-22-amd64.iso

genisoimage -A 'Clonezilla Abeilles live' -f -r -hide-rr-moved -hide-joliet-trans-tbl -J -l -allow-limited-size -b syslinux/isolinux.bin -c syslinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -efi-boot EFI/images/efiboot.png -no-emul-boot ./ > /var/tftpboot/_iso/clonezilla-live-Abeilles-NFS-3.1.0-22-amd64.iso