ipxe
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| ipxe [2026/08/24 05:28] – [1.1 Interfaces réseau] rene | ipxe [2026/08/24 06:37] (Version actuelle) – [4. Création du script iPXE] rene | ||
|---|---|---|---|
| Ligne 22: | Ligne 22: | ||
| ==== 1.2 Configuration de l' | ==== 1.2 Configuration de l' | ||
| - | Créer/ | + | Créer/ |
| - | Avec / | + | |
| - | auto ens1 | + | ''/ |
| - | iface ens1 inet static | + | |
| + | sudo tee -a / | ||
| + | |||
| + | | ||
| + | iface ens1 inet static | ||
| address 192.168.100.1/ | address 192.168.100.1/ | ||
| gateway 192.168.100.1 | gateway 192.168.100.1 | ||
| dns-nameservers 8.8.8.8 1.1.1.1 | dns-nameservers 8.8.8.8 1.1.1.1 | ||
| - | EOFPuis | + | EOF |
| + | |||
| + | Puis activer : | ||
| + | | ||
| ⚠️ Ne définissez pas de passerelle par défaut sur ens1 si ens0 fournit déjà la route par défaut. Retirez la ligne gateway ci-dessus dans ce cas. | ⚠️ Ne définissez pas de passerelle par défaut sur ens1 si ens0 fournit déjà la route par défaut. Retirez la ligne gateway ci-dessus dans ce cas. | ||
| - | 2. Installation des paquetssudo apt update | + | ===== 2. Installation des paquets ===== |
| - | sudo apt install -y nginx dnsmasq ipxe-qemu pxelinux syslinux-common \ | + | |
| - | wget rsync unzip nftablesVérifiez que les fichiers iPXE nécessaires sont disponibles :# Pour BIOS legacy | + | |
| - | ls / | + | |
| - | # Pour UEFI | + | sudo apt update |
| - | ls / | + | sudo apt install -y nginx dnsmasq ipxe-qemu pxelinux syslinux-common \ |
| - | ls / | + | wget rsync unzip nftables |
| - | find /usr -name ' | + | |
| - | 3. Préparation des fichiers Clonezilla | + | Vérifiez que les fichiers iPXE nécessaires sont disponibles : |
| - | 3.1 Téléchargement de Clonezilla Livesudo mkdir -p /srv/ | + | |
| - | cd /tmp | + | ls / |
| - | wget https:// | + | |
| - | # Vérifiez toujours la dernière version stable sur https:// | + | # Pour UEFI |
| - | sudo unzip clonezilla-live-3.2.2-10-amd64.zip -d /tmp/cz | + | ls / |
| - | ⚠️ Vérifiez l'URL de téléchargement sur le site officiel de Clonezilla pour obtenir la dernière version stable. | + | |
| - | 3.2 Extraction des fichiers de démarrage | + | Si les chemins diffèrent, cherchez-les : |
| - | Clonezilla Live utilise une architecture classique de live-boot : noyau Linux, initramfs, et filesystem.squashfs.sudo mkdir -p / | + | dpkg -L ipxe-qemu | grep -E ' |
| - | sudo mkdir -p / | + | find /usr -name ' |
| + | |||
| + | |||
| + | |||
| + | ===== 3. Préparation des fichiers Clonezilla ===== | ||
| + | |||
| + | ==== 3.1 Téléchargement de Clonezilla Live ==== | ||
| + | |||
| + | |||
| + | sudo mkdir -p / | ||
| + | cd /tmp | ||
| + | wget https:// | ||
| + | # Vérifiez toujours la dernière version stable sur https:// | ||
| + | sudo unzip clonezilla-live-X.X.X-XX-amd64.zip -d /tmp/cz | ||
| + | |||
| + | ⚠️ Vérifiez l'URL de téléchargement sur le site officiel de [[https:// | ||
| + | |||
| + | ==== 3.2 Extraction des fichiers de démarrage | ||
| + | |||
| + | Clonezilla Live utilise une architecture classique de live-boot : noyau Linux, initramfs, et filesystem.squashfs. | ||
| + | |||
| + | | ||
| + | sudo mkdir -p / | ||
| # Copier les fichiers du système de fichiers live (squashfs + vmlinuz + initrd) | # Copier les fichiers du système de fichiers live (squashfs + vmlinuz + initrd) | ||
| - | sudo cp / | + | |
| - | sudo cp / | + | sudo cp / |
| - | sudo cp / | + | sudo cp / |
| # Copier aussi les fichiers pour TFTP (si besoin de PXELINUX en fallback) | # Copier aussi les fichiers pour TFTP (si besoin de PXELINUX en fallback) | ||
| - | sudo cp / | + | |
| - | sudo cp / | + | sudo cp / |
| - | ├── live/ | + | |
| - | │ | + | Vérifiez les noms exacts des fichiers dans l' |
| - | │ | + | |
| - | │ | + | |
| - | └── boot.ipxe | + | |
| - | / | + | ls -la /tmp/cz/live/3.3 |
| - | ├── undionly.kpxe | + | |
| - | ├── ipxe-snponly.efi | + | |
| - | └── boot.ipxeCopier les firmwares iPXE vers le répertoire TFTP :sudo cp / | + | |
| - | sudo cp / | + | |
| - | 4. Création du script iPXE | + | |
| - | Le script iPXE est le cœur de la chaîne de boot. Il télécharge le noyau et l' | + | |
| - | #!ipxe | + | |
| - | echo ============================================ | + | Arborescence cible |
| - | echo | + | |
| - | echo | + | / |
| - | echo ============================================ | + | ├── live/ |
| - | echo | + | │ |
| + | │ | ||
| + | │ | ||
| + | └── boot.ipxe | ||
| + | |||
| + | / | ||
| + | ├── undionly.kpxe | ||
| + | ├── ipxe-snponly.efi | ||
| + | └── boot.ipxe | ||
| + | |||
| + | Copier les firmwares iPXE vers le répertoire TFTP : | ||
| + | |||
| + | sudo cp / | ||
| + | sudo cp / | ||
| + | |||
| + | ===== 4. Création du script iPXE ===== | ||
| + | |||
| + | Le script iPXE est le cœur de la chaîne de boot. Il télécharge le noyau et l' | ||
| + | |||
| + | sudo tee / | ||
| + | #!ipxe | ||
| + | |||
| + | | ||
| + | echo | ||
| + | echo | ||
| + | echo ============================================ | ||
| + | echo | ||
| + | |||
| + | set server_ip 192.168.100.1 | ||
| + | set http_base http:// | ||
| + | |||
| + | kernel ${http_base}/ | ||
| + | initrd ${http_base}/ | ||
| + | boot | ||
| + | IPXEEOF | ||
| + | |||
| + | Explication des paramètres du noyau | ||
| + | |||
| + | Paramètre | ||
| + | boot=live | ||
| + | username=user | ||
| + | union=overlay | ||
| + | config components quiet Charge les composants de config, mode silencieux | ||
| + | ocs_prerun=" | ||
| + | ocs_live_run=" | ||
| + | keyboard-layouts=fr | ||
| + | locales=fr_FR.UTF-8 | ||
| + | ip=dhcp | ||
| + | vga=791 | ||
| + | |||
| + | |||
| + | Copier le script également en TFTP (au cas où) : | ||
| + | |||
| + | sudo cp / | ||
| - | set server_ip 192.168.100.1 | ||
| - | set http_base http:// | ||
| - | kernel ${http_base}/ | ||
| - | initrd ${http_base}/ | ||
| - | boot | ||
| - | IPXEEOFExplication des paramètres du noyau | ||
| - | ParamètreRôleboot=liveActive le mode live-boot de Debian/ | ||
| - | Copier le script également en TFTP (au cas où) :sudo cp / | ||
| 💡 Si vous souhaitez automatiser le clonage sans menu interactif, remplacez ocs_live_run par exemple : | 💡 Si vous souhaitez automatiser le clonage sans menu interactif, remplacez ocs_live_run par exemple : | ||
| ocs_live_run=" | ocs_live_run=" | ||
| Ligne 99: | Ligne 160: | ||
| - | 5. Configuration de dnsmasq (DHCP + TFTP + Proxy-DNS) | + | ===== 5. Configuration de dnsmasq (DHCP + TFTP + Proxy-DNS) |
| dnsmasq gère à la fois le DHCP, le TFTP et la redirection vers iPXE en fonction du type de client (BIOS ou UEFI). | dnsmasq gère à la fois le DHCP, le TFTP et la redirection vers iPXE en fonction du type de client (BIOS ou UEFI). | ||
| - | 5.1 Fichier de configuration | + | |
| + | ==== 5.1 Fichier de configuration | ||
| + | |||
| + | |||
| + | sudo mv / | ||
| sudo tee / | sudo tee / | ||
| Ligne 154: | Ligne 220: | ||
| sudo systemctl status dnsmasqVérifiez que le DHCP et le TFTP écoutent :ss -ulnp | grep -E ' | sudo systemctl status dnsmasqVérifiez que le DHCP et le TFTP écoutent :ss -ulnp | grep -E ' | ||
| ss -tlnp | grep -E ' | ss -tlnp | grep -E ' | ||
| - | 6. Configuration de Nginx | + | |
| - | 6.1 Création du bloc serveursudo | + | |
| + | ===== 6. Configuration de Nginx ===== | ||
| + | |||
| + | |||
| + | ==== 6.1 Création du bloc serveur ==== | ||
| + | |||
| + | |||
| + | sudo tee / | ||
| server { | server { | ||
| listen 80; | listen 80; | ||
| Ligne 204: | Ligne 277: | ||
| curl -I http:// | curl -I http:// | ||
| - | 7. Configuration du routage et du NAT | + | ===== 7. Configuration du routage et du NAT ===== |
| + | |||
| Pour que les postes clients puissent accéder à Internet (notamment pour que Clonezilla puisse télécharger des mises à jour, ou que les machines clonées aient un accès réseau après le clone), il faut activer le routage IPv4 et le NAT entre ens1 (lan) et ens0 (wan). | Pour que les postes clients puissent accéder à Internet (notamment pour que Clonezilla puisse télécharger des mises à jour, ou que les machines clonées aient un accès réseau après le clone), il faut activer le routage IPv4 et le NAT entre ens1 (lan) et ens0 (wan). | ||
| - | 7.1 Activation du forwarding | + | |
| + | ==== 7.1 Activation du forwarding | ||
| + | |||
| + | |||
| + | sudo tee -a / | ||
| net.ipv4.ip_forward = 1 | net.ipv4.ip_forward = 1 | ||
| EOF | EOF | ||
| Ligne 251: | Ligne 330: | ||
| - | 8. Chaîne de boot détaillée | + | ===== 8. Chaîne de boot détaillée |
| + | |||
| + | |||
| Voici le flux complet de démarrage d'un poste client :(sequence omitted — described below)Étape 1 — Demande DHCP : | Voici le flux complet de démarrage d'un poste client :(sequence omitted — described below)Étape 1 — Demande DHCP : | ||
| Le poste client (BIOS ou UEFI) émet une requête DHCP Discover sur ens1. dnsmasq répond avec une IP dans la plage 192.168.100.100-200 et indique le fichier de boot correspondant à l' | Le poste client (BIOS ou UEFI) émet une requête DHCP Discover sur ens1. dnsmasq répond avec une IP dans la plage 192.168.100.100-200 et indique le fichier de boot correspondant à l' | ||
| Ligne 269: | Ligne 351: | ||
| Configurer dnsmasq pour envoyer l' | Configurer dnsmasq pour envoyer l' | ||
| - | 8.1 Configuration dnsmasq avec double DHCP (chain loading iPXE) | + | ==== 8.1 Configuration dnsmasq avec double DHCP (chain loading iPXE) ==== |
| + | |||
| Modifiez la section de boot dans / | Modifiez la section de boot dans / | ||
| Ligne 293: | Ligne 377: | ||
| Le noyau démarre, monte le filesystem.squashfs, | Le noyau démarre, monte le filesystem.squashfs, | ||
| - | 9. Vérifications et dépannage | + | ===== 9. Vérifications et dépannage |
| - | 9.1 Journal | + | |
| - | 9.2 Journal | + | |
| - | 9.3 Tests manuels | + | ==== 9.1 Journal |
| + | |||
| + | |||
| + | sudo tail -f / | ||
| + | |||
| + | ==== 9.2 Journal | ||
| + | |||
| + | |||
| + | sudo tail -f / | ||
| + | |||
| + | ==== 9.3 Tests manuels | ||
| + | |||
| Depuis une machine du réseau de clonage :# Tester le DHCP | Depuis une machine du réseau de clonage :# Tester le DHCP | ||
| sudo dhclient -d -v ens1 | sudo dhclient -d -v ens1 | ||
| Ligne 310: | Ligne 406: | ||
| SymptômeCause probableSolutionLe client n' | SymptômeCause probableSolutionLe client n' | ||
| - | 10. Récapitulatif du flux réseauFlux | + | ===== 10. Récapitulatif du flux réseau ===== |
| - | 11. Sécurité et bonnes pratiques | + | |
| + | |||
| + | Flux réseau completinfoClient (BIOS/UEFI) → DHCP sur ens1 → dnsmasq fournit IP + firmware iPXE via TFTP → iPXE recharge DHCP (user-class iPXE) → dnsmasq répond avec URL HTTP http:// | ||
| + | |||
| + | ===== 11. Sécurité et bonnes pratiques | ||
| Restreindre Nginx au réseau 192.168.100.0/ | Restreindre Nginx au réseau 192.168.100.0/ | ||
| Ligne 321: | Ligne 422: | ||
| Cette configuration vous donne un serveur de clonage autonome, capable de démarrer aussi bien les machines BIOS qu' | Cette configuration vous donne un serveur de clonage autonome, capable de démarrer aussi bien les machines BIOS qu' | ||
| + | |||
| + | |||
ipxe.1787549295.txt.gz · Dernière modification : de rene
