PXE avec support EFI

De Le Wiki du Forum-Debian.fr
(Redirigé depuis PXE)
Aller à la navigation Aller à la recherche


Debian Stretch Serveur PXE avec support EFI

Installation par le réseau - Boot PXE - Basique

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur. De multiples distribution, installeurs et LiveCD peuvent être démarrées par le réseau.

Les avantages sont évidents:

  • Plus besoin de CD/DVD, Clef USB, etc.
  • Toutes vos images sont centralisées à un seul endroit;
  • Vous y accédez partout sur votre LAN.

Pour démarrer depuis le réseau il vous faudra deux serveurs (qui peuvent être sur la même machine évidemment):

  • Un serveur TFTP
  • Un serveur DHCP (Vous en avez normalement déjà un sur votre LAN)

Installation

TFTP

# apt install -y tftpd-hpa

C'est tout... Le serveur est accessible et fonctionnel sans plus de modifications:

# nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Vous penserez tout de même à ouvrir le pare-feu:

# iptables -A INPUT -p udp -m udp --dport 69 -j ACCEPT
# systemctl restart tftpd-hpa
# pgrep -lf tftpd
11881 in.tftpd
# netstat -uap | grep tftp 
udp        0      0 0.0.0.0:tftp            0.0.0.0:*                           11881/in.tftpd

DHCP

Si vous avez déjà un serveur DHCP Debian (isc-dhcp-server), il suffira de le configurer comme suit:

default-lease-time 600;
max-lease-time 7200;

allow booting;

# in this example, we serve DHCP requests from 192.168.0.(3 to 253)
# and we have a router at 192.168.0.1
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.3 192.168.0.253;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;
  option domain-name-servers 192.168.0.1;
  filename "pxelinux.0";
}

group {
  next-server 192.168.0.2;
  host tftpclient {
    filename "pxelinux.0";
  }
}

Les lignes importantes sont:

Le fichier d'amorce du serveur TFTP:

filename "pxelinux.0";

La définition du serveur tftp qui fournis l'amorce:

