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
ipxe [Le 06/05/2019, 16:06]
nicolas84 correction liens interne
ipxe [Le 02/08/2023, 12:18] (Version actuelle)
2.59.74.79 correction d'une erreur
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 6: Ligne 8:
  
 Il existe d’autres méthodes comme par exemple : [[:​netboot]] ou [[:​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 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.
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 197: Ligne 197:
  
 dhcp dhcp
-chain http://​10.0.0.200/​install.ipxe ​+chain http://​10.0.0.200/​install.ipxe
 </​file>​ </​file>​
 <​code>​ <​code>​
 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 bin/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 250: Ligne 253:
 <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. Voir sur le chapitre [[:​ipxe#​completer_le_menu_ipxe|Compléter le menu iPXE]] 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 258: Ligne 263:
  
 <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 296: Ligne 303:
 </​file>​ </​file>​
 <note tip> <note tip>
-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 autoriser le partage dans le fichier de configuration de NFS : Il faudra ensuite autoriser le partage dans le fichier de configuration de NFS :
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 420: Ligne 481:
 __**Si j'ai le menu**__ (dans ce cas là, c'est le système choisi qui ne démarre pas) __**Si j'ai le menu**__ (dans ce cas là, c'est le système choisi qui ne démarre pas)
   * Vérifier que tous les fichiers pointés dans la configuration du menu sont accessibles et que les chemins sont corrects.   * Vérifier que tous les fichiers pointés dans la configuration du menu sont accessibles et que les chemins sont corrects.
-  * Vérifier si il n'y a pas un problème de droit +  * Vérifier si il n'y a pas un problème de droit
   * 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 : [[:​cron#​comment_fonctionne_cron|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>​
-Ne pas utiliser de lien symbolique à l'​intérieur du partage samba. Ils ne seront pas utilisable par le client ! +Ne pas utiliser de lien symbolique à l'​intérieur du partage samba. Ils ne seront pas utilisable par le client !
  
 Il est en revanche possible d'en utiliser avant le point de montage du partage. Il est en revanche possible d'en utiliser avant le point de montage du partage.
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.1557151578.txt.gz
  • Dernière modification: Le 06/05/2019, 16:06
  • par nicolas84