====== 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 [[https://www.nextinpact.com/article/29369/107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee|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 : * Environnement de bureau Debian * Gnome * utilitaires usuels du système * serveur SSH (au cas où) ==== Compléments à l'installation de Debian ==== Ajouter l'utilisateur linuxquimper au groupe sudo * su - * usermod -aG sudo linuxquimper * redémarrer l'ordi pour que ça soit pris en compte ==== Compléments à l'installation de Gnome ==== * Ajustements ⇒ Barre de titre des fenètres ⇒ Boutons de la barre de titre ⇒ activer Maximiser et Minimiser * Ajouter "[[https://extensions.gnome.org/extension/307/dash-to-dock/|Dash to Dock]]" dans les extensions de Gnome pour avoir le Dock visible avec le curseur de la souris en bas de l'écran * Mise à jour du système et des logiciels : * Dans Logiciels => Mises à jour => Dépots des logiciels ajouter * Logiciel libre dont les dépendances ne sont pas libres * Logiciel non libre * Dans Logiciels => Mises à jour => Préférences mise à jour * Mises à jour automatiques : désactivé ===== 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 : * clonezilla-live-abeilles-3.1.0-22-amd64.iso * clonezilla-live-3.0.2-21-i686-pae.iso * clonezilla-live-3.0.2-21-i686.iso * dban-2.3.0_i586.iso * shredos-2021.08.2_23_x86-64_0.34_20221231.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 [[https://netboot.xyz/downloads/|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 [[https://wiki.debian.org/VirtualBox|wiki de Debian]]\\ [[https://www.virtualbox.org/wiki/Linux_Downloads|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 ====== * Récupérer une version stable amd64 en zip https://clonezilla.org/downloads/download.php?branch=stable * Décompresser sur le serveur PXE dans (par exemple) /home/linuxquimper/clonezilla * L'adresse IP du serveur PXE a été figé à 192.168.1.15 en configurant la box des Abeilles * Les images seront créées et récupérées dans /home/partimag/ du serveur PXE 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'' * Dans le répertoire de ''/home/linuxquimper/clonezilla'' exécuter la commande suivante pour créer l'iso clonezilla qui sera utilisé pour la création et le clonage de l'image 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