IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

NAS QNAP TS-253D

Découverte et mise en route


précédentsommairesuivant

X. Pre-Boot Execution Environment (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 (Trivial 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 si ces derniers sont connectés par câble Ethernet. Pour démarrer un PC à 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. TFTP

Le serveur TFTP s’active simplement dans le « Panneau de configuration » → « Serveurs d’applications » → « Serveur TFTP ». Une fois TFTP activé, il est nécessaire de spécifier le répertoire racine du partage :

Configuration du serveur TFTP pour PXE

Il est aussi possible d’activer les journaux spécifiques à ce serveur. Cela peut être très pratique pendant la période de mise en place du PXE.

X-B. DHCP

Le serveur DHCP se configure dans l’application « Réseau et commutateur virtuel ». Pour mettre en place PXE, il faut activer le serveur DHCP du NAS. Dans les paramètres avancés de celui-ci, vous pourrez spécifier le serveur TFTP et un fichier de démarrageChargeur de démarrage.

Configuration du serveur DHCP

X-C. NFS

Le serveur NFS est optionnel. Il peut être activé dans le « Panneau de configuration » → « Réseau et service de fichiers » → « Win/Mac/NFS ». Une fois NFS activé, il ne faut pas oublier d’aller dans les propriétés des dossiers partagés « Panneau de configuration » → « Privilège » → « Dossiers partagés » afin de bien rendre accessible depuis un client NFS, le dossier voulu.

X-D. PXE

Comme vu dans la configuration du serveur DHCP, il faut spécifier un fichier de démarrage (ou chargeur).

X-D-1. 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, permettant à ce dernier de sélectionner ce qu’il souhaite charger.

X-D-1-a. 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 ;
  • memtest, memdisk, des programmes optionnels, pour charger un test mémoire et lire un fichier ISO respectivement.

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

X-D-1-a-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, 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 d’expiration é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 case.

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).

X-D-1-a-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. Toutefois, 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 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-D-1-a-iii. Charger une ISO Windows

Vous ne pouvez pas utiliser une ISO « standard » de Windows avec PXE/SYSLINUX. Il est donc nécessaire de préparer une ISO WinPE, une version très allégée de Windows conçue pour être exécutée en mémoire et pour pouvoir démarrer à partir du réseau.

Pour obtenir cette ISO WinPE, vous avez deux possibilités :

Pour cet exemple, nous partons du fichier ISO Windows, téléchargeable ici. Aussi, sous Linux, nous avons besoin du paquet wimlib offrant la commande mkwinpeimg.

X-D-1-a-iii-I. Préparation de l’image

Nous utilisons les fichiers contenus dans le fichier ISO de Windows afin de créer notre ISO WinPE. Par conséquent, il faut monter l’image :

 
Sélectionnez
mount -o loop,ro ./Win10_2004_French_x64.iso /media/iso/

Aussi, il est possible de préparer un fichier start.cmd qui est automatiquement exécuté après le démarrage de WinPE :

start.cmd
Sélectionnez
cmd.exe
pause

L’exemple ci-dessus correspond à l’exemple le plus simple de fichier start.cmd : il ouvre une invite de commande et attend. Vous pouvez faire évoluer ce fichier comme bon vous semble.

Ensuite, nous pouvons créer notre fichier ISO WinPE avec mkwinpeimg :

 
Sélectionnez
mkwinpeimg --iso --windows-dir=/media/iso/ --start-script=start.cmd winpe.iso
X-D-1-a-iii-II. Entrée SYSLINUX

Le fichier winpe.iso est à placer sur le NAS et vous devez évidemment ajouter une entrée dans votre menu SYSLINUX :

default
Sélectionnez
LABEL winpe
    KERNEL memdisk
    INITRD ISO/winpe.iso
    APPEND iso raw
X-D-1-b. 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’outils de création d’images » (« Deployment and Imaging Tools Environment ») en tant qu’administrateur permet d’obtenir une invite de commande 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’. De plus, ‘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 QNAP 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 être généré 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 /store c:\BCD /enum all permet de vérifier les entrées configurées dans le BCD.

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

X-D-2. 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).

Si vous avez une machine avec GRUB, il est aussi possible de le configurer pour afficher un menu pour lancer un chargement à partir du réseau.

X-E. 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 a été initié à travers le réseau. Pour cela, il est nécessaire d’activer le partage de fichiers à travers le protocole NFS.
De plus, 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. Toutefois, l’installation se fera sur le disque local à la machine ;
  • 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-F. Conclusion

Ce chapitre a permis d’explorer une autre possibilité offerte par le TS-253D de QNAP.

X-G. Remerciements

Logo QNAP

Developpez.com tient à remercier QNAP de nous avoir fourni le TS-253D et les disques afin de réaliser cette série d’articles.
Vous pouvez retrouver le TS-253D sur la page officielle de QNAP.


précédentsommairesuivant

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 © 2020 É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.