Qu'est-ce qu'un PXE ? Un article dans le Wiki résume la chose
$ sudo apt-get update && sudo apt-get install dnsmasq pxelinux syslinux-efi
dnsmasq : fournit DHCP et tftp
pxelinux : bootloader de la famille de syslinux, spécifique à PXE
syslinux-efi : contient la bibliothèque nécessaire pour gérer les clients qui se connecterons au PXE
toutes les manips seront réalisées dans le /mnt/data/netboot
$ mkdir /mnt/data/netboot/{bios,efi64}
$ cp \
/usr/lib/syslinux/modules/bios/{ldlinux,vesamenu,libcom32,libutil}.c32 \
/usr/lib/PXELINUX/pxelinux.0 \
/mnt/data/netboot/bios
$ cp \
/usr/lib/syslinux/modules/efi64/ldlinux.e64 \
/usr/lib/syslinux/modules/efi64/{vesamenu,libcom32,libutil}.c32 \
/usr/lib/SYSLINUX.EFI/efi64/syslinux.efi \
/mnt/data/netboot/efi64
on créé un répertoire boot qui hébergera les distributions que l'on veut rendre effecives dans notre menu boot.
on crée ensuite un répértoire selon le nom et la version du système que nous voulons fournir (ici, debian 11)
$ mkdir -p /mnt/data/netboot/boot/amd64/debian/11
$ sudo mount -o loop -t iso9660 /mnt/data/isos/debian-11.4.0-amd64-netinst.iso /media
$ sudo rsync -av /media/ /mnt/data/netboot/boot/amd64/debian/10
$ sudo umount /media
Les manips seront encore une fois réalisées dans le répértoire /mnt/data/netboot
MENU TITLE PXE Boot Menu
DEFAULT vesamenu.c32
LABEL local
MENU LABEL Boot from local drive
LOCALBOOT 0xffff
MENU BEGIN amd64
MENU TITLE amd64
MENU BEGIN Debian
MENU TITLE Debian
LABEL installgui
MENU LABEL ^Graphical install
KERNEL ::boot/amd64/debian/11/install.amd/vmlinuz
APPEND vga=788 initrd=::boot/amd64/debian/11/install.amd/gtk/initrd.gz --- quiet
LABEL install
MENU LABEL ^Install
KERNEL ::boot/amd64/debian/11/install.amd/vmlinuz
APPEND vga=788 initrd=::boot/amd64/debian/11/install.amd/initrd.gz --- quiet
MENU END
MENU END
Ce menu contient une entrée permettant à l'utilisateur de démarrer Debian à partir du disque dur local, un sous-menu avec l' étiquette amd64 et deux entrées pour la distribution Debian, installgui et install. Le premier lance l'installateur de la distribution en mode graphique, le second en mode textuel.
Afin de pouvoir obtenir une arborescence qui ressemble à ceci :
/mnt/data/netboot
├── bios
│ ├── ldlinux.c32
│ ├── libcom32.c32
│ ├── libutil.c32
│ ├── pxelinux.0
│ ├── pxelinux.cfg -> ../pxelinux.cfg
│ └── vesamenu.c32
├── boot
│ └── amd64
│ └── debian
│ └── 11
├── efi64
│ ├── ldlinux.e64
│ ├── libcom32.c32
│ ├── libutil.c32
│ ├── pxelinux.cfg -> ../pxelinux.cfg
│ ├── syslinux.efi
│ └── vesamenu.c32
└── pxelinux.cfg
└── default
Il nous faut créer des liens symboliques relatifs entre les répértoires pslinux.fg et bios ainsi qu'entre pslinuw.fg et efi64 afin de lier la configuration du répértoire effectuée dans le pslinux.fg à travers le fichier default à nos deux autres répértoires. Pour cela, on effectue la commande suivante :
$ ln -rs pxelinux.cfg bios && ln -rs pxelinux.cfg efi64
Attention ! Dans le fichier qui contient la configuration du dnsmasq, la version de Debian utilisée est la version 10, or dans notre cas, nous souhaitons utiliser la version 11, il faut alors modifier dans ce fichier les 10 par des 11 pour que ce que l'on fait soit fonctionnel. Ce fichier est /etc/dnsmasq.conf.
Qu'est ce que le DNS ?
Le Domain Name System ou DNS est un service informatique distribué utilisé qui traduit les noms de domaine Internet en adresse IP ou autres enregistrements.
Wikipédia
Qu'est ce que DHCP ?
Dynamic Host Configuration Protocol est un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres IP d’une station ou d'une machine, notamment en lui attribuant automatiquement une adresse IP et un masque de sous-réseau.
Wikipédia
echo port=0 >> /etc/dnsmasq.conf
le fichier /etc/dnsmasq.conf étant le fichier qui contient la configuration du dnsmasq.
echo interface=eth0 >> /etc/dnsmasq.conf
echo dhcp-range=192.168.0.100,192.168.0.200,12h >> /etc/dnsmasq.conf
echo enable-tftp >> /etc/dnsmasq.conf
echo tftp-root=/mnt/data/netboot >> /etc/dnsmasq.conf
echo pxe-service=x86PC,"PXELINUX (BIOS)",bios/pxelinux >> /etc/dnsmasq.conf
Première valeur : type de système client (x86PC)
Seconde valeur : texte du menu
Troisième valeur : fichier qui sera téléchargé par le client pour effectuer le démarrage.
Entrez le code suivant pour le mode EFI x86-64 :
echo pxe-service=x86-64_EFI,"PXELINUX (EFI)",efi64/syslinux.efi >> /etc/dnsmasq.conf
echo requêtes de journal
log-facility=/var/log/dnsmasq.log >> /etc/dnsmasq.conf
port=0
interface=eth0
dhcp-range=192.168.0.0,proxy
activer-TFTP
tftp-root=/mnt/data/netboot
pxe-service=x86PC,"PXELINUX (BIOS)",bios/pxelinux
pxe-service=x86-64_EFI,"PXELINUX (EFI)",efi64/syslinux.efi
requêtes de journal
log-facility=/var/log/dnsmasq.log
$ sudo systemctl redémarrer dnsmasq
Bien joué bg