NAS Synology DS918+


précédentsommaire

X. PXE

Le Pre-Boot Execution Environment (PXE) permet d’utiliser le NAS comme espace de stockage à partir duquel démarrer une machine (en remplacement d’un live CD ou d’un disque dur).

Pour cela, le NAS doit offrir les services suivants :

  • un serveur DHCP, pour offrir une adresse IP à la machine client utilisant PXE ;
  • un serveur TFTP (Trival FTP) pour fournir les fichiers permettant d’afficher un menu à l’utilisateur ;
  • optionnellement, un serveur NFS, pour fournir un système de fichiers complet et persistant.

PXE est généralement disponible sur tous les PC sous réserve d’une connexion par câble Ethernet. Pour démarrer à partir du NAS, il faudra certainement aller dans le BIOS afin d’activer le démarrage à partir du réseau et afin d’assigner celui-ci en premier dans la liste des périphériques sur lesquels démarrer.

X-A. Configuration

X-A-1. DHCP

Le serveur DHCP s’active à partir du Panneau de configuration du NAS de Synology, section « Serveur DHCP », onglet « Interface réseau ». Il faudra alors définir comment le NAS doit attribuer les adresses IP.

Configuration d'une plage d'adresses IP que le serveur DHCP attribuera

Dans l’onglet « Clients DHCP » il est possible d’attribuer des adresses IP spécifiques suivant l’adresse MAC des machines du réseau.

Un conflit peut exister entre le serveur DHCP du NAS et celui installé dans la box Internet. Une solution étant de reproduire la configuration présente dans la box sur le NAS afin que celui-ci reproduise exactement le comportement attendu, puis de désactiver le serveur DHCP de la box.

X-A-2. TFTP

Le serveur TFTP s’active simplement à travers la section « Services de fichiers » du panneau de configuration. Une fois activé, il est nécessaire de spécifier le répertoire racine du partage.

Il est possible d’activer la journalisation des accès TFTP dans les options avancées. Cela peut être très pratique pendant la période de mise en place du PXE.

X-A-3. NFS

Le serveur NFS est optionnel. Il peut être activé dans l’onglet « SMB/AFP/NFS » de la section « Services de fichiers ». Attention, même après activation du serveur NFS, il est nécessaire d’activer les dossiers partagés un par un à partir de la section « Dossier partagé ».

X-A-4. PXE

La configuration réseau étant en place, il est temps d’activer le PXE (disponible dans section « Serveur DHCP », onglet « PXE »).
Il est nécessaire d’indiquer le chargeur de démarrage, c’est-à-dire le programme qui doit être transmis et qui sera exécuté par la machine cliente.

X-A-4-a. Chargeur de démarrage

Le chargeur de démarrage est un programme spécial, car il ne doit reposer sur aucun système d’exploitation, ce dernier n’étant pas démarré. Le chargeur de démarrage est donc un programme d’apparence simple qui affichera un menu à l’utilisateur, lequel lui permettra de sélectionner ce qu’il souhaite charger.

X-A-4-a-i. SYSLINUX

SYSLINUX est un chargeur de démarrage libre et open source. L’archive de SYSLINUX est téléchargeable ici (version 6.03). À partir de celle-ci, vous devez retrouver les fichiers :

  • pxelinux.0, le programme initial ;
  • ldlinux.c32, libcom32.c32, libutil.c32, mboot.c32, menu.c32, vesamenu.c32 (optionnel), des programmes additionnels pour gérer des éléments particuliers (tels que l‘affichage du menu, le chargement du noyau Linux…) ;
  • un dossier prelinux.cfg contenant au minimum le fichier default. Ce dernier étant la configuration du menu affiché par PXE.

Pour plus de simplicité, voici une archive contenant les fichiers en question.

X-A-4-a-i-I. Configuration

À son lancement, SYSLINUX affiche un menu permettant à l’utilisateur de choisir quel système démarrer. Ce menu se configure à travers le dossier prelinux.cfg. SYSLINUX cherche et charge le fichier prelinux.cfg/default. La configuration peut être retrouvée dans le Wiki officiel. En voici un exemple simple :

 
Sélectionnez
DEFAULT menu.c32 
MENU TITLE Serveur PXE
PROMPT 0
TIMEOUT 300
ONTIMEOUT chainlocal

