Création d'un serveur PXE
Cette documentation est basée sur un sujet de travaux pratiques rédigé par Jean-Philippe Zimmer (IUT Dijon-Auxerre – Département Réseaux et Télécommunications – Université de Bourgogne) en 2011.
Procédure validée sur Xubuntu 24.04 et Debian 12.
Présentation du projet
Nous souhaitons démarrer un système Debian par le réseau. Pour cela, nous utilisons la technologie PXE (Pre-boot eXecution Environment) qui permet à un ordinateur de démarrer depuis le réseau en récupérant un système d’exploitation se trouvant sur un serveur.
Nous installerons deux systèmes Debian : le serveur et le client démarré depuis le réseau.
Installation et configuration du client
Démarrer la machine client sur un live Xubuntu et créer sur le disque dur une partition formatée en ext2. Pour la suite de cette documentation, nous considèrerons que cette partition est connectée sur /dev/sda1.
Installer debootstrap :
apt -y install debootstrap
Monter la partition sur /mnt :
mount /dev/sda1 /mnt
Effectuer une installation de base avec debootstrap :
debootstrap --arch i386 stable /mnt/ http://deb.debian.org/debian/
Monter les répertoires du nouveau système fraîchement installés :
mount -t sysfs /sys /mnt/sys mount -t proc /proc /mnt/proc mount --bind /dev /mnt/dev mount -t devpts /dev/pts /mnt/dev/pts mount --bind /tmp /mnt/tmp
Entrer dans le système du client :
chroot /mnt
Pour la suite de cette documentation, les commandes à exécuter lors du chroot seront précédés par chroot>
.
Définir le mot de passe du compte root (si nécesaire) :
chroot> passwd root
Modifier le nom de la machine dans le fichier /etc/hostname et ajouter le nom de machine sur la ligne 127.0.0.1
dans le fichier /etc/hosts.
Créer un utilisateur standard :
chroot> adduser antoine
Définir la langue du système en français :
chroot> apt -y install locales chroot> dpkg-reconfigure locales
Cocher fr_FR.UTF-8
et choisir cette langue par défaut.
Définir le fuseau horaire de l'horloge :
chroot> dpkg-reconfigure tzdata
Choisir Europe
puis Paris
.
Modifier le fichier /etc/apt/sources.list comme suit :
deb http://deb.debian.org/debian/ stable main contrib non-free non-free-firmware deb http://security.debian.org/debian-security stable-security main contrib non-free non-free-firmware deb http://deb.debian.org/debian/ stable-updates main contrib non-free non-free-firmware deb http://deb.debian.org/debian/ stable-proposed-updates main contrib non-free non-free-firmware deb http://ftp.debian.org/debian stable-backports main contrib non-free non-free-firmware
Mettre à jour les dépôts et installer les paquets nécessaires (à personnaliser si vous le souhaitez).
chroot> apt update chroot> apt -y install bash-completion nano mc xfce4 lightdm network-manager network-manager-gnome gparted gsmartcontrol xfce4-whiskermenu-plugin numix-gtk-theme papirus-icon-theme dmz-cursor-theme cheese vlc firefox-esr firefox-esr-l10n-fr engrampa mate-calc mousepad partclone dcfldd console-data sudo terminator krusader kate geany geany-plugins simple-scan grsync audacity blueman wpasupplicant grub2 os-prober debootstrap gvfs-backends gvfs-fuse qt5ct qt5-style-plugins xfce4-power-manager system-config-printer cups gnome-firmware firmware-linux-nonfree firmware-amd-graphics firmware-ath9k-htc firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-intel-sound firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-linux firmware-linux-free firmware-linux-nonfree firmware-microbit-micropython firmware-microbit-micropython-doc firmware-misc-nonfree firmware-myricom firmware-netronome firmware-netxen firmware-qcom-media firmware-qcom-soc firmware-qlogic firmware-realtek firmware-samsung firmware-siano firmware-sof-signed firmware-ti-connectivity firmware-tomu firmware-zd1211 hdmi2usb-fx2-firmware midisport-firmware sigrok-firmware-fx2lafw ubertooth-firmware ubertooth-firmware-source arm-trusted-firmware-tools atmel-firmware bluez-firmware dahdi-firmware-nonfree dns323-firmware-tools broadcom-sta-common broadcom-sta-dkms broadcom-sta-source bluetooth bluez bluez-cups bluez-firmware bluez-obexd bluez-tools pulseaudio-module-bluetooth pulseaudio-module-gsettings pulseaudio-module-zeroconf mesa-utils mesa-utils-extra mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers vulkan-tools vulkan-validationlayers linux-image-686 chroot> apt -y upgrade
Lors de l'installation du paquet console-data
, vous serez amené à choisir la configuration du clavier. Choisir l'option Choisir un codage clavier dans la liste complète
puis pc / azerty / French / Same as X11 (latin9)
.
Installer les composants standards :
chroot> tasksel install standard print-server
Ajouter l'utilisateur standard dans le groupe sudo (si nécessaire) :
chroot> usermod -a -G sudo antoine
Modifier le fichier /etc/fstab comme suit :
UUID=<UUID de sda1> / ext2 defaults 0 1 tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/tmp tmpfs defaults 0 0 tmpfs /var/log tmpfs defaults 0 0
Configurer la connexion automatique pour l'utilisateur standard à l'environnement graphique en décommentant et modifiant les lignes suivantes dans /etc/lightdm/lightdm.conf :
autologin-user=antoine autologin-user-timeout=0
Pour une connexion automatique du système en mode ligne de commande, modifier le fichier /etc/systemd/system/getty.target.wants/getty@tty1.service et replacer la ligne suivante :
ExecStart=-/sbin/agetty --autologin antoine --noclear %I $TERM
Définir le curseur de la souris par défaut :
chroot> update-alternatives --config x-cursor-theme
Définir le gestionnaire de thème Qt :
echo "QT_QPA_PLATFORMTHEME=qt5ct" >> /etc/environment
Désactiver l'enregistrement de session XFCE :
chroot> mkdir /etc/xdg/xfce4/kiosk chroot> echo "[xfce4-session]" > /etc/xdg/xfce4/kiosk/kioskrc chroot> echo "SaveSession=NONE" >> /etc/xdg/xfce4/kiosk/kioskrc
Installer GRUB :
chroot> os-prober chroot> grub-install /dev/sda
Quitter le chroot :
chroot> exit
Démonter les répertoires du système de fichiers chrooté :
umount /mnt/sys umount /mnt/proc umount /mnt/dev/pts umount /mnt/dev umount /mnt/tmp
Redémarrer la machine virtuelle sur le disque /dev/sda et personnaliser la configuration selon vos besoins.
Désactiver la mise en veille, l'hibernation depuis la session graphique :
xfconf-query -c xfce4-session -np '/shutdown/ShowSuspend' -t 'bool' -s 'false' xfconf-query -c xfce4-session -np '/shutdown/ShowHibernate' -t 'bool' -s 'false'
Un fois cela fait, redémarrer sur le live Xubuntu et remonter les partitions :
mount /dev/sda1 /mnt
Installer le paquet live-boot sur le système de maintenance :
mount -t sysfs /sys /mnt/sys mount -t proc /proc /mnt/proc mount --bind /dev /mnt/dev mount -t devpts /dev/pts /mnt/dev/pts mount --bind /tmp /mnt/tmp chroot /mnt
chroot> apt -y install live-boot chroot> update-initramfs -u chroot> apt clean chroot> exit
Dans le fichier /mnt/etc/fstab, retirer le montage de la racine.
Éteindre le client.
Installation et configuration du serveur
Installer les paquets suivants :
apt install isc-dhcp-server tftpd-hpa syslinux-common syslinux-efi pxelinux nftables
Configurer l'adresse IP du serveur (ici : 192.168.0.100) en éditant le fichier /etc/network/interfaces :
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp0s3 iface enp0s3 inet static address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1
Autoriser le trafic vers le serveur PXE et en loopback en modifiant le fichier /etc/nftables.conf. Adapter selon les autres services déjà installés :
#!/usr/sbin/nft -f flush ruleset table inet tableinet { chain input { type filter hook input priority filter; policy drop; iifname lo accept udp dport 67 accept udp dport 69 accept ct state {established,related} accept } chain forward { type filter hook forward priority filter; } chain output { type filter hook output priority filter; } }
Activer et redémarrer nftables :
systemctl enable nftables.service systemctl restart nftables.service
Configuration du serveur DHCP
Dans notre cas, nous travaillerons sur un réseau 192.168.0.0/24. Éditer le fichier /etc/dhcp/dhcpd.conf. Cette configuration détecte si la machine utilise un BIOS, un EFI 32 ou 64 bits et renvoie le fichier approprié :
# # Sample configuration file for ISC dhcpd for Debian # # # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the # behavior of the version 2 packages ('none', since DHCP v2 didn't # have support for DDNS.) ddns-update-style none; default-lease-time 43200; max-lease-time 86400; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers 192.168.0.1; allow bootp; allow booting; next-server 192.168.0.100; option arch code 93 = unsigned integer 16; 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"; } subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; range 192.168.0.10 192.168.0.90; }
Redémarrer le service :
service isc-dhcp-server restart
Configuration TFTP
Éditer le fichier /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" RUN_DAEMON="yes"
Redémarrer le service :
service tftpd-hpa restart
Création du menu au démarrage
Créer l'arborescence accueillant les fichiers pour démarrer les machines BIOS, EFI 32 et 64 bits ainsi que le dossier accueillant les systèmes à démarrer et la configuration du PXE :
mkdir -p /srv/tftp/{boot,pxelinux.cfg,bios,efi32,efi64}
Copier les fichiers de démarrage pour les trois configurations :
cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/bios/ cp /usr/lib/syslinux/modules/bios/* /srv/tftp/bios/ cp /usr/lib/SYSLINUX.EFI/efi32/syslinux.efi /srv/tftp/efi32/ cp /usr/lib/syslinux/modules/efi32/* /srv/tftp/efi32/ cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi /srv/tftp/efi64/ cp /usr/lib/syslinux/modules/efi64/* /srv/tftp/efi64/
Télécharger Memtest86+ :
wget -O /srv/tftp/boot/memtest http://www.memtest.org/download/archives/5.31b/memtest86+-5.31b.bin
Télécharger le descriptif PCI pour l'utilitaire HDT :
wget -O /srv/tftp/boot/pci.ids http://pci-ids.ucw.cz/v2.2/pci.ids
Créer les liens symboliques afin que les trois configurations partagent les systèmes à démarrer, le descriptif PCI et la configuration du PXE :
cd /srv/tftp/bios ln -s ../boot boot ln -s ../pxelinux.cfg pxelinux.cfg ln -s ../boot/pci.ids pci.ids cd /srv/tftp/efi32 ln -s ../boot boot ln -s ../pxelinux.cfg pxelinux.cfg ln -s ../boot/pci.ids pci.ids cd /srv/tftp/efi64 ln -s ../boot boot ln -s ../pxelinux.cfg pxelinux.cfg ln -s ../boot/pci.ids pci.ids
Éditer le fichier /srv/tftp/pxelinux.cfg/default :
DEFAULT vesamenu.c32 TIMEOUT 100 MENU TITLE Menu de demarrage ALLOWOPTIONS 0 MENU AUTOBOOT Demarrage automatique dans # seconde{,s}. LABEL NETSYSTEM MENU LABEL Demarrer le systeme en reseau KERNEL boot/netsystem/vmlinuz APPEND boot=live initrd=boot/netsystem/initrd.img fetch=tftp://192.168.0.1/boot/netsystem/filesystem.squashfs ro -- TEXT HELP Amorcer le systeme en reseau. ENDTEXT
Personnaliser le menu
Le menu par défaut n'est pas très flatteur à l'œil. Nous allons le personnaliser et pour cela nous allons agir sur les paramètres suivants :
- MENU TITLE
- Change le titre du menu.
MENU TITLE Mon menu de demarrage PXE
- MENU BACKGROUND
- Change le fond d'écran du menu. Cette image doit avoir la résolution égale à celle de l'écran (recommandé : 640 × 480). L'image doit avoir 65536 couleurs. Pour convertir une image, utiliser la commande :
convert -depth 16 -colors 65536 /tmp/background.jpg /srv/tftp/boot/background.jpg
Exemple :MENU BACKGROUND boot/background.jpg
- MENU COLOR
- Change la couleur des éléments du menu. Pour plus de détails, se reporter ici : Documentation MENU COLOR Syslinux.
MENU COLOR TITLE 0 #FFD64937 #00000000 std
- MENU SEPARATOR
- Ajouter un séparateur au menu.
- MENU LABEL
- Change l'étiquette sur une entrée du menu.
MENU LABEL Demarrer le systeme en reseau
- TEXT HELP
- Ajoute une description sur une entrée du menu.
TEXT HELP Amorcer le systeme en reseau. ENDTEXT
- TIMEOUT
- Definit la durée en dixième de secondes d'affichage du menu avant le démarrage de l'option par défaut.
TIMEOUT 100
La documentation complète est disponible ici : http://www.syslinux.org/wiki/index.php?title=Menu
Option de démarrage sur le disque local
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL LOCALDISK MENU LABEL Demarrer le disque local KERNEL chain.c32 APPEND hd0
Option de redémarrage
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL REBOOT MENU LABEL Redemarrer le systeme KERNEL reboot.c32
Option de démarrage sur Memtest86+
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL MEMTEST MENU LABEL Memtest86+ KERNEL boot/memtest APPEND -e
Option d'inventaire du matériel
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL HDT MENU LABEL Inventaire du materiel COM32 hdt.c32 APPEND pciidc=boot/pci.ids
Option de démarrage sur l'installeur Debian
Télécharger la derniere version de l'installeur Debian netinstall :
mkdir -p /srv/tftp/boot/debian-32 mkdir -p /srv/tftp/boot/debian-64 wget -O /srv/tftp/boot/debian-32/linux http://ftp.fr.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/linux wget -O /srv/tftp/boot/debian-32/initrd.gz http://ftp.fr.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz wget -O /srv/tftp/boot/debian-64/linux http://ftp.fr.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux wget -O /srv/tftp/boot/debian-64/initrd.gz http://ftp.fr.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL DEBIAN32 MENU LABEL Installeur Debian 32 bits KERNEL boot/debian-32/linux APPEND vga=788 initrd=boot/debian-32/initrd.gz --- quiet LABEL DEBIAN64 MENU LABEL Installeur Debian 64 bits KERNEL boot/debian-64/linux APPEND vga=788 initrd=boot/debian-64/initrd.gz --- quiet
Option de démarrage sur le live et l'installeur Xubuntu
Télécharger la derniere version LTS de l'ISO Xubuntu 64 bits minimale depuis un miroir Xubuntu :
wget -O /srv/tftp/boot/xubuntu-64.iso http://ftp.free.fr/mirrors/ftp.xubuntu.com/releases/24.04/release/xubuntu-24.04-minimal-amd64.iso mkdir /srv/tftp/boot/xubuntu
Monter l'ISO dans le répertoire /srv/tftp/xubuntu-64. Pour cela, ajouter la ligne suivante dans /etc/fstab :
/srv/tftp/boot/xubuntu-64.iso /srv/tftp/boot/xubuntu iso9660 loop 0 0
Monter l'ISO :
mount /srv/tftp/boot/xubuntu
Installer le serveur NFS :
apt install nfs-kernel-server
Ajouter les lignes suivantes au fichier /etc/nftables.conf, dans la chaîne input
:
table inet tableinet { chain input { tcp dport 2049 accept tcp dport 111 accept tcp dport 892 accept udp dport 2049 accept udp dport 111 accept udp dport 1194 accept udp sport 1194 accept } }
Redémarrer nftables :
systemctl restart nftables.service
Ajouter l'export du dossier en lecture seule dans /etc/exports :
/srv/tftp/boot/xubuntu/ 192.168.0.0/24(ro,sync)
Recharger le service NFS :
service nfs-kernel-server restart
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL XUBUNTU-LIVE MENU LABEL Live Xubuntu KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip quiet splash -- LABEL XUBUNTU-INSTALL MENU LABEL Installeur Xubuntu KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip only-ubiquity quiet splash -- LABEL XUBUNTU-INSTALL-OEM MENU LABEL Installeur Xubuntu OEM KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip only-ubiquity oem-config/enable=true quiet splash --
Option de démarrage sur un autre serveur PXE
Ajouter les lignes suivantes au fichier /srv/tftp/pxelinux.cfg/default :
LABEL NEPTUNE MENU LABEL Basculer sur le menu PXE serveur Neptune KERNEL pxechn.c32 APPEND 192.168.0.101::pxelinux.0
Exemple de configuration complète
Voici un exemple de configuration complète :
Voici le fichier de configuration /srv/tftp/pxelinux.cfg/default associé :
DEFAULT vesamenu.c32 TIMEOUT 100 ONTIMEOUT LOCALDISK MENU TITLE Menu de demarrage PXE MENU BACKGROUND boot/splash-pxe.jpg MENU COLOR TITLE 0 #FFD64937 #00000000 std MENU COLOR SEL 0 #E0000000 #FFD64937 all MENU COLOR BORDER 0 #00000000 #00000000 none MENU VSHIFT 2 ALLOWOPTIONS 0 MENU AUTOBOOT Demarrage automatique du disque local dans # seconde{,s}. LABEL LOCALDISK MENU LABEL Demarrer le disque local KERNEL chain.c32 APPEND hd0 TEXT HELP Amorcer le disque dur local. ENDTEXT LABEL REBOOT MENU LABEL Redemarrer le systeme KERNEL reboot.c32 TEXT HELP Redemarrer l'ordinateur. ENDTEXT LABEL MEMTEST MENU LABEL Memtest86+ KERNEL boot/memtest APPEND -e TEXT HELP Effectuer un test de memoire. ENDTEXT LABEL HDT MENU LABEL Inventaire du materiel COM32 hdt.c32 APPEND pciidc=boot/pci.ids TEXT HELP Inventaire du materiel ENDTEXT MENU SEPARATOR LABEL NETSYSTEM MENU LABEL Demarrer le systeme en reseau KERNEL boot/netsystem/vmlinuz APPEND boot=live initrd=boot/netsystem/initrd.img fetch=tftp://192.168.0.1/boot/netsystem/filesystem.squashfs ro -- TEXT HELP Amorcer le systeme en reseau. ENDTEXT LABEL DEBIAN32 MENU LABEL Installeur Debian 32 bits KERNEL boot/debian-32/linux APPEND vga=788 initrd=boot/debian-32/initrd.gz --- quiet TEXT HELP Installation de Debian stable a partir du reseau. ENDTEXT LABEL DEBIAN64 MENU LABEL Installeur Debian 64 bits KERNEL boot/debian-64/linux APPEND vga=788 initrd=boot/debian-64/initrd.gz --- quiet TEXT HELP Installation de Debian stable a partir du reseau. ENDTEXT LABEL XUBUNTU-LIVE MENU LABEL Live Xubuntu KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip quiet splash -- TEXT HELP Live Xubuntu LTS 64 bits. ENDTEXT LABEL XUBUNTU-INSTALL MENU LABEL Installeur Xubuntu KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip only-ubiquity quiet splash -- TEXT HELP Installation de Xubuntu LTS 64 bits. ENDTEXT LABEL XUBUNTU-INSTALL-OEM MENU LABEL Installeur Xubuntu OEM KERNEL boot/xubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.0.1:/srv/tftp/boot/xubuntu initrd=boot/xubuntu/casper/initrd ip=dhcp locale=fr_FR bootkbd=fr console-setup/layoutcode=fr noprompt fsck.mode=skip only-ubiquity oem-config/enable=true quiet splash -- TEXT HELP Installation de Xubuntu LTS 64 bits OEM. ENDTEXT MENU SEPARATOR LABEL NEPTUNE MENU LABEL Basculer sur le menu PXE serveur Neptune KERNEL pxechn.c32 APPEND 192.168.0.101::pxelinux.0 TEXT HELP Demarrer sur le serveur Neptune ENDTEXT
Le fond d'écran est téléchargeable ici : https://antoinepernot.fr/data/splash-pxe.jpg
Création du système client amorçable
Installer le paquet squashfs-tools
:
apt -y install squashfs-tools
Connecter le disque dur du client sur le serveur. Pour la suite, nous considérerons que celui-ci est connecté sur /dev/sdb.
Monter la partition du système client :
mount /dev/sdb1 /mnt
Copier les fichiers vmlinuz et initrd.img vers /srv/tftp/netystem :
mkdir /srv/tftp/boot/netsystem cp /mnt/{initrd.img,vmlinuz} /srv/tftp/boot/netsystem
Créer le système de fichiers squashfs :
mksquashfs /mnt /srv/tftp/boot/netsystem/filesystem.squashfs -e boot
Démonter le disque du client :
umount /mnt
Déconnecter le disque dur du client.
Lancer le client PXE et tester.