Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
ipxe [Le 06/05/2019, 11:54]
nicolas84 [Tester le fonctionnement]
ipxe [Le 27/11/2021, 18:27]
nicolas84 [Créer le menu de iPXE]
Ligne 1: Ligne 1:
 +{{tag>​Bionic}}
 +
 ====== IPXE : utilisation avec TFTP, PXE, DHCP, NFS et HTTP ====== ====== IPXE : utilisation avec TFTP, PXE, DHCP, NFS et HTTP ======
  
Ligne 5: Ligne 7:
 L'​avantage de iPXE est qu'il s'​adapte facilement aux interfaces BIOS et EFI. L'​avantage de iPXE est qu'il s'​adapte facilement aux interfaces BIOS et EFI.
  
-Il existe d’autres méthodes comme par exemple : ​https://​doc.ubuntu-fr.org/​netboot ou https://​doc.ubuntu-fr.org/​netboot_live +Il existe d’autres méthodes comme par exemple : ​[[:netboot]] ou [[:​netboot_live]]
-<note warning>​ +
-Cet article est en cours de rédaction. Certaines informations peuvent être erronés ou incomplète. +
-</​note>​ +
- +
-===== Processus de démarrage =====+
  
-  - L'​ordinateur client démarre par l'​interface réseau en mode PXE. 
-  - Le serveur DHCP, présent sur le réseau, lui envoie un fichier ipxe à démarrer. 
-  - L'​ordinateur client accède alors, par TFTP, au fichier de configuration de la machine. 
-  - Il charge le fichier de configuration par défaut. 
-  - Le fichier contient les informations nécessaire à l'​affichage d'un menu sur l'​écran de l'​ordinateur client. 
  
 ===== Installer et lancer les serveurs nécessaires ===== ===== Installer et lancer les serveurs nécessaires =====
Ligne 24: Ligne 16:
 Installation du serveur DHCP sur le serveur. Installation du serveur DHCP sur le serveur.
 <note important>​ <note important>​
-Un serveur doit avoir une adresse ip fixe ! Ici, le serveur dispose de l’ip 10.0.0.200. Voir : https://​doc.ubuntu-fr.org/​utilisateurs/​ool/​netplan+Un serveur doit avoir une adresse ip fixe ! Ici, le serveur dispose de l’ip 10.0.0.200. Voir : [[:​utilisateurs/​ool/​netplan|netplan]]
 </​note>​ </​note>​
 <​code>​ <​code>​
Ligne 121: Ligne 113:
 </​file>​ </​file>​
 <note tip> <note tip>
-Dans la configuration ci-dessous le réseau est configurer ​en 10.0.0.0/​24,​ libre a vous de l’adapter à votre réseau actuel.+Dans la configuration ci-dessous le réseau est configuré ​en 10.0.0.0/​24,​ libre a vous de l’adapter à votre réseau actuel.
 </​note>​ </​note>​
 Les premières « option » permettent à isc-dhcp-server de comprendre des options DHCP spécifique à ipxe. Les premières « option » permettent à isc-dhcp-server de comprendre des options DHCP spécifique à ipxe.
 Cela sera plus compréhensible plus tard, mais les « if » en fin de document permettent de distribuer le bon fichier en fonction du client PXE (Bios, EFI) Cela sera plus compréhensible plus tard, mais les « if » en fin de document permettent de distribuer le bon fichier en fonction du client PXE (Bios, EFI)