LABEL local
        MENU LABEL Boot local hard drive
        LOCALBOOT 0

LABEL Memtest
        KERNEL memtest

Facilement compréhensible, en voici le détail :

Label

Désignation

DEFAULT

Indique la ligne de commande par défaut. Ici, elle permet de décider quelle interface afficher. Elle est obligatoire.

INCLUDE

Inclut un sous-fichier de configuration. Ce dernier sera inséré tel quel dans le fichier actuel.

MENU TITLE

Le titre à afficher.

PROMPT

Indique si l’invite de commande doit être affichée. 0 permet de ne pas l’afficher, ou seulement si l’utilisateur appuie sur Maj ou Alt.

TIMEOUT

Le temps qui s’écoule avant une validation automatique du menu.

ONTIMEOUT

L’entrée du menu à choisir une fois le temps imparti écoulé.

LABEL

Une entrée dans le menu.

MENU LABEL

Le texte à afficher pour ce choix dans le menu

LOCALBOOT 0

Effectue un démarrage normal (démarre sur le disque dur).

KERNEL

Le fichier noyau à charger

INITRD

Le fichier initrd à charger

APPEND

Ajoute des options à la ligne de commande pour le noyau.
Il est possible de passer le fichier initrd, en utilisant cette directive, à travers une option du noyau.

Les labels ne sont pas sensibles à la casse

Globalement, pour ajouter une entrée, il suffira d’ajouter un LABEL, son nom et la commande pour le démarrer. Pour les systèmes Linux, il faudra indiquer un fichier noyau et un fichier initrd. Par exemple, Debian se démarre en ajoutant l’entrée suivante :

 
Sélectionnez
LABEL Debian 32 bit
        KERNEL debian/linux
        APPEND initrd=debian/initrd.gz --

Évidemment, pour que cela fonctionne, il faut ajouter le fichier linux et initrd.gz sur le serveur TFTP (ici, dans un sous répertoire debian). Ces fichiers peuvent être trouvés dans les CD des distributions Linux ou dans le dossier /boot d’une installation.

Les machines utilisant EFI ne peuvent pas démarrer le programme pxelinux.0. Pour ces machines, il faut utiliser un programme spécifique syslinux.efi (disponible en 32 et 64bits).

Les NAS Synology ne disposent pas de solution pour distribuer les fichiers adéquats en fonction de la machine cliente.

X-A-4-a-i-II. Chargement de fichier ISO

Jusqu’à présent, il n’était possible que de charger les fichiers noyau et initrd et donc, que des systèmes Linux. Cela ne couvre pas l’intégralité des cas et il peut être nécessaire de charger directement des ISO.
Pour pouvoir charger un fichier ISO (ou un fichier IMG), il faut utiliser le programme memdisk et spécifier l’ISO à charger. Voici une entrée d’exemple à ajouter au fichier de configuration :

 
Sélectionnez
LABEL ISO Debian
        KERNEL memdisk
        INITRD debian-iso/debian-10.1.0-amd64-netinst.iso
        APPEND iso

Le fichier ISO de Debian est placé dans un sous dossier debian-iso à la racine du serveur TFTP.

X-A-4-a-ii. Chargeur de démarrage Windows

Microsoft propose un chargeur de démarrage pour démarrer les systèmes Microsoft. Pour récupérer les fichiers du chargeur de démarrage, il est nécessaire d’installer le Windows Assessment and Deployment Kit. Plus précisément, il faut le logiciel « Windows ADK » ainsi que « Windows PE add-on for the ADK ».
Le lancement du programme « Environnement de déploiement et d’outil de création d’images » (« Deployment and Imaging Tools Environment ») en tant qu’administrateur permet d’obtenir une invite de commandes en mesure de récupérer les fichiers d’un système de base. La commande suivante créera un nouveau dossier avec les fichiers en question :

 
Sélectionnez
copype.cmd amd64 C:\dossier_travail

Dans la commande ci-dessus, ‘amd64’ peut être remplacé par ‘x86’, ‘arm’ et ‘arm64’. ‘dossier_travail’ indique simplement un dossier de destination, dans lequel la commande placera les fichiers. Le dossier ne doit pas exister, il sera créé par la commande.