next-server 192.168.0.2;
host tftpclient {
  filename "pxelinux.0";


Premier test basique

Test Basique avec l'installeur Stretch:

# cd /srv/tftp/

Récupération et décompression des fichiers de l'installeur Debian:

# wget -c http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar -zxf netboot.tar.gz 
# rm netboot.tar.gz
# ls -l
total 8
drwxrwxr-x 3 root root 4096 Jun 15 11:34 debian-installer
lrwxrwxrwx 1 root root   47 Jun 15 11:34 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32
lrwxrwxrwx 1 root root   33 Jun 15 11:34 pxelinux.0 -> debian-installer/amd64/pxelinux.0
lrwxrwxrwx 1 root root   35 Jun 15 11:34 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
-rw-rw-r-- 1 root root   55 Jun 15 11:34 version.info

Et on teste: On redémarre le serveur tftp

# systemctl restart tftpd-hpa

On configure une machine pour démarrer sur le réseau (Qemu ou VirtualBox feront très bien l'affaire) et on boot:

Installation par le réseau - Boot PXE - Avancé avec support EFI

Nous allons choisir pour la suite une configuration un peu plus avancée. Vous pouvez démarrer des machines 100% UEFI avec un serveur PXE. Mais il vous faudra séparer les architectures.

En effet si le bootloader "(l)pxelinux.0" est capable de démarrer des machines clientes basée sur un Bios classique les machines utilisant l'UEFI devront utiliser le fichier "syslinux.efi" adéquat (EFI IA32 ou EFI X64 selon le client).

Notre choix se portera sur des répertoires séparés, mais pour minimiser la taille des fichiers sur le serveur certains sous-répertoires seront des liens symboliques:

 /srv/tftp/
          |_ boot/
          |      |_ debian/
          |      |         |_installer/
          |      |         |           |_stretch/
          |      |         |           |         |_amd64/_linux
          |      |         |           |                |_initrd.gz
          |      |         |           |_...
          |      |         |_...       
          |      |_ ubuntu
          |      |_ utilitaires
          |      |_ ...
          |
          |_ bios/
          |      |_ boot  -> ../boot/
          |      |_ pxelinux.cfg/
          |      |              |_default
          |      |              |_...
          |      |_ pxelinux.0
          |      |_ ldlinux.c32
          |      |_ (bios)*.c32
          |      |_ ...
          |
          |_ efi32/
          |      |_ boot  -> ../boot/
          |      |_ pxelinux.cfg/
          |      |              |_default
          |      |              |_...
          |      |_ syslinux.efi
          |      |_ ldlinux.e32
          |      |_ (efi32)*.c32
          |      |_ ...
          |
          |_ efi64/
          |      |_ boot  -> ../boot/
          |      |_ pxelinux.cfg/
          |      |              |_default
          |      |              |_...
          |      |_ syslinux.efi
          |      |_ ldlinux.e34
          |      |_ (efi64)*.c32
          |      |_ ...
          |_ ...

Prérequis

Un serveur DHCP (isc-dhcp-server). Inutile si vous disposez déjà d'un DHCP capable de servir les bootloaders Bios et EFI sur votre réseau... Il existe une alternative à isp-dhcp-server avec dnsmasq qui ne sera pas détaillée ici.

# apt install isc-dhcp-server

Les fichiers nécessaires:

# apt install syslinux syslinux-efi pxelinux memtest86+

Préparation des répertoires

# rm -rf /srv/tftp/
# mkdir -p /srv/tftp/boot/
# mkdir -p /srv/tftp/bios/pxelinux.cfg/
# mkdir -p /srv/tftp/efi32/pxelinux.cfg/
# mkdir -p /srv/tftp/efi64/pxelinux.cfg/

Attention, les liens vers le répertoire "boot" doivent être des liens relatifs (ie ils ne doivent pas sortir du serveur tftp):

# cd /srv/tftp/bios && ln -s ../boot boot
# cd /srv/tftp/efi32 && ln -s ../boot boot
# cd /srv/tftp/efi64 && ln -s ../boot boot

Les trois répertoires principaux et leurs menus

Partie bios

# cp /usr/lib/syslinux/modules/bios/* /srv/tftp/bios/
# cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/bios/
# cp /boot/memtest86+.bin /srv/tftp/bios/

On prépare une image Debian netboot pour tester:

# mkdir -p /srv/tftp/boot/debian/installer/stretch/
# cd /tmp
# wget -c http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar -zxf netboot.tar.gz 
# mv debian-installer/amd64/ /srv/tftp/boot/debian/installer/stretch/
# nano /srv/tftp/bios/pxelinux.cfg/default
DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 300
ONTIMEOUT 0
NOESCAPE 1

menu title **** Menu BIOS PXE ****

label 0  
menu label ^Demarrage sur disque dur local
menu default
localboot 0

label 1
menu label ^Redemarrage
kernel reboot.c32

label 2
menu label ^Arret
kernel poweroff.c32

LABEL 3
MENU LABEL ^HDT - Outil de detection materiel
KERNEL hdt.c32

LABEL 4
MENU LABEL Netboot Debian 9
KERNEL boot/debian/installer/stretch/amd64/linux
APPEND vga=788 initrd=boot/debian/installer/stretch/amd64/initrd.gz --- quiet

Partie efi64

# cp /usr/lib/syslinux/modules/efi64/* /srv/tftp/efi64/
# cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /srv/tftp/efi64/
# cp /boot/memtest86+.bin /srv/tftp/efi64/
# nano /srv/tftp/efi64/pxelinux.cfg/default
DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 300
ONTIMEOUT 0
NOESCAPE 1
KBDMAP french.kbd

menu title **** Menu EFI64 PXE ****

label 0
menu label ^Demarrage sur disque dur local
menu default
localboot 0

label 1
menu label ^Redemarrage
kernel reboot.c32

label 2
menu label ^Arret
kernel poweroff.c32

LABEL 3
MENU LABEL ^HDT - Outil de detection materiel
KERNEL hdt.c32

LABEL 4
MENU LABEL Netboot Debian 9
KERNEL boot/debian/installer/stretch/amd64/linux
APPEND vga=788 initrd=boot/debian/installer/stretch/amd64/initrd.gz --- quiet

Partie efi32

# cp /usr/lib/syslinux/modules/efi32/* /srv/tftp/efi32/
# cp /usr/lib/SYSLINUX.EFI/efi32/syslinux.efi /srv/tftp/efi32/
# cp /boot/memtest86+.bin /srv/tftp/efi32/
# nano /srv/tftp/efi32/pxelinux.cfg/default
default vesamenu.c32
prompt 0
timeout 300
ontimeout 0.0
noescape 1

menu title **** Menu EFI32 PXE ****

label 0
menu label ^Demarrage sur disque dur local
menu default
localboot 0

label 1
menu label ^Redemarrage
kernel reboot.c32

label 2
menu label ^Arret
kernel poweroff.c32

LABEL 3
MENU LABEL ^HDT - Outil de detection materiel
KERNEL hdt.c32

LABEL 4
MENU LABEL Netboot Debian 9
KERNEL boot/debian/installer/stretch/amd64/linux
APPEND vga=788 initrd=boot/debian/installer/stretch/amd64/initrd.gz --- quiet

Configuration du serveur DHCP

J'ai fais mes tests avec cette configuration:

option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;

subnet 10.10.10.0 netmask 255.255.255.0 {
	deny unknown-clients;
        option routers 10.10.10.254;
        range 10.10.10.200 10.10.10.202;

	option tftp-server-name "10.10.10.13";
	option root-path "/srv/tftp/";
	next-server 10.10.10.13;
#       filename "pxelinux.0";

	if option arch = 00:06 {
		filename "efi32/syslinux.efi";
	} else if option arch = 00:07 {
		filename "efi64/syslinux.efi";
	} else if option arch = 00:09 {
		filename "efi64/syslinux.efi";
	} else {
		filename "bios/pxelinux.0";
	}

}

host essai {
	hardware ethernet 08:00:27:6C:59:DA;
	fixed-address 10.10.10.222;
	}

La partie importante, pour servir les bootloader en fonction des clients est celle-ci:

Remplacer:

      filename "pxelinux.0";

Par:

	if option arch = 00:06 {
		filename "efi32/syslinux.efi";
	} else if option arch = 00:07 {
		filename "efi64/syslinux.efi";
	} else if option arch = 00:09 {
		filename "efi64/syslinux.efi";
	} else {
		filename "bios/pxelinux.0";
	}

Pour référence, voici la configuration d'une passerelle pfSense (Cela doit pouvoir s'adapter à d'autre type de serveurs DHCP):

Menus avancés et Démarrage de LiveCD et Utilitaires

Explications et customisations diverses

Clavier du Menu PXE en Français

Tout d'abord nous allons mettre le clavier du menu PXE en Français:

Source

Le fichier french.kbd provient de Knoppix.

Récupérez le fichier puis copiez-le dans les répertoires ad-hoc:

# cp french.kbd /srv/tftp/bios/pxelinux.cfg/
# cp french.kbd /srv/tftp/efi64/pxelinux.cfg/
# cp french.kbd /srv/tftp/efi32/pxelinux.cfg/

Ajouter cette entrée à vos fichiers /var/lib/tftpboot/pxelinux.cfg/default

KBDMAP pxelinux.cfg/french.kbd

Configuration du serveur nfs

Afin de pouvoir accéder aux ISOs depuis les clients, il nous faut un serveur NFS (nfs-server) qui servira les iso:

# apt install -y nfs-kernel-server

Afin de gagner de la place, nous nous servirons du répertoire partagé /srv/tftp/boot pour accéder aux contenus:

# nano /etc/exports
...
/srv/tftp/boot *(ro,async,no_root_squash,no_subtree_check)
# service nfs-kernel-server restart

Préparation des sous-menus et fichiers de configuration

Afin de faciliter la navigation dans les images netboot/live et utilitaires de votre menu (vos menus, puisqu'il faudra répéter l'opération pour efi32 et efi64), je vous propose ceci:

pxelinux.cfg/defaut = Menu par défaut (contient les menus essentiels, et les sous-menus);

pxelinux.cfg/pxe.conf = Menu qui contient vos arguments graphiques, résolution, couleurs...);

pxelinux.cfg/xxxxx.conf = Vos sous-menus.


Le fichiers defaut

DEFAULT vesamenu.c32
MENU BACKGROUND pxelinux.cfg/fond_pxe.png
MENU INCLUDE pxelinux.cfg/pxe.conf
TIMEOUT 150
ONTIMEOUT 0.0

MENU TITLE **** Menu BIOS PXE ****
LABEL 0.0
	MENU LABEL ^Demarrage sur disque dur local
	MENU DEFAULT
	localboot 0
LABEL 0.1
	MENU LABEL ^Redemarrage
	KERNEL reboot.c32
LABEL 0.2
	MENU LABEL ^Arret
	KERNEL poweroff.c32
LABEL 0.3
	MENU LABEL ^HDT - Hardware Detection Tool
	KERNEL hdt.c32
LABEL blank
MENU LABEL ----------------------------------------------------------------------
LABEL 1
	MENU label Debian Installeur ^9
	KERNEL images/debian-stretch-installer/amd64/linux
	APPEND vga=788 initrd=images/debian-stretch-installer/amd64/initrd.gz --- quiet
LABEL 2
	MENU debian-live-9.0.1-amd64-xfce
	SAY "Booting French (fr)..."
	KERNEL iso/debian-live-9.0.1-amd64-xfce/live/vmlinuz
	APPEND netboot=nfs netboot=nfs nfsroot=10.11.12.251:/srv/tftp/iso/debian-live-9.0.1-amd64-xfce initrd=iso/debian-live-9.0.1-amd64-xfce/live/initrd.img boot=live components locales=fr_FR.UTF-8
LABEL blank
MENU LABEL ----------------------------------------------------------------------
LABEL Utilitaires
	MENU LABEL ^Utilitaires
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/utilitaires.cfg
LABEL Inutilitaires
	MENU LABEL ^Inutilitaires
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/inutilitaires.cfg
LABEL Ubuntu
	MENU LABEL U^buntu
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/ubuntu.cfg


Associé à ce sous-fichier: pxe.conf

KBDMAP french.kbd
MENU RESOLUTION 1024 768
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0
MENU TABMSG [tab] pour editer
MENU MARGIN 25
MENU ROWS 14
MENU VSHIFT 10
MENU COLOR BORDER 0 #ffffffff #ee000000 std
MENU COLOR TITLE 0 #ffffffff #ee000000 std
MENU COLOR SEL 0 #ffffffff #85000000 std
MENU COLOR UNSEL 0 #ffffffff #ee000000 std
MENU COLOR PWDHEADER 0 #ff000000 #99ffffff rev
MENU COLOR PWDBORDER 0 #ff000000 #99ffffff rev
MENU COLOR PWDENTRY 0 #ff000000 #99ffffff rev
MENU COLOR HOTKEY 0 #ff00ff00 #ee000000 std
MENU COLOR HOTSEL 0 #ffffffff #85000000 std


Et vos sous-menus qui ressemblerons à ceci:

LABEL MENUPrincipal
	MENU LABEL ^Retour au MENU Principal
	KERNEL vesaMENU.c32
	APPEND pxelinux.cfg/default
 
LABEL 3.0
	KERNEL memdisk
	INITRD iso/super_grub2_disk_hybrid_2.02s9.iso bigraw
	MENU LABEL Super Grub Disk 2.02s9

LABEL 3.1
	MENU LABEL Gparted Live 0.26 i686
	KERNEL iso/gparted-live-0.26.1-3-i686/live/vmlinuz
	APPEND initrd=iso/gparted-live-0.26.1-3-i686/live/initrd.img vga=788 boot=live union=overlay username=user config components quiet noswap netboot=nfs nfsroot=10.11.12.251:/srv/tftp/iso/gparted-live-0.26.1-3-i686
...
etc.


Exemple complet d'un menu avec ses sous-menus

Préparation des images

Debian Live CD

Debian Live 9.0.1 amd64 mate

# mount -o loop /tmp/debian-live-9.0.1-amd64-mate.iso /mnt/iso
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/debian/live/debian-live-9.0.1-amd64-mate
# cp -r /mnt/iso/* /srv/tftp/boot/debian/live/debian-live-9.0.1-amd64-mate/
# umount /mnt/iso

Menu:

LABEL X.X
	MENU debian-live-9.0.1-amd64-mate
	SAY "Booting French (fr)..."
	KERNEL boot/debian/live/debian-live-9.0.1-amd64-mate/live/vmlinuz-4.9.0-3-amd64
	APPEND netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/debian/live/debian-live-9.0.1-amd64-mate initrd=boot/debian/live/debian-live-9.0.1-amd64-mate/live/initrd.img-4.9.0-3-amd64 boot=live components locales=fr_FR.UTF-8
Ubuntu Live CD

Ubuntu Live CD 17.04

# mount -o loop /tmp/ubuntu-17.04-desktop-amd64.iso /mnt/iso/
# mkdir -p /srv/tftp/boot/ubuntu/live/ubuntu_17.04_desktop
# cp -r /mnt/iso/* /srv/tftp/boot/ubuntu/live/ubuntu_17.04_desktop
# umount /mnt/iso

Menu:

LABEL Ubuntu 17.04 LiveCD
MENU Ubuntu 17.04 LiveCD (amd64)
kernel boot/ubuntu/live/ubuntu_17.04_desktop/casper/vmlinuz.efi
append root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/ubuntu/live/ubuntu_17.04_desktop initrd=boot/ubuntu/live/ubuntu_17.04_desktop/casper/initrd.lz quiet splash panic=5 --
Super Grub Disk

Télé-chargement dernière version: https://sourceforge.net/projects/supergrub2/files/

# mkdir -p /srv/tftp/boot/utilitaires/iso/
# cp /tmp/super_grub2_disk_hybrid_2.02s9.iso /srv/tftp/boot/utilitaires/iso/

Pour SuperGrubDisk nous allons utiliser memdisk qui est capable de lancer les ISOs directement depuis le menu PXE.

Cette méthode à ses limites: Si l'ISO est trop lourde le chargement mettra beaucoup de temps, avec les risque de plantages dus au réseau.

Évitez donc d'utiliser memdisk pour des ISOs dont la taille est supérieure à 300/400Mo.

# cp /usr/lib/syslinux/memdisk /srv/tftp/bios/

Que vous répéterez pour tous vos répertoires:

# cp /usr/lib/syslinux/memdisk /srv/tftp/efi32/
# cp /usr/lib/syslinux/memdisk /srv/tftp/efi64/

Menu:

LABEL SGD
        MENU LABEL Super Grub Disk 2.02s9
        KERNEL memdisk
        INITRD boot/utilitaires/iso/super_grub2_disk_hybrid_2.02s9.iso bigraw

Gparted Live

Récupérez l'ISO ici: https://sourceforge.net/projects/gparted/files/gparted-live-stable/

# mount -o loop /tmp/gparted-live-0.28.1-1-amd64.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/gparted-live-0.28.1-1-amd64
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/gparted-live-0.28.1-1-amd64/
LABEL GPartedLive
	MENU LABEL Gparted Live 0.28.1-1 amd64
	KERNEL boot/utilitaires/live/gparted-live-0.28.1-1-amd64/live/vmlinuz
	APPEND initrd=boot/utilitaires/live/gparted-live-0.28.1-1-amd64/live/initrd.img vga=788 boot=live union=overlay username=user config components quiet noswap netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/gparted-live-0.28.1-1-amd64

Rescatux

Récupérez l'ISO ici: http://www.supergrubdisk.org/category/download/rescatuxdownloads/rescatux-stable/

# cp /tmp/rescatux_cdrom_usb_hybrid_i386_amd64-486_0.30.2_sg2d.iso /srv/tftp/boot/utilitaires/iso/
LABEL RESCATUX
	MENU LABEL Rescatux 0.30.2
	linux memdisk
	initrd boot/utilitaires/iso/rescatux_cdrom_usb_hybrid_i386_amd64-486_0.30.2_sg2d.iso
	APPEND iso bigraw

SystemRescueCD

https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/

SystemRescueCD-x86-5.0.2

# mount -o loop /tmp/systemrescuecd-x86-5.0.2.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2/
# umount /mnt/iso
LABEL SRCD32
	MENU LABEL System Rescue CD 5.0.2 32
	KERNEL boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/rescue32
	APPEND initrd=boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/initram.igz dodhcp netboot=nfs nfsboot=10.10.10.13:/srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2

LABEL SRCD64
	MENU LABEL System Rescue CD 5.0.2 64
	KERNEL boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/rescue64
	APPEND initrd=boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/initram.igz dodhcp netboot=nfs nfsboot=10.10.10.13:/srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2

Trinity Rescue CD

http://trinityhome.org/Home/index.php?content=TRINITY_RESCUE_KIT_DOWNLOAD&front_id=12&lang=en&locale=de

# mount -o loop /tmp/trinity-rescue-kit.3.4-build-372.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir /srv/tftp/boot/utilitaires/live/trinity-rescue-kit.3.4-build-372
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/trinity-rescue-kit.3.4-build-372/
# umount /mnt/iso/

Étant donné qu'il y a des fonctions de remise à zéro de mots de passes, nous protégeons ce menu avec un mot de passe généré par la commande suivante:

# mkpasswd -H md5 "password"
$1$ea8ualKp$zT7lW2KhNQkinMZo.JTD41
LABEL 0.6
	MENU LABEL  ^Trinity Rescue Kit 372 (default mode, with text MENU)
	MENU PASSWD $6$X73Wfro2$oXCDdfxdBlKUw0jVOfgkZ6dJMUS3BvwPHFGdZby12CMAx7rR5VS9WPvjdZCXGw.Yqv5/dZElVsoeC7dCNc3rd1$
	KERNEL boot/utilitaires/live/trinity-rescue-kit.3.4-build-372/kernel.trk
	APPEND initrd=boot/utilitaires/live/trinity-rescue-kit.3.4-build-372/initrd.trk ramdisk_size=65536 root=/dev/ram0 vga=788 trknfs=10.10.10.13:/srv/tftp/boot/utilitaires/live/trinity-rescue-kit.3.4-build-372 ip=::::::dhcp  splash=verbose pci=conf1 trkmenu
	timeout 100

DSL

http://www.damnsmalllinux.org/download.html

# mount -o loop /tmp/dsl-4.4.10-initrd.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/dsl-4.4.10-initrd
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/dsl-4.4.10-initrd/
# umount /mnt/iso
label DSL
	MENU LABEL Damn Small Linux 4.4.10
	KERNEL boot/utilitaires/live/dsl-4.4.10-initrd/boot/isolinux/linux24
	APPEND initrd=boot/utilitaires/live/dsl-4.4.10-initrd/boot/isolinux/minirt24.gz ramdisk_size=100000 init=/etc/init apm=power-off lang=fr vga=791 nomce BOOT_IMAGE=expert

Bodhi

http://www.bodhilinux.com/download/

# mount -o loop /tmp/bodhi-4.2.0-64.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/bodhi-4.2.0-64
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/bodhi-4.2.0-64/
# umount /mnt/iso

On règle un problème de droit sur le fichier vmlinuz:

# chmod 644 boot/utilitaires/live/bodhi-4.2.0-64/casper/vmlinuz.efi

menu:

LABEL Bodhi-4.2
	MENU LABEL Bodhi Linux 4.2
	KERNEL iso/bodhi-4.2.0-64/casper/vmlinuz.efi
	APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.11.12.251:/srv/tftp/iso/bodhi-4.2.0-64 initrd=iso/bodhi-4.2.0-64/casper/initrd.lz quiet splash panic=5 --

Clonezilla

http://clonezilla.org/downloads.php

# mount -o loop /tmp/clonezilla-live-2.5.0-25-amd64.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64
# umount /mnt/iso

Menu:

LABEL CLONEZILLA
	MENU LABEL Clonezilla live (Parametres par default, VGA 800x600)
	KERNEL boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64/live/vmlinuz
	APPEND netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64 initrd=boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" 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


RedoBackup

http://redobackup.org/download.php

# mount -o loop /tmp/redobackup-livecd-1.0.4.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
# mkdir -p /srv/tftp/boot/utilitaires/live/redobackup-livecd-1.0.4
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/redobackup-livecd-1.0.4/
# umount /mnt/iso

Menu:

LABEL REDOBACKUP
	MENU LABEL Redo Backup LiveCD 1.0.4
	KERNEL boot/utilitaires/live/redobackup-livecd-1.0.4/casper/vmlinuz
	APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/redobackup-livecd-1.0.4 initrd=boot/utilitaires/live/redobackup-livecd-1.0.4/casper/initrd.lz quiet splash panic=5 --


Slitaz

http://www.slitaz.org/fr/get/

# cp /tmp/slitaz-4.0.iso /srv/tftp/boot/utilitaires/iso/
LABEL Slitaz
        MENU LABEL Slitaz 4.0
        KERNEL memdisk
        APPEND iso bigraw initrd=iso/slitaz-4.0.iso

Comodo Rescue Disk

Peut-être utile si vous avez des machines Windows sur votre réseau. Ce live CD basé sur Slitaz permet de lancer un anti-virus sur une machine non bootée depuis son OS.

https://www.comodo.com/business-security/network-protection/rescue-disk.php

# cp /tmp/comodo_rescue_disk_2.0.261647.1.iso /srv/tftp/boot/inutilitaires/iso/
LABEL Comodo
        MENU LABEL Comodo Rescue Disk 2.0
        KERNEL memdisk
        APPEND iso bigraw initrd=boot/inutilitaires/iso/comodo_rescue_disk_2.0.261647.1.iso


LMDE - Linux Mint Debian Edition
# mount -o loop /tmp/lmde-2-201701-cinnamon-64bit.iso /mnt/iso
# mkdir -p /srv/tftp/boot/utilitaires/live/lmde-2-201701-cinnamon-64bit
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/lmde-2-201701-cinnamon-64bit/
# umount /mnt/iso/

Menu:

LABEL lmde
	MENU LABEL LMDE 2 201701 cinnamon 64bit
	SAY "Booting LMDE Debian..."
	KERNEL boot/utilitaires/live/lmde-2-201701-cinnamon-64bit/live/vmlinuz
	APPEND netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/lmde-2-201701-cinnamon-64bit initrd=boot/utilitaires/live/lmde-2-201701-cinnamon-64bit/live/initrd.lz boot=live components locales=fr_FR.UTF-8

Kali Linux
# mount -o loop kali-linux-2017.1-amd64.iso /mnt/iso/
# mkdir -p /srv/tftp/boot/utilitaires/live/kali-linux-2017.1-amd64
# cp -r /mnt/iso/* /srv/tftp/boot/utilitaires/live/kali-linux-2017.1-amd64
# umount /mnt/iso

Menu:

label kali
        menu label Kali Linux 2017.1 amd64 Live
        menu default
        linux boot/utilitaires/live/kali-linux-2017.1-amd64/live/vmlinuz
        initrd boot/utilitaires/live/kali-linux-2017.1-amd64/live/initrd.img
        append boot=live components splash username=root hostname=kali netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/kali-linux-2017.1-amd64

AVG Rescue CD GNU/Linux

https://share.avg.com/arl/

# cp /tmp/avg_arl_cdi_all_120_160420a12074.iso /srv/tftp/boot/inutilitaires/iso/
label AVG
        MENU LABEL AVG Rescue CD Gnu/Linux
        kernel memdisk iso bigraw
        append initrd=boot/inutilitaires/iso/avg_arl_cdi_all_120_160420a12074.iso

Alternative:

# mount -o loop boot/inutilitaires/iso/avg_arl_cdi_all_120_160420a12074.iso /mnt/iso
# mkdir -p /srv/tftp/boot/inutilitaires/live/avg_rescue_cd_gnu_linux
# cp -r /mnt/iso/* /srv/tftp/boot/inutilitaires/live/avg_rescue_cd_gnu_linux/
# umount /mnt/iso 
label AVG
        MENU LABEL AVG Rescue CD Gnu/Linux
        KERNEL boot/inutilitaires/live/avg_rescue_cd_gnu_linux/isolinux/vmlinuz
        APPEND max_loop=255 initrd=boot/inutilitaires/live/avg_rescue_cd_gnu_linux/isolinux/initrd.lzm vga=788 init=linuxrc vga=791 video=vesafb reboot=bios ramdisk_size=32768

Menus qui ne fonctionnent pas (encore)

Ultimate Boot CD

Je n'ai pas réussi à démarrer dessus malgré tous mes essais...

modprobe: ERROR: could not insert 'phram': Input/output error
mount: special device /dev/mtdblock0 doesnt exist

http://www.ultimatebootcd.com/download.html

# cp /tmp/ubcd537.iso /srv/tftp/boot/utilitaires/iso/
LABEL UBCMenu-iso
        MENU LABEL Ultimate Boot CD 5.3.7
        LINUX memdisk
        INITRD boot/utilitaires/iso/ubcd537.iso
        APPEND iso raw
Antix

https://sourceforge.net/projects/antix-linux/

Malheureusement pas de ntboot possible.

Utilisation obligatoire de memdisk pour monter l'Iso. Temps de chargement un peu long (En fonction de votre LAN).

# cp /tmp/antiX-16.2_x64-base.iso /srv/tftp/boot/utilitaires/iso/

menu:

LABEL Antix
        MENU LABEL antiX-16.2_x64-base (15 June 2017)
        KERNEL memdisk
        APPEND iso raw initrd=boot/utilitaires/iso/antiX-16.2_x64-base.iso

Exemples de Menus

Pour référence, voici mes menus et fichiers de conf pour la partie BIOS de mon PXE:

# ls /srv/tftp/bios/
boot	    cpu.c32	   dmitest.c32	 hexdump.c32   kontron_wdt.c32	libutil.c32  memtest86+.bin  pwd.c32	   sdi.c32	 whichsys.c32
cat.c32     cpuid.c32	   elf.c32	 host.c32      ldlinux.c32	linux.c32    menu.c32	     pxechn.c32    sysdump.c32	 zzjson.c32
chain.c32   cpuidtest.c32  ethersel.c32  ifcpu64.c32   lfs.c32		ls.c32	     pci.c32	     pxelinux.0    syslinux.c32
cmd.c32     debug.c32	   gfxboot.c32	 ifcpu.c32     libcom32.c32	lua.c32      pcitest.c32     pxelinux.cfg  vesa.c32
cmenu.c32   dhcp.c32	   gpxecmd.c32	 ifmemdsk.c32  libgpl.c32	mboot.c32    pmload.c32      reboot.c32    vesainfo.c32
config.c32  disk.c32	   gpxelinux.0	 ifplop.c32    liblua.c32	memdisk      poweroff.c32    rosh.c32	   vesamenu.c32
cptime.c32  dmi.c32	   hdt.c32	 kbdmap.c32    libmenu.c32	meminfo.c32  prdhcp.c32      sanboot.c32   vpdtest.c32
# ls /srv/tftp/bios/pxelinux.cfg/
default  fond_pxe.png  french.kbd  inutilitaires.cfg  inutilitaires.png  pxe.conf  ubuntu.cfg  ubuntu.png  utilitaires.cfg  utilitaires.png

pxelinux.cfg/defaut

# cat pxelinux.cfg/default
DEFAULT vesamenu.c32
MENU BACKGROUND pxelinux.cfg/fond_pxe.png
MENU INCLUDE pxelinux.cfg/pxe.conf
TIMEOUT 150
ONTIMEOUT 0.0

MENU TITLE **** Menu BIOS PXE ****
LABEL 0.0
	MENU LABEL ^Demarrage sur disque dur local
	MENU DEFAULT
	localboot 0
LABEL 0.1
	MENU LABEL ^Redemarrage
	KERNEL reboot.c32
LABEL 0.2
	MENU LABEL ^Arret
	KERNEL poweroff.c32
LABEL 0.3
	MENU LABEL ^HDT - Hardware Detection Tool
	KERNEL hdt.c32
LABEL blank
MENU LABEL ----------------------------------------------------------------------
LABEL 1.0
	MENU LABEL Debian Installeur ^9
	KERNEL boot/debian/installer/stretch/amd64/linux
	APPEND vga=788 initrd=boot/debian/installer/stretch/amd64/initrd.gz --- quiet
LABEL 1.1
	MENU LABEL debian-live-9.0.1-amd64-mate
	SAY "Booting French (fr)..."
	KERNEL boot/debian/live/debian-live-9.0.1-amd64-mate/live/vmlinuz-4.9.0-3-amd64
	APPEND netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/debian/live/debian-live-9.0.1-amd64-mate initrd=boot/debian/live/debian-live-9.0.1-amd64-mate/live/initrd.img-4.9.0-3-amd64 boot=live components locales=fr_FR.UTF-8
LABEL blank
MENU LABEL ----------------------------------------------------------------------
LABEL Utilitaires
	MENU LABEL ^Utilitaires
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/utilitaires.cfg
LABEL Inutilitaires
	MENU LABEL ^Inutilitaires
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/inutilitaires.cfg
LABEL Ubuntu
	MENU LABEL U^buntu
	KERNEL vesamenu.c32
	APPEND pxelinux.cfg/ubuntu.cfg

pxelinux.cfg/pxe.conf

# cat pxelinux.cfg/pxe.conf
KBDMAP pxelinux.cfg/french.kbd
MENU RESOLUTION 1024 768
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0
MENU TABMSG [tab] pour editer
MENU MARGIN 25
MENU ROWS 14
MENU VSHIFT 10
MENU COLOR BORDER 0 #ffffffff #ee000000 std
MENU COLOR TITLE 0 #ffffffff #ee000000 std
MENU COLOR SEL 0 #ffffffff #85000000 std
MENU COLOR UNSEL 0 #ffffffff #ee000000 std
MENU COLOR PWDHEADER 0 #ff000000 #99ffffff rev
MENU COLOR PWDBORDER 0 #ff000000 #99ffffff rev
MENU COLOR PWDENTRY 0 #ff000000 #99ffffff rev
MENU COLOR HOTKEY 0 #ff00ff00 #ee000000 std
MENU COLOR HOTSEL 0 #ffffffff #85000000 std

pxelinux.cfg/utilitaires.cfg

# cat pxelinux.cfg/utilitaires.cfg
MENU TITLE Utilitaires
MENU INCLUDE pxelinux.cfg/pxe.conf
MENU BACKGROUND pxelinux.cfg/utilitaires.png

LABEL MenuPrincipal
	MENU LABEL ^Retour au MENU Principal
	KERNEL vesaMENU.c32
	APPEND pxelinux.cfg/default

LABEL 0.0
	MENU LABEL ^Super Grub Disk 2.02s9
	KERNEL memdisk
	INITRD boot/utilitaires/iso/super_grub2_disk_hybrid_2.02s9.iso bigraw
LABEL 0.1
	MENU LABEL ^Gparted Live 0.28.1-1 amd64
	KERNEL boot/utilitaires/live/gparted-live-0.28.1-1-amd64/live/vmlinuz
	APPEND initrd=boot/utilitaires/live/gparted-live-0.28.1-1-amd64/live/initrd.img vga=788 boot=live union=overlay username=user config components quiet noswap netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/gparted-live-0.28.1-1-amd64
LABEL 0.2
	MENU LABEL System Rescue CD 5.0.2 ^32
	KERNEL boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/rescue32
	APPEND initrd=boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/initram.igz dodhcp netboot=nfs nfsboot=10.10.10.13:/srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2
LABEL 0.3
	MENU LABEL System Rescue CD 5.0.2 ^64
	KERNEL boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/rescue64
	APPEND initrd=boot/utilitaires/live/systemrescuecd-x86-5.0.2/isolinux/initram.igz dodhcp netboot=nfs nfsboot=10.10.10.13:/srv/tftp/boot/utilitaires/live/systemrescuecd-x86-5.0.2
LABEL 0.4
	MENU LABEL ^Ultimate Boot CD 5.3.7
	LINUX memdisk
	INITRD boot/utilitaires/iso/ubcd537.iso
	APPEND iso
LABEL 0.5
	MENU LABEL Rescatu^x 0.30.2
	linux memdisk
	initrd boot/utilitaires/iso/rescatux_cdrom_usb_hybrid_i386_amd64-486_0.30.2_sg2d.iso
	APPEND iso
LABEL 0.6
	MENU LABEL  ^Trinity Rescue Kit 372 (default mode, with text MENU)
	KERNEL boot/utilitaires/live/trinity-rescue-kit.3.4-build-372/kernel.trk
	APPEND initrd=boot/utilitaires/live/trinity-rescue-kit.3.4-build-372/initrd.trk ramdisk_size=65536 root=/dev/ram0 vga=788 trknfs=10.10.10.13:/srv/tftp/boot/utilitaires/live/trinity-rescue-kit.3.4-build-372 ip=::::::dhcp  splash=verbose pci=conf1 trkMENU
	timeout 100
LABEL 0.7
	MENU LABEL ^Damn Small Linux 4.4.10
	KERNEL boot/utilitaires/live/dsl-4.4.10-initrd/boot/isolinux/linux24
	APPEND initrd=boot/utilitaires/live/dsl-4.4.10-initrd/boot/isolinux/minirt24.gz ramdisk_size=100000 init=/etc/init apm=power-off lang=fr vga=791 nomce BOOT_IMAGE=expert
LABEL 0.8
	MENU label ^Bodhi Linux 4.2.0 amd64
	KERNEL boot/utilitaires/live/bodhi-4.2.0-64/casper/vmlinuz.efi
	APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/bodhi-4.2.0-64 initrd=boot/utilitaires/live/bodhi-4.2.0-64/casper/initrd.lz quiet splash panic=5 --
LABEL 0.9
	MENU LABEL ^Clonezilla live (Parametres par default, VGA 800x600)
	KERNEL boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64/live/vmlinuz
	APPEND netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64 initrd=boot/utilitaires/live/clonezilla-live-2.5.0-25-amd64/live/initrd.img boot=live union=overlay username=user config components quiet noswap edd=on nomodeset noeject locales= keyboard-layouts= ocs_live_run="ocs-live-general" 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
LABEL 0.10
	MENU LABEL Red^o Backup LiveCD 1.0.4
	KERNEL boot/utilitaires/live/redobackup-livecd-1.0.4/casper/vmlinuz
	APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/utilitaires/live/redobackup-livecd-1.0.4 initrd=boot/utilitaires/live/redobackup-livecd-1.0.4/casper/initrd.lz quiet splash panic=5 --
LABEL 0.11
        MENU LABEL Slitaz 4.0
        KERNEL memdisk
        APPEND iso bigraw initrd=iso/slitaz-4.0.iso

pxelinux.cfg/ubuntu.cfg

# cat pxelinux.cfg/ubuntu.cfg 
MENU TITLE Ubuntu
MENU include pxelinux.cfg/pxe.conf
MENU background pxelinux.cfg/ubuntu.png

LABEL MainMenu
MENU LABEL ^Retour au MENU Principal
KERNEL vesamenu.c32
APPEND pxelinux.cfg/default
 
LABEL Ubuntu 17.04 LiveCD
MENU Ubuntu 17.04 LiveCD (amd64)
kernel boot/ubuntu/live/ubuntu_17.04_desktop/casper/vmlinuz.efi
append root=/dev/nfs boot=casper netboot=nfs nfsroot=10.10.10.13:/srv/tftp/boot/ubuntu/live/ubuntu_17.04_desktop initrd=boot/ubuntu/live/ubuntu_17.04_desktop/casper/initrd.lz quiet splash panic=5 --

LABEL 2.1
MENU LABEL ^Xubuntu 16.04 LiveCD (amd64)
KERNEL iso/xubuntu_16.04_desktop/casper/vmlinuz.efi
APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.11.12.251:/srv/tftp/iso/xubuntu_16.04_desktop initrd=iso/xubuntu_16.04_desktop/casper/initrd.lz quiet splash panic=5 --

LABEL 2.2
MENU LABEL ^Lubuntu 17.04 desktop amd64 (amd64)
KERNEL iso/lubuntu-17.04-desktop-amd64/casper/vmlinuz.efi
APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=10.11.12.251:/srv/tftp/iso/lubuntu-17.04-desktop-amd64 initrd=iso/lubuntu-17.04-desktop-amd64/casper/initrd.lz quiet splash panic=5 --

pxelinux.cfg/inutilitaires.cfg

# cat pxelinux.cfg/inutilitaires.cfg
MENU TITLE Inutilitaires
MENU INCLUDE pxelinux.cfg/pxe.conf
MENU BACKGROUND pxelinux.cfg/inutilitaires.png

LABEL MENUPrincipal
        MENU LABEL ^Retour au MENU Principal
        KERNEL vesaMENU.c32
        APPEND pxelinux.cfg/default

LABEL dosbootdisk
	MENU LABEL ^DOS v6.22
	kernel memdisk
	append initrd=iso/Dos6.22.img
 
LABEL winbootdisk
	MENU LABEL ^Windows 98 Bootdisk
	kernel memdisk
	append initrd=iso/Windows98.img

LABEL freedos
	MENU LABEL ^FreeDOS v1.2
	kernel memdisk
	append initrd=iso/FD12LITE.img

LABEL hirensbootcd
        MENU LABEL ^Hirens Boot CD v15.2
        TEXT HELP
        Hirens Boot CD avec de nombreuses options (y compris mini-Windows XP).
        ENDTEXT
        KERNEL memdisk
        APPEND iso raw initrd=iso/Hirens.BootCD.15.2.iso

LABEL winpe
	MENU LABEL Windows PE
        KERNEL memdisk
	APPEND iso raw initrd=iso/WinPE.iso

label Kon-Boot
	MENU LABEL ^Kon-Boot 2.4 Floppy Image
	menu passwd $6$X73Wfro2$oXCDdfxdBlKUw0jVOfgkZ6dJMUS3BvwPHFGdZby12CMAx7rR5VS9WPvjdZCXGw.Yqv5/dZElVsoeC7dCNc3rd1$
	kernel memdisk
	append initrd=iso/kon-bootFLOPPY.img

LABEL Comodo
        MENU LABEL Comodo Rescue Disk 2.0
        KERNEL memdisk
        APPEND iso bigraw initrd=boot/inutilitaires/iso/comodo_rescue_disk_2.0.261647.1.iso

label Falcon
        MENU LABEL Falcon
        kernel memdisk iso bigraw
        append initrd=boot/inutilitaires/iso/F4UBCD-4.61.iso

Mots cléf : Debian Stretch serveur PXE Netboot support EFI - Debian Live CD - Ubuntu Live CD - Super Grub Disk - Gparted Live - Rescatux - SystemRescueCD - Ultimate Boot CD - Trinity Rescue CD - DSL - Bodhi - Clonezilla - RedoBackup

Lol (discussion) 26 juin 2017 à 16:16 (CEST)