-Pour plus d’info sur la configuration :​ [[:https://​doc.ubuntu-fr.org/​isc-dhcp-server|isc-dhcp-server]]+Pour plus d’info sur la configuration :​ [[:​isc-dhcp-server|isc-dhcp-server]]
 <​code>​ <​code>​
 sudo service isc-dhcp-server restart sudo service isc-dhcp-server restart
Ligne 134: Ligne 126:
  
 Dans le cas où il n'est pas possible de désactiver les autres serveur DHCP, à minima, il faut régler le paramètre "​range"​ sur une autre plage que celle de votre autre serveur DHCP. Dans le cas où il n'est pas possible de désactiver les autres serveur DHCP, à minima, il faut régler le paramètre "​range"​ sur une autre plage que celle de votre autre serveur DHCP.
 +
 +Une autre méthode consiste à amorcer iPXE à l'aide d'une clé USB : [[:​ipxe#​creer_une_cle_usb_d_ipxe|Créer une clé USB d'​iPXE]]
 </​note>​ </​note>​
 ==== Serveur TFTP ==== ==== Serveur TFTP ====
Ligne 139: Ligne 133:
 Le serveur TFTP est celui qui va fournir les fichiers nécessaires au démarrage réseau. Le serveur TFTP est celui qui va fournir les fichiers nécessaires au démarrage réseau.
 <​code>​ <​code>​
-sudo apt install tftpd-hda +sudo apt install tftpd-hpa 
-sudo nano etc/​default/​tftpd-hpa+sudo nano /etc/​default/​tftpd-hpa
 </​code>​ </​code>​
 <file - /​etc/​default/​tftpd-hpa>​ <file - /​etc/​default/​tftpd-hpa>​
Ligne 156: Ligne 150:
 </​code>​ </​code>​
 <note tip> <note tip>
-Si un pare-feu est activé, ​il faut ouvrir le port 69+Si un pare-feu est activé, ouvrir le port 69
 </​note>​ </​note>​
  
Ligne 166: Ligne 160:
 </​code>​ </​code>​
 <note tip> <note tip>
-Si un pare-feu est activé, ​il faut ouvrir le port 2049+Si un pare-feu est activé, ​consultez cette page : [[nfs-ufw|Fixer les ports pour un partage NFS]]
 </​note>​ </​note>​
  
Ligne 176: Ligne 170:
 </​code>​ </​code>​
 Pour plus d'​infos : https://​doc.ubuntu-fr.org/​lamp Pour plus d'​infos : https://​doc.ubuntu-fr.org/​lamp
 +
 +On créer un lien symbolique de tftpboot sur le serveur LAMP :
 +<​code>​
 +ln -s /​var/​lib/​tftpboot /​var/​www/​html/​tftpboot
 +</​code>​
 +
 ===== Préparer les fichiers de démarrage iPXE ===== ===== Préparer les fichiers de démarrage iPXE =====
  
Ligne 202: Ligne 202:
 cd /​tmp/​ipxe/​src cd /​tmp/​ipxe/​src
 make bin-x86_64-efi/​ipxe.efi EMBED=chain.ipxe make bin-x86_64-efi/​ipxe.efi EMBED=chain.ipxe
-make bin-i386-efi/​ipxe32.efi EMBED=chain.ipxe+make bin-i386-efi/​ipxe.efi EMBED=chain.ipxe
 make undionly.kpxe EMBED=chain.ipxe make undionly.kpxe EMBED=chain.ipxe
 +
 +cp bin-x86_64-efi/​ipxe.efi undionly.kpxe /​var/​lib/​tftpboot/​
 +cp bin-i386-efi/​ipxe.efi /​var/​lib/​tftpboot/​ipxe32.efi
 </​code>​ </​code>​
-Ses deux fichiers seront ensuite à copier dans /​var/​lib/​tftpboot.+La construction nécessite les paquets suivants : [[apt>​gcc]] [[apt>​binutils]] [[apt>​liblzma-dev]]
 </​note>​ </​note>​
  
Ligne 249: Ligne 252:
 </​file>​ </​file>​
 <note tip> <note tip>
-Ce menu ne sert à rien dans l’état, il est à compléter en fonction de ce que l’on a démarrer. ​Une petite liste est situé dans le chapitre ​suivant+Ce menu ne sert à rien dans l’état, il est à compléter en fonction de ce que l’on a démarrer. ​Voir sur le chapitre ​[[:​ipxe#​completer_le_menu_ipxe|Compléter le menu iPXE]] 
 + 
 +Des exemples de menu sont proposés sur cette page : [[http://​boot.salstar.sk/​|Exemples de menus IPXE]]
 </​note>​ </​note>​
  
Ligne 255: Ligne 260:
 Utiliser un ordinateur ou une machine virtuelle pour tenter un démarrage PXE. Pour cela, il faut changer l'​ordre de boot dans le bios/uefi de votre machine pour sélectionner "​PXE"​ ou "​réseau"​. Utiliser un ordinateur ou une machine virtuelle pour tenter un démarrage PXE. Pour cela, il faut changer l'​ordre de boot dans le bios/uefi de votre machine pour sélectionner "​PXE"​ ou "​réseau"​.
  
-Plus d'​infos : [[https://​doc.ubuntu-fr.org/​tutoriel/​modifier_ordre_amorcage_du_bios#​etapes_a_suivre_pour_modifier_l_ordre_d_amorcage_du_bios|Modifier l'​ordre d'​amorçage du BIOS]]+Plus d'​infos : [[:​tutoriel/​modifier_ordre_amorcage_du_bios#​etapes_a_suivre_pour_modifier_l_ordre_d_amorcage_du_bios|Modifier l'​ordre d'​amorçage du BIOS]]
  
 <note tip> <note tip>
-Si cela ne fonctionne pas dans une machine virtuelle, tentez quand même sur un ordinateur physique. Sur les machines virtuelles, cela a parfois tendance à fonctionner une fois sur deux !+Si cela ne fonctionne pas dans une machine virtuelle, tentez quand même sur un ordinateur physique. Sur les machines virtuelles, cela a parfois tendance à être capricieux ​! 
 +Par exemple pour un test via VirtualBox, il faut impérativement installer les extensions packs pour ne pas avoir d'​erreur sur les fichier gz (utilisé pour lancer les kernel linux notamment) 
 +Dans les paramètres VirtualBox, ajouter l'​extension pack correspondant à votre version. Voir cette page pour le télécharger : https://​www.virtualbox.org/​wiki/​Download_Old_Builds
 </​note>​ </​note>​
 ===== Compléter le menu ipxe ===== ===== Compléter le menu ipxe =====
Ligne 298: Ligne 305:
 Il convient évidemment d'​adapter les paramètres à sa situation. Les fichiers vmlinuz et initrd étant parfois accompagnés d'une extensions comme .gz, il faudra l'​ajouter. ​ Il convient évidemment d'​adapter les paramètres à sa situation. Les fichiers vmlinuz et initrd étant parfois accompagnés d'une extensions comme .gz, il faudra l'​ajouter. ​
 </​note>​ </​note>​
-Il faudra ensuite ​autorisé ​le partage dans le fichier de configuration de NFS :+Il faudra ensuite ​autoriser ​le partage dans le fichier de configuration de NFS :
 <​code>​ <​code>​
 sudo echo "/​var/​lib/​tftpboot/​ubuntuinstall *(async,​no_root_squash,​no_subtree_check,​ro) /​etc/​exports"​ >> /​etc/​exports sudo echo "/​var/​lib/​tftpboot/​ubuntuinstall *(async,​no_root_squash,​no_subtree_check,​ro) /​etc/​exports"​ >> /​etc/​exports
Ligne 326: Ligne 333:
  
 == Sous Windows == == Sous Windows ==
 +
 +Pré-requis : Télécharger et installer Windows ADK [[https://​docs.microsoft.com/​fr-fr/​windows-hardware/​get-started/​adk-install#​winADK|WinADK]]
 +
 +<note important>​
 +Désactiver votre programme antivirus lors de la manipulation des images.
 +</​note>​
 +
 +Dans le menu démarrer taper : "​Environnement de déploiement et d’outils de création d’images"​ et l'​ouvrir en tant qu'​administrateur.
 +
 +Copier WinPE 
 +<​code>​
 +copype amd64 C:​\WinPE_am64
 +</​code>​
 +
 +Monter l'​image de démarrage :
 +<​code>​
 +Dism /​Mount-Image /​ImageFile:"​C:​\WinPE_amd64\media\sources\boot.wim"​ /index:1 /​MountDir:"​C:​\WinPE_amd64\mount"​
 +</​code>​
 +
 <note tip> <note tip>
-A compléter, cette solution ​est plus complète que la création sous Linux+Il est possible a ce stade de rajouter des fichiers/​dossier dans C:​\WinPE_amd64\mount 
 + 
 +Il est aussi possible de modifier le script de démarrage (pour lancer des commandes automatiquement au démarrage) : 
 +Exemple : 
 +<file - C:​\WinPE_amd64\mount\Windows\System32\Startnet.cmd>​ 
 +wpeinit 
 +net use Y: \\10.0.0.200\win10_1809_custom_x64 /user:user pass 
 +Y:​\setup.exe 
 +</​file>​
 </​note>​ </​note>​
 +
 +__Pour ajouter des pilotes de périphériques (.inf) : __
 +
 +Un seul à la fois :
 +<​code>​
 +Dism /Add-Driver /​Image:"​C:​\WinPE_amd64\mount"​ /​Driver:"​C:​\SampleDriver\driver.inf"​
 +</​code>​
 +Tout un dossier de .inf (il peut être nécessaire d'​utiliser /​ForceUnsigned pour ajouter des pilotes non signés)
 +<​code>​
 +Dism /Add-Driver /​Image:"​C:​\WinPE_amd64\mount"​ /​Driver:"​C:​\SampleDriver"​ /Recurse
 +</​code>​
 +Vérification :
 +<​code>​
 +Dism /​Image:"​C:​\WinPE_amd64\mount"​ /​Get-Drivers
 +</​code>​
 +<note tip>
 +D'​autres manipulations et modifications sont possibles : [[https://​msdn.microsoft.com/​fr-fr/​library/​windows/​hardware/​dn938390(v=vs.85).aspx|WinPE : Monter et personnaliser]]
 +</​note>​
 +Quand toutes les modifications sont terminées, il faut démonter l'​image :
 +<​code>​
 +Dism /​Unmount-Image /​MountDir:"​C:​\WinPE_amd64\mount"​ /commit
 +</​code>​
 +
 +Création d'un image ISO :
 +<​code>​
 +Makewinpemedia /iso C:​\winpe_amd64 C:​\winpe_amd64.iso
 +</​code>​
  
 === Configuration du menu === === Configuration du menu ===
Ligne 376: Ligne 437:
 </​code>​ </​code>​
 <note tip> <note tip>
-Même si le répertoire samba est accessible anonymement (guest ok = yes), il faut saisir un utilisateur et un mot de passe bidon pour que la connexion fonctionne.+Même si le répertoire samba est accessible anonymement (guest ok = yes), il faut parfois ​saisir un utilisateur et un mot de passe bidon pour que la connexion fonctionne.
 </​note>​ </​note>​
  
Ligne 423: Ligne 484:
   * Si vous êtes en EFI, vérifiez que ce que vous voulez démarrer est compatible.   * Si vous êtes en EFI, vérifiez que ce que vous voulez démarrer est compatible.
  
 +====Créer une clé USB d'​iPXE====
  
 +Pour éviter l'​utilisation de dhcp par exemple, il est possible de mettre iPXE sur une clé USB bootable. Il faut compiler ipxe.usb à partir des sources pour ensuite le transférer sur la cle usb. Le paquet suivant sera nécessaire : [[apt>​liblzma-dev]]
 +
 +<​code>​
 +cd /tmp
 +git clone git://​git.ipxe.org/​ipxe.git
 +cd ipxe/src
 +</​code>​
 +
 +<note warning>
 +Manipulez la commande [[:dd]] avec beaucoup de précaution !!
 +</​note>​
 +
 +Pour la version bios :
 +<​code>​
 +make bin/​ipxe.usb
 +dd if=bin/​ipxe.usb of=/dev/sdX status=progress # où sdX représente la clé USB
 +</​code>​
 +
 +Pour la version efi :
 +<​code>​
 +make bin-x86_64-efi/​ipxe.usb
 +dd if=bin-x86_64-efi/​ipxe.usb of=/dev/sdX # où sdX représente la clé USB 
 +</​code>​
 ==== Gagner de la place ==== ==== Gagner de la place ====
 Si vos ISO sont déjà dans un autre emplacement sur votre serveur, il est possible d'​effectuer des liens symbolique afin d'​éviter les doublons. Si vos ISO sont déjà dans un autre emplacement sur votre serveur, il est possible d'​effectuer des liens symbolique afin d'​éviter les doublons.
Ligne 430: Ligne 515:
 </​code>​ </​code>​
  
-Il est aussi faisable d'​automatiser le montage d'ISO au démarrage pour les ISO qui doivent être décompressées. Il suffit d'​automatiser toutes les commandes "mount -o loop" qui sont nécessaires. Par exemple avec une tâche cron @reboot : https://​doc.ubuntu-fr.org/​cron#​comment_fonctionne_cron+Il est aussi faisable d'​automatiser le montage d'ISO au démarrage pour les ISO qui doivent être décompressées. Il suffit d'​automatiser toutes les commandes "mount -o loop" qui sont nécessaires. Par exemple avec une tâche cron @reboot : [[:​cron#​comment_fonctionne_cron|cron]] (il est préférable de lancer un script contenant toutes les commandes mount)
  
 <note important>​ <note important>​
Ligne 440: Ligne 525:
 ==== Bugs connus ==== ==== Bugs connus ====
  
-=== Ubuntu ​Server ​18.04.=== +=== Ubuntu ​et Lubuntu ​18.04.=== 
-Si Ubuntu ​Server ​18.04.1 n'​arrive pas a ce lancer (il s'​arrête en mode maintenance), ​rajouter ​"​systemd.mask=tmp.mount"​ entre "​ip=dhcp"​ et "​--" ​+Si Ubuntu ​ou Lubuntu ​18.04.1 n'​arrive pas à se lancer (il s'​arrête en mode maintenance), ​rajoutez ​"​systemd.mask=tmp.mount"​ entre "​ip=dhcp"​ et "​--" ​
  
-Source ​: https://​bugs.launchpad.net/​ubuntu/​+source/​casper/​+bug/​1754777#​yui_3_10_3_1_1557065713426_342+Pour Ubuntu ou Lubuntu 18.04.2, il faut rajouter en sus : "​systemd.mask=dev-hugepages.mount systemd.mask=dev-mqueue.mount systemd.mask=sys-fs-fuse-connections.mount systemd.mask=sys-kernel-config.mount systemd.mask=sys-kernel-debug.mount systemd.mask=tmp.mount toram"​ 
 + 
 +Pour Ubuntu et Lubuntu 18.04.3, il faut enlever toutes ses modifications faites pour Ubuntu Server 18.04. 1 et 2 sinon l'​installateur plante pendant la copie des fichiers de /​media/​filesystem  
 + 
 +Voir : https://​bugs.launchpad.net/​ubuntu/​+source/​casper/​+bug/​1754777#​yui_3_10_3_1_1557065713426_342 
 + 
 +=== Ubuntu 20.04 === 
 +Sur les distributions basées sur Ubuntu 20.04, un fsck des fichiers est effectué, ce qui rend le démarrage très long. Pour éviter cette étape il suffit de rajouter fsck.mode=skip après boot=casper 
 + 
 +=== Pas de réseau dans Windows PE === 
 +Si le retour de la commande ipconfig ne donne rien, alors c'est qu'il n'y a pas le pilote réseau adéquat pour votre carte réseau. Recherchez son pilote chez le constructeur de votre carte réseau, et, intégrez ce pilote lors de la construction de WinPE. (voir paragraphe : [[:​ipxe#​creer_un_windows_pe|Créer un WinPE sous windows]])
 ===== Voir aussi ===== ===== Voir aussi =====
  
 [[http://​ipxe.org|Site officiel de iPXE]] [[http://​ipxe.org|Site officiel de iPXE]]
 +
 +[[http://​boot.salstar.sk/​|Exemples de menus IPXE]]
  
 **__Contributeur__** **__Contributeur__**
  
 nicolas84 nicolas84
  • ipxe.txt
  • Dernière modification: Le 02/08/2023, 12:18
  • par 2.59.74.79