Il est ensuite nécessaire de monter l’image de Windows PE afin d’y récupérer les fichiers nécessaires pour le PXE :

 
Sélectionnez
Dism /mount-image /imagefile:c:\dossier_travail\media\sources\boot.wim /index:1 /mountdir:C:\dossier_travail\mount

Le serveur TFTP fourni par Synology est sensible à la casse. Sachant que le chargeur de démarrage de Microsoft cherche le fichier de configuration ‘BCD’ dans le dossier \Boot, le dossier doit avoir une majuscule dans son nom. Cela veut dire que lors de la création du fichier BCD, vous devez aussi spécifier les chemins avec une majuscule dans le nom.

Les fichiers à copier dans un dossier Boot sur le serveur TFTP sont les suivants :

  • tous les fichiers dans c:/dossier_travail/mount/windows/boot/pxe/ ;
  • le fichier c:/dossier_travail/media/boot/boot.sdi ;
  • le fichier c:/dossier_travail/media/sources/boot.wim ;
  • le dossier c:/dossier_travail/media/boot/fonts dans un sous dossier boot/Fonts sur serveur TFTP ;
  • copier les fichiers pxeboot.n12 et bootmgr.exe du dossier Boot à la racine du serveur TFTP.

Finalement, il est nécessaire de créer le fichier de configuration de la procédure de démarrage (fichier BCD, pour Boot Configuration Data), grâce à l’outil bcdedit :

 
Sélectionnez
bcdedit /createstore c:\BCD

bcdedit /store c:\BCD /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store c:\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

Pour la suite des paramètres, il est nécessaire d’avoir un GUID qui peut se générer ainsi :

 
Sélectionnez
bcdedit /store c:\BCD /create /d "winpe boot image" /application osloader

Dans les commandes suivantes, « GUID » est à remplacer par le GUID qui vient d’être généré.

Il ne faut pas enlever les accolades autour du GUID.

 
Sélectionnez
bcdedit /store c:\BCD /set {GUID} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions} 
bcdedit /store c:\BCD /set {GUID} path \windows\system32\winload.exe 
bcdedit /store c:\BCD /set {GUID} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions} 
bcdedit /store c:\BCD /set {GUID} systemroot \windows
bcdedit /store c:\BCD /set {GUID} detecthal Yes
bcdedit /store c:\BCD /set {GUID} winpe Yes

bcdedit /store c:\BCD /create {bootmgr} /d "boot manager"
bcdedit /store c:\BCD /set {bootmgr} timeout 30 
bcdedit /store c:\BCD -displayorder {GUID} -addlast

La commande bcdedit /storec:\BCD/enum all permet de vérifier les entrées configurées dans le BCD.

Enfin, il ne reste plus qu’à copier le fichier c:/BCD dans le dossier ‘boot’ du serveur TFTP. Dans la configuration du NAS de Synology, il faut indiquer comme chargeur de démarrage le fichier PXEboot.n12

X-A-4-b. Tests

Il est possible de réaliser des tests de la configuration du PXE en utilisant une machine virtuelle démarrant l’ISO de iPXE et en la configurant pour qu’elle apparaisse sur le même réseau que le NAS (réseau en mode pont et non en mode NAT).

X-B. Système sans disque

Il est aussi possible d’utiliser le NAS comme espace de stockage du système d’exploitation, dont le démarrage à été déclenché à travers le réseau. Pour cela, il est nécessaire d’activer le partage de fichiers à travers le protocole NFS.
Par ailleurs, de nouvelles options doivent être passées au noyau afin de lui indiquer le serveur NFS. Ainsi, l’entrée dans la configuration de SYSLINUX deviendra :

 
Sélectionnez
LABEL Debian (AMD64)
        KERNEL debian64/linux
        APPEND root=/dev/nfs initrd=debian64/initrd.gz nfsroot=192.168.1.130:/volume1/Test/debian ip=dhcp rw --

Le dossier partagé sur le NFS doit contenir :

  • soit les fichiers d’un CD Linux, permettant ainsi le démarrage d’un système Live. Attention, l’installation se fera sur le disque local de la machine ;
  • soit les fichiers du système Linux à exécuter. Ceux-ci peuvent être préparés à travers un processus tel que debootstrap pour Debian, ou en copiant une installation existante de Linux.

Il existe l’option nfsrootdebug permettant d’afficher des messages supplémentaires en lien avec l’utilisation de nfsroot.

