Mise en œuvre de syslinux sur WDS
Pour de nombreuses sociétés, universités ou centres de formation, la solution de déploiement ne se cantonne pas toujours à des machines sous Windows et peut conduire à des choix difficiles. Dans le cadre d’une complémentarité avec les systèmes d’exploitation tels que Linux, que naturellement Windows Deployment Services ne prend pas en charge, je vous propose une approche alternative, prétexte à une analyse plus approfondie des mécanismes du chargeur de démarrage WDS (“bootstrap loader”).
A. Rappels et précisions sur WDS
En premier lieu, il convient de présenter la structure des dossiers retenue par Microsoft pour son serveur WDS. La racine, dénommée “TFTP Root“, est située dans le dossier défini lors de l’installation (ie. “E:\RemoteInstall\” ), mais les clients ont un droit de lecture par défaut uniquement sur les sous-dossiers “boot” et “tmp”. Ces réglages sont respectivement stipulés sous la clé de registre suivante :
“HKLM:\SYSTEM\CurrentControlSet\Services\WDSServer\Providers\WDSTFTP”
- Pour l’emplacement de la racine TFTP via l’entrée [REG_SZ] “RootFolder” = “E:\RemoteInstall”
- Pour les droits de lecture des clients PXE via l’entrée [REG_MULTI_SZ] “ReadFilter” = “\boot\* \tmp\* boot\* tmp\*”.
Au niveau de la racine TFTP, on distinguera 2 dossiers essentiels :
- “Boot” : Contient la structure composée principalement des fichiers liés à l’amorçage (Bootstrap Loaders) et des images .WIM de démarrage (Autrement dit, les images système WinPE).
- “Images” : Contient les images .WIM d’installation (Autrement dit, les distributions Windows préparées avec “sysprep”)
Dans la structure de dossier “Boot“, il semblerait que Microsoft ait choisi d’utiliser un sous-répertoire propre à chaque plateforme (x86, x64, IA64,arm …), dans lesquels sont stockés les fichiers d’amorçage (tels que bootmgr.exe , default.bcd, pxeboot.com, wdsnbp.com …) et un sous-dossier “Images” dans lequel sont placés les images .WIM de WinPE ainsi qu’un fichier “.WIM.bcd” associé.
Sur le plan pratique, il apparait que les fichiers situés dans les dossiers x86 et x64 sont identiques et le répertoire x86x64 ne contient que le fichier de configuration d’amorçage. En focalisant les actions uniquement sur le dossier x86, je n’ai pas relevé de soucis notables avec des machines x64. Réciproquement, si vous travaillez sur le dossier x64, et adaptez les réglages en conséquence, les résultats devraient être sensiblement les mêmes.
Le premier chargeur d’amorçage PXE, nommé “wdsnbp.com” commence par valider l’architecture processeur du client puis, initialise l’amorçage correspondant. En fonction des réglages du serveur la machine peut attendre une confirmation (cf périphériques en attente) ou initialiser le chargeur par défaut “pxeboot.com“(son équivalent, le fichier “pxeboot.n12” évite la confirmation du chargement via un second appui sur la touche [F12]). En fonction des images de démarrage disponibles, un éventuel menu est ensuite affiché puis le chargement du noyau WinPE est effectué.
Ce processus peut être modifié au niveau des propriétés du serveur sous l’onglet “Démarrer“.
En résumé, sous WDS, le principe d’amorçage standard PXE pourrait schématiquement être représenté comme suit :
Note : Sous WDS, les fichiers portant l’extension “.n12” sont équivalents à leurs homologues “.com” à la différence qu’ils ne demandent pas de confirmation via l’appui de la touche [F12].
Mise en œuvre d’un chainage PXE Linux sur WDS
Dans cette démonstration ostensiblement marginale, je souhaitais simplement démontrer qu’il était possible de substituer ce système d’amorçage par un chargeur Linux ayant la possibilité de rendre la main au chargeur WDS initial en cas de besoin.
1. Récupérer un noyau syslinux
Pour modifier le processus d’amorçage précédemment décrit, vous devez préalablement télécharger un noyau “syslinux” tel que la version 4.07 à l’adresse suivante http://www.kernel.org/pub/linux/utils/boot/syslinux/
Sachant que certains de ces fichiers spéciaux ne portent pas d’extension, pensez à démasquer les extensions de fichiers connus afin d’éviter les confusions, surtout si vous effectuez ces manipulations via l’interface graphique de Windows.
Choisissez l’un des packages proposés, portant idéalement une extension “.zip” afin de le gérer au sein de l’explorateur Windows. Vous devrez ensuite extraire de cette archive les 3 fichiers suivants vers le dossier “Boot\x86” situé sous la racine TFTP du serveur WDS, soit “\RemoteInstall“.
- modules/pxechain.com
- core/pxelinux.0
- com32/menu/menu.c32
2. Facultatif : Récupérer une distribution Linux
Téléchargez ensuite un noyau d’amorçage réseau Linux comme par exemple celui d’une distribution Ubuntu à l’adresse suivante : http://archive.ubuntu.com/ubuntu/dists/devel/main/installer-amd64/20101020ubuntu609/images/netboot/
Enregistrez les 2 fichiers “linux” et “initrd.gz” dans le même dossier “boot\x86\ubuntu” situé sous la racine TFTP du serveur WDS.
3. Facultatif : Ajouter un outil de test mémoire
Pour compléter cet exemple, je vous propose d’ajouter le célèbre outil de test mémoire “Memtest86” que vous pouvez télécharger à l’adresse suivante : http://www.memtest.org/download/5.01/memtest86+-5.01.bin
Si vous avez récupéré un fichier au format “.gz”, ouvrez cette archive avec “7-Zip” et faites une extraction de l’unique fichier dans ce même dossier “boot/x86/memtest” sous la racine TFTP du serveur WDS, puis renommez ce fichier “memtest86” sans extension.
4. Préparer les amorces PXE
À partir de l’explorateur Windows ou en ligne de commande, au niveau du sous-dossier “Boot\x86“, créez une copie du fichier “pxeboot.n12” et renommez-la en “pxeboot.0“. Faites de même pour le fichier “abortpxe.com” que vous renommerez en “abortpxe.0”
Créez un sous-dossier nommé “pxelinux.cfg” : Un fichier de configuration nommé “Default.” (sans extension) doit être stocké dans ce dossier. Tapez les commandes suivantes :
Ajoutez le contenu suivant dans ce fichier en prenant garde à ne pas ajouter d’extension erronée :
A ce stade, le dossier “boot/x86” doit contenir les dossiers/fichiers suivants :
Recopier les dans le dossier “boot/x64” afin que cela prenne effet pour les 2 types de boot
Pour activer la nouvelle amorce sur le noyau PXE linux, entrez les commandes suivantes dans une invite de commande sur le serveur WDS en fonction du dossier utilisé.
On utilise le même menu pour les architectures x86 et x64.
Zip avec tous les fichiers dont vous avez besoin : ICI
Pour une mise en place plus en détail, je vous conseils de vous rendre ici : https://tool.frogg.fr/Tutorial_Linux_PXE_on_WDS
Pour la mise en place d’un serveur WDS windows : https://www.it-connect.fr/dematerialisez-vos-supports-avec-wds2012r2/
Pour la mise en place d’un PXE debian : https://www.it-connect.fr/installation-et-configuration-dun-serveur-pxe/