X-B-1. Debootstrap

Debootstrap est un outil permettant d’installer dans un dossier un système Linux basé sur Debian (et permet donc d’installer Ubuntu). La commande suivante permet de récupérer les fichiers d’une distribution (ici, Debian 10 (Buster) dans sa version amd64) :

 
Sélectionnez
sudo debootstrap --arch amd64 buster ./dossier-cible/ http://ftp.fr.debian.org/debian

N’importe quelle distribution Linux peut exécuter debootstrap.

Le système ainsi récupéré est totalement vierge. Cela veut dire qu’il est nécessaire de :

  • configurer le fichier /etc/fstab pour la base du système en y ajoutant les deux lignes suivantes :

     
    Sélectionnez
    /proc    /proc    proc    defaults   0 0
    /sys     /sys     sysfs   defaults   0 0
  • configurer le mot de passe root (et créer un utilisateur) ;

  • installer un noyau (qui pourra par la suite être placé sur le serveur TFTP) ;

  • générer un initramfs avec le support du NFS.

Toutes ces opérations doivent être réalisées sur le nouveau système, donc, après avoir basculé sur le système (chroot) mis en place par debootstrap.

X-B-2. Copie d’une installation

Pour copier une installation existante (qu’elle provienne d’une machine physique, virtuelle ou d’un debootstrap), vous pouvez utiliser la commande suivante :

 
Sélectionnez
cp -ax / dossier_nfs

La commande va copier la racine du système et donc, potentiellement, des fichiers non importants tels que les systèmes de fichiers réseau ou la partition /home et ne sera pas bootable telle qu’elle, il faudra installer un gestionnaire de démarrage (grub, syslinus) depuis cette copie.

X-B-3. Paramétrer le système pour un démarrage à partir du réseau

Ensuite, il est nécessaire de modifier le fichier /etc/fstab afin de prendre en compte le nouvel emplacement de la racine. Ainsi, vous devriez avoir la ligne suivante :

 
Sélectionnez
/dev/nfs    /    nfs    defaults    0    0

Vous pouvez récupérer le noyau et le fichier initrd (ou initramdisk) se trouvant sur la partition /boot. Généralement, le fichier initrd par défaut ne supportera pas le démarrage à partir d’un serveur NFS. Dans ce cas, il doit être régénéré avec la commande mkinitramfs ou mkinitcpio.
Dans le cas de mkinitramfs, vous devez modifier le fichier /etc/initramfs-tools/initramfs.conf pour y renseigner les lignes suivantes :

 
Sélectionnez
BOOT=nfs
MODULES=netboot

Quant à mkinitcpio, il faut ajouter ‘nfs’ dans la ligne MODULES et ‘net’ dans la ligne HOOKS dans le fichier /etc/mkinitcpio.conf.

Le fichier est généré, soit avec :

 
Sélectionnez
sudo mkinitramfs -o /tftp_server/initrd-nfs.img

soit avec :

 
Sélectionnez
sudo mkinitcpio -c ./mkinitcpio.conf -g /tftp_server/initramfs.img

X-C. Conclusion

Le NAS de Synology permet d’héberger facilement des ISO bootables et même des systèmes d’exploitation complets, pouvant être utilisés sans que les machines clientes n’aient de disque dur. L'article a donc couvert comment configurer le démarrage par PXE, la configuration DHCP associée ainsi que les serveurs TFTP et NFS pour fournir tous les fichiers nécessaires.
Cependant, le PXE de Synology ne permet de choisir qu’un seul chargeur d’amorçage, alors qu’avec les machines embarquant un BIOS ou EFI, il est nécessaire d’avoir un serveur fournissant une image, spécifique à chaque firmware.

X-D. Remerciements

Logo de Synology

Developpez.com et moi-même tenons à grandement remercier Synology sans qui l’écriture de ces articles n’aurait pas été possible. En effet, Synology a fourni le NAS DS 918+ afin de réaliser des tests permettant à Developpez.com d’offrir des informations précises et de qualité.
Vous pouvez retrouver le NAS DS 918+ sur la page officielle du site de Synology.

Merci aussi aux relecteurs chrtophe et gaby277, ainsi qu’à escartefigue pour la correction orthographique.


précédentsommaire

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Équipe de la rubrique Hardware. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.