{"id":839,"date":"2022-11-08T21:27:23","date_gmt":"2022-11-08T20:27:23","guid":{"rendered":"https:\/\/reglisss.freeboxos.fr\/wordpress\/?page_id=839"},"modified":"2022-11-08T21:27:23","modified_gmt":"2022-11-08T20:27:23","slug":"installons-linux-et-windows-depuis-le-reseau-pxe-simplement-de-maniere-automatisee","status":"publish","type":"page","link":"https:\/\/reglisss.freeboxos.fr\/wordpress\/installons-linux-et-windows-depuis-le-reseau-pxe-simplement-de-maniere-automatisee\/","title":{"rendered":"Installons Linux et Windows depuis le r\u00e9seau (PXE) simplement, de mani\u00e8re automatis\u00e9e"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<p><small>Un Raspberry Pi et c&rsquo;est parti !<\/small><\/p>\n\n\n\n<p><a href=\"https:\/\/www.nextinpact.com\/article\/29369\/107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee#\">19<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.nextinpact.com\/c\/logiciel\">LOGICIEL<\/a><a href=\"https:\/\/www.nextinpact.com\/t\/tutoriels\">TUTORIELS<\/a>&nbsp;19 MIN<\/p>\n\n\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwww.nextinpact.com%2Farticle%2F29369%2F107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee&amp;t=Installons%20Linux%20et%20Windows%20depuis%20le%20r%C3%A9seau%20(PXE)%20simplement%2C%20de%20mani%C3%A8re%20automatis%C3%A9e\" rel=\"noreferrer noopener\"><\/a><a target=\"_blank\" href=\"https:\/\/twitter.com\/intent\/tweet?text=Installons%20Linux%20et%20Windows%20depuis%20le%20r%C3%A9seau%20(PXE)%20simplement%2C%20de%20mani%C3%A8re%20automatis%C3%A9e&amp;url=https%3A%2F%2Fwww.nextinpact.com%2Farticle%2F29369%2F107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee&amp;via=nextinpact\" rel=\"noreferrer noopener\"><\/a><a target=\"_blank\" href=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&amp;url=https%3A%2F%2Fwww.nextinpact.com%2Farticle%2F29369%2F107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee&amp;title=Installons%20Linux%20et%20Windows%20depuis%20le%20r%C3%A9seau%20(PXE)%20simplement%2C%20de%20mani%C3%A8re%20automatis%C3%A9e&amp;source=nextinpact.com\" rel=\"noreferrer noopener\"><\/a><a target=\"_blank\" href=\"http:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fwww.nextinpact.com%2Farticle%2F29369%2F107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee\" rel=\"noreferrer noopener\"><\/a><a href=\"mailto:?subject=Installons%20Linux%20et%20Windows%20depuis%20le%20r%C3%A9seau%20(PXE)%20simplement,%20de%20mani%C3%A8re%20automatis%C3%A9e&amp;body=Bonjour,%0D%0A%0D%0AJe%20te%20recommande%20d%27aller%20lire%20cet%20article%20:%20https%3A%2F%2Fwww.nextinpact.com%2Farticle%2F29369%2F107512-installons-linux-et-windows-depuis-reseau-pxe-simplement-maniere-automatisee\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdnx.nextinpact.com\/data-next\/images\/auteurs\/david.jpg\" alt=\"David Legrand\"\/><\/figure>\n\n\n\n<p><strong>Par&nbsp;<a href=\"mailto:david@nextinpact.com\"><strong>David Legrand<\/strong><\/a><\/strong><strong>Le samedi 4 mai 2019 \u00e0 10:30<\/strong><\/p>\n\n\n\n<p>Les jours de repos s&rsquo;encha\u00eenent, et vous ne savez pas quoi faire pour occuper ces p\u00e9riodes parfois pluvieuses ? Et pourquoi pas utiliser l&rsquo;amor\u00e7age PXE pour simplifier l&rsquo;installation des machines de votre r\u00e9seau. Un Raspberry Pi (et au moins un PC) suffit !<\/p>\n\n\n\n<p>Installer un syst\u00e8me d&rsquo;exploitation passe le plus souvent par&nbsp;une cl\u00e9 USB d\u00e9sormais, le lecteur optique ayant \u00e9t\u00e9 largement&nbsp;mis au placard ces derni\u00e8res ann\u00e9es. Mais lorsque vous avez plusieurs machines \u00e0&nbsp;configurer&nbsp;ou que vous passez souvent d&rsquo;un OS \u00e0 un autre, ce n&rsquo;est pas la m\u00e9thode la plus simple \u00e0 utiliser.<\/p>\n\n\n\n<p>Certes, il existe des bo\u00eetiers pour HDD\/SSD permettant de monter les diff\u00e9rentes images ISO pr\u00e9sentes, pour que le syst\u00e8me y acc\u00e8de comme s&rsquo;il s&rsquo;agissait d&rsquo;un CD\/DVD. Cela permet de ne pas avoir \u00e0 utiliser diff\u00e9rentes cl\u00e9s USB ou \u00e0 transf\u00e9rer constamment des images. Mais ce n&rsquo;est pas id\u00e9al.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.nextinpact.com\/news\/107124-comment-creer-cle-usb-pour-linux-macos-windows-10-ou-suite-doutils-secours.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Comment cr\u00e9er une cl\u00e9 USB contenant Linux, macOS, Windows 10 ou une suite d&rsquo;outils de secours<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.inpact-hardware.com\/article\/199\/107225-iodd-2531-boitier-usb-3-0-pour-hddssd-capable-demuler-lecteur-optique-depuis-iso\" target=\"_blank\" rel=\"noreferrer noopener\">IODD 2531 : un bo\u00eetier USB 3.0 pour HDD\/SSD capable d&rsquo;\u00e9muler un lecteur optique depuis des ISO<\/a><\/li>\n<\/ul>\n\n\n\n<p>Car il faut r\u00e9guli\u00e8rement y placer les nouvelles images, et donc le relier \u00e0 un PC pour \u00e7a.&nbsp;Surtout, il&nbsp;ne peut \u00eatre utilis\u00e9 que pour une seule machine \u00e0 la fois du fait de sa connectique USB. Impensable dans le cadre de d\u00e9ploiements ou lorsque l&rsquo;on veut g\u00e9rer les choses \u00e0 distance, comme pour un petit serveur plac\u00e9 dans le coin d&rsquo;une salle, sans \u00e9cran\/clavier\/souris.<\/p>\n\n\n\n<p>C&rsquo;est ici que l&rsquo;amor\u00e7age PXE (Pre-boot eXecution Environment) intervient, pour une installation simple via le r\u00e9seau.<\/p>\n\n\n\n<p><strong>Notre dossier sur l&rsquo;automatisation de l&rsquo;installation des OS :<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.nextinpact.com\/news\/107141-preseed-debian-automatisez-simplement-installation.htm\">Preseed Debian : automatisez simplement l&rsquo;installation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.nextinpact.com\/news\/107281-cubic-personnalisez-et-automatisez-installation-dubuntu.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Cubic : personnalisez et automatisez l&rsquo;installation d&rsquo;Ubuntu<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.nextinpact.com\/news\/107276-automatisons-installation-windows-10-unattended.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Automatisons l&rsquo;installation de Windows 10 (Unattended)<\/a><\/li>\n\n\n\n<li>Installons Linux et Windows depuis le r\u00e9seau (PXE) simplement, de mani\u00e8re automatis\u00e9e<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Un peu de th\u00e9orie<\/h2>\n\n\n\n<p>Dans le domaine professionnel, l&rsquo;installation \u00e0 distance est largement utilis\u00e9e et d\u00e9j\u00e0 possible sur les cartes m\u00e8res \u00e9quip\u00e9es d&rsquo;un KVM mat\u00e9riel, comme&nbsp;celles avec BMC (voir&nbsp;<a href=\"https:\/\/www.inpact-hardware.com\/article\/1195\/on-a-teste-carte-mere-x470d4u-avec-ipmibmc-dasrock-rack-pour-ryzen-am4\" target=\"_blank\" rel=\"noreferrer noopener\">ici<\/a>&nbsp;ou&nbsp;<a href=\"https:\/\/www.inpact-hardware.com\/article\/582\/107306-construisons-premier-serveur-1u-a-base-core-i7-6700k-avec-gestion-distante-ipmiikvm\" target=\"_blank\" rel=\"noreferrer noopener\">l\u00e0<\/a>). On peut ainsi monter une ISO \u00e0 travers une interface web et\/ou Java, d\u00e9marrer dessus et l&rsquo;utiliser pour mettre en place le syst\u00e8me d&rsquo;exploitation.<\/p>\n\n\n\n<p>La m\u00e9thode est int\u00e9ressante, mais lente et l\u00e0 encore individuelle. Car&nbsp;cela revient \u00e0 envoyer les fichiers d&rsquo;installation \u00e0 chaque machine depuis le poste utilisateur, alors que l&rsquo;on pr\u00e9f\u00e8rerait que ce soit l&rsquo;inverse : qu&rsquo;elles&nbsp;aillent chercher l&rsquo;image depuis un serveur de fichier pr\u00e9vu \u00e0 cet effet, avec une bonne connexion et capable de soutenir de lourdes charges.<\/p>\n\n\n\n<p>Avec l&rsquo;amor\u00e7age PXE,&nbsp;on ne d\u00e9marre pas&nbsp;sur un HDD\/SSD, un CD\/DVD ou m\u00eame une cl\u00e9 USB, on initie une connexion au r\u00e9seau local. Un serveur DHCP (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Dynamic_Host_Configuration_Protocol\" target=\"_blank\" rel=\"noreferrer noopener\">Dynamic Host Configuration Protocol<\/a>) se charge de fournir une adresse IP \u00e0 la machine ainsi que l&rsquo;adresse d&rsquo;un fichier d&rsquo;initialisation (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/BOOTP\" target=\"_blank\" rel=\"noreferrer noopener\">BootP<\/a>). Celui-ci est accessible via un serveur TFTP (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Trivial_File_Transfer_Protocol\" target=\"_blank\" rel=\"noreferrer noopener\">Trivial FTP<\/a>).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173780.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173780.png\" alt=\"PXE Boot\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173779.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173779.png\" alt=\"PXE Boot\"\/><\/a><\/figure>\n\n\n\n<p>Ce dispositif est loin d&rsquo;\u00eatre nouveau, mais est encore massivement utilis\u00e9 pour des d\u00e9ploiements en entreprise. Il repose sur des technologies qui ne sont pas de toute fra\u00eecheur, mais simples \u00e0 mettre en \u0153uvre et \u00e9prouv\u00e9es. Elles sont surtout peu gourmandes en ressources et compatibles avec un tr\u00e8s grand nombre de machines, r\u00e9centes ou non.<\/p>\n\n\n\n<p>TFTP en est le parfait exemple puisque ce protocole remonte&nbsp;<a href=\"https:\/\/tools.ietf.org\/html\/rfc783\" target=\"_blank\" rel=\"noreferrer noopener\">\u00e0 1981<\/a>, sa derni\u00e8re r\u00e9vision datant&nbsp;<a href=\"https:\/\/tools.ietf.org\/html\/rfc1350\" target=\"_blank\" rel=\"noreferrer noopener\">de 1995<\/a>, avec quelques \u00e9volutions mineures depuis. Il a \u00e9t\u00e9 pens\u00e9 pour permettre de transf\u00e9rer facilement des fichiers entre un client et un serveur, sans m\u00e9canique de s\u00e9curit\u00e9 (ou presque), ne n\u00e9cessitant que peu de ressources.<\/p>\n\n\n\n<p>D&rsquo;autres technologies peuvent ensuite venir permettre l&rsquo;acc\u00e8s aux donn\u00e9es li\u00e9es \u00e0 l&rsquo;installation comme nous le verrons plus loin dans cet article. Toutes sont disponibles \u00e0 travers des logiciels open source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9-requis<\/h2>\n\n\n\n<p>Pour notre guide du jour nous utilisons un&nbsp;Raspberry Pi 3&nbsp;B+ configur\u00e9 pour un usage distant (via SSH), mais la proc\u00e9dure peut tr\u00e8s bien \u00eatre utilis\u00e9e sur une distribution GNU\/Linux classique sur un serveur ou via une machine virtuelle. C&rsquo;est d&rsquo;ailleurs ce que nous vous recommandons si vous avez parfois un grand nombre de machines \u00e0 installer, le Raspberry Pi \u00e9tant limit\u00e9 tant dans les performances de son stockage que de son r\u00e9seau.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.inpact-hardware.com\/article\/270\/100830-comment-installer-simplement-raspberry-pi-sous-raspbian-avec-ssh-et-wi-fi-sans-ecran\">Raspberry Pi : comment l&rsquo;installer sans \u00e9cran, avec Wi-Fi et SSH<\/a><\/li>\n<\/ul>\n\n\n\n<p>Il vous faut \u00e9galement un PC capable de d\u00e9marrer sur&nbsp;sa carte r\u00e9seau, ce qui est souvent le cas. Mais il faut en g\u00e9n\u00e9ral activer cette fonctionnalit\u00e9 depuis le BIOS\/UEFI. Pour cela pressez la touche Suppr ou F2 au d\u00e9marrage puis rendez-vous dans les param\u00e8tres li\u00e9s au boot ou du r\u00e9seau, le manuel de votre PC\/carte m\u00e8re pouvant d\u00e9tailler ces \u00e9tapes :<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173771.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173771.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173770.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173770.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173769.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173769.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173771.png\" rel=\"noreferrer noopener\">BIOS UEFI Boot PXE ASRock&nbsp;<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173770.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173769.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173771.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173770.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173769.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173771.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173770.png\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173769.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Vous y trouverez en g\u00e9n\u00e9ral tout ce qu&rsquo;il faut pour activer le d\u00e9marrage sur le r\u00e9seau local LAN (non-UEFI dans notre cas). Nous vous conseillons de ne pas l&rsquo;utiliser comme m\u00e9thode de boot automatique, mais plut\u00f4t \u00e0 la demande, via le menu qui appara\u00eet en pressant&nbsp;une des touches F8&nbsp;\u00e0 F12 au d\u00e9marrage (selon le constructeur).<\/p>\n\n\n\n<p>Notez que bien que cela soit possible, l&rsquo;amor\u00e7age PXE ne passe en g\u00e9n\u00e9ral pas par une connexion sans fil mais par un r\u00e9seau filaire classique, n\u00e9cessitant la pr\u00e9sence d&rsquo;un port RJ45. De quoi limiter les possibilit\u00e9s pour&nbsp;certains PC portables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation et configuration du serveur&nbsp;DHCP\/TFTP<\/h2>\n\n\n\n<p>La premi\u00e8re \u00e9tape consiste \u00e0 mettre en place des serveurs DHCP et TFTP sur votre r\u00e9seau. Pour le premier, c&rsquo;est le plus souvent le cas \u00e0 travers la box de votre fournisseur d&rsquo;acc\u00e8s qui fournit leurs IP \u00e0 l&rsquo;ensemble de vos appareils.<\/p>\n\n\n\n<p>Et c&rsquo;est un probl\u00e8me. En effet, deux serveurs DHCP ne peuvent pas cohabiter, puisque cela reviendrait \u00e0 une situation o\u00f9 chacun&nbsp;attribue des IP de mani\u00e8re non-coordonn\u00e9e. Surtout, les serveurs DHCP mis en place par les op\u00e9rateurs ne sont pas faits pour \u00eatre modifi\u00e9s, ne serait-ce que pour fonctionner en lien avec un serveur TFTP, m\u00eame chez&nbsp;Free.&nbsp;<\/p>\n\n\n\n<p>La premi\u00e8re possibilit\u00e9 est donc de couper le serveur DHCP d\u00e9j\u00e0 pr\u00e9sent sur le r\u00e9seau et de le remplacer par le v\u00f4tre. C&rsquo;est la m\u00e9thode \u00e0 utiliser lorsque vous voulez un contr\u00f4le complet du dispositif ou que vous activez le serveur TFTP depuis un NAS&nbsp;QNAP&nbsp;ou&nbsp;Synology&nbsp;(pouvant faire office de serveur DHCP), par exemple.<\/p>\n\n\n\n<p><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173768.png\"><\/a><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173767.png\"><br><\/a><strong>Les param\u00e8tres TFTP\/DHCP de DSM 6.x chez&nbsp;Synology<\/strong><\/p>\n\n\n\n<p>La seconde, pour laquelle nous avons opt\u00e9 dans ce guide, est la plus simple : utiliser un proxy DHCP. Ainsi, le serveur utilis\u00e9 pour votre amor\u00e7age PXE ne fera qu&rsquo;envoyer les requ\u00eates \u00e0 celui d\u00e9j\u00e0 pr\u00e9sent sur le r\u00e9seau, faisant suivre ses r\u00e9ponses en les adaptant au besoin. Pour cela, nous nous reposons sur&nbsp;<a href=\"http:\/\/www.thekelleys.org.uk\/dnsmasq\/doc.html\" target=\"_blank\" rel=\"noreferrer noopener\">Dnsmasq<\/a>.&nbsp;<\/p>\n\n\n\n<p>Il s&rsquo;agit d&rsquo;une application open source, disponible dans la plupart des distributions, permettant de g\u00e9rer diff\u00e9rents services, dont le proxy DHCP et TFTP dont nous avons besoin. Vous pouvez aussi vous reposer sur des outils tels ques&nbsp;<a href=\"https:\/\/www.pfsense.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">PfSense<\/a>. Si vous pr\u00e9f\u00e9rez Windows, il existe de petites applications tout-en-un comme&nbsp;<a href=\"http:\/\/labalec.fr\/erwan\/?page_id=958\" target=\"_blank\" rel=\"noreferrer noopener\">Tiny PXE Server<\/a>&nbsp;(version 1.0.0.14+).<\/p>\n\n\n\n<p>En compl\u00e9ment, il nous faut les biblioth\u00e8ques&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=PXELINUX\" target=\"_blank\" rel=\"noreferrer noopener\">pxelinux<\/a>, pour le d\u00e9marrage du serveur et&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=SYSLINUX\" target=\"_blank\" rel=\"noreferrer noopener\">syslinux<\/a>&nbsp;pour initialiser les OS. Sous&nbsp;<a href=\"https:\/\/www.raspberrypi.org\/downloads\/raspbian\/\" target=\"_blank\" rel=\"noreferrer noopener\">Raspbian<\/a>, cela revient \u00e0 taper la commande suivante :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install dnsmasq pxelinux syslinux-common<\/pre>\n\n\n\n<p>On commence par cr\u00e9er un r\u00e9pertoire qui sera utilis\u00e9 comme racine du serveur TFTP&nbsp;et celui pour le menu de l&rsquo;interface PXE. Nous y pla\u00e7ons les fichiers qui nous seront n\u00e9cessaires :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir -p \/var\/tftpboot\/pxelinux.cfg<br>cd \/var\/tftpboot<br>sudo touch pxelinux.cfg\/default<br><br>sudo cp \/usr\/lib\/PXELINUX\/pxelinux.0&nbsp;.<br>sudo&nbsp;cp&nbsp;\/usr\/lib\/syslinux\/memdisk .<br>sudo&nbsp;cp&nbsp;\/usr\/lib\/syslinux\/modules\/bios\/* .<\/pre>\n\n\n\n<p>On sauvegarde la configuration de Dnsmasq, contenant sa documentation. Elle pourra vous \u00eatre utile si vous souhaitez aller plus loin dans la gestion des param\u00e8tres et du menu. Puis&nbsp;on ouvre son rempla\u00e7ant&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mv \/etc\/dnsmasq.conf \/etc\/dnsmasq.conf.old<br>sudo nano \/etc\/dnsmasq.conf<\/pre>\n\n\n\n<p>On&nbsp;y place les lignes suivantes.&nbsp;Adaptez la variable&nbsp;<code>dhcp-range<\/code>&nbsp;\u00e0 votre r\u00e9seau :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">## On n'active pas le serveur DNS<br>port=0<br><br>## On initialise le serveur TFTP<br>enable-tftp<br>tftp-root=\/var\/tftpboot<br><br>## On initialise le proxy DHCP<br>dhcp-range=192.168.0.0, proxy<br><br>## On initialise le service PXE<br>dhcp-boot=pxelinux.0<br><br>## On initialise le menu du service PXE<br>pxe-prompt=\"Veuillez faire votre choix :\"<br>pxe-service=x86PC, \"Boot depuis le disque local\", 30<br>pxe-service=x86PC, \"Interface PXE\", pxelinux<br><br>## On active le log du serveur DHCP<br>log-dhcp<\/pre>\n\n\n\n<p>On sauvegarde le fichier (CTRL+X) et on relance le service :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl restart dnsmasq.service<\/pre>\n\n\n\n<p>C&rsquo;est termin\u00e9 ! Votre serveur fournissant un amor\u00e7age PXE est d\u00e9sormais fonctionnel. Pour le v\u00e9rifier il vous suffit de lancer une machine en lui demandant de d\u00e9marrer sur le r\u00e9seau, il faut bien entendu qu&rsquo;elle y soit connect\u00e9e. Si tout s&rsquo;est bien pass\u00e9 vous verrez apr\u00e8s quelques secondes le serveur DHCP fournir une IP \u00e0 la machine.<\/p>\n\n\n\n<p>Le&nbsp;menu s&rsquo;affiche alors vous proposant de d\u00e9marrer sur son disque local (par d\u00e9faut au bout de 30 secondes) ou sur le serveur PXE. Vous pouvez allumer ou stopper Dnsmasq via les commandes suivantes :&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl stop dnsmasq.service<br>sudo systemctl start dnsmasq.service<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware Detection Tool et autres petites options<\/h2>\n\n\n\n<p>Notre serveur PXE fonctionne, mais il affiche une erreur. Et pour cause, son menu est vide. Nous allons donc&nbsp;l&rsquo;utiliser pour lancer un premier outil, int\u00e9gr\u00e9 de base \u00e0 syslinux :&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=Hdt_(Hardware_Detection_Tool)#What_is_HDT_.3F\" target=\"_blank\" rel=\"noreferrer noopener\">HDT<\/a>. Il s&rsquo;agit d&rsquo;une petite interface affichant la composition de votre ordinateur : CPU, m\u00e9moire, carte m\u00e8re, stockage, etc.&nbsp;<\/p>\n\n\n\n<p>Pour cela, il faut \u00e9diter le menu :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/var\/tftpboot\/pxelinux.cfg\/default<\/pre>\n\n\n\n<p>On y ajoute les lignes suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">DEFAULT menu.c32<br>MENU TITLE Serveur d'installation PXE<br>LABEL hdt<br> MENU LABEL ^Hardware Detection Tool<br> KERNEL hdt.c32<\/pre>\n\n\n\n<p>D\u00e9marrez la machine sur le r\u00e9seau local, acc\u00e9dez \u00e0 l&rsquo;interface PXE, vous pourrez alors lancer HDT, la ligne pouvant \u00eatre s\u00e9lectionn\u00e9e via la touche H (gr\u00e2ce au ^) en cas de choix multiples. Attention, le clavier est configur\u00e9 en QWERTY.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173781.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173781.png\" alt=\"PXE Boot\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173782.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173782.png\" alt=\"PXE Boot\"\/><\/a><\/figure>\n\n\n\n<p>Un point que l&rsquo;on peut configurer, tout comme le menu, notamment ses couleurs en ajoutant des textes d&rsquo;aides, des sous-menus, etc. Tous les d\u00e9tails sont&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=Menu\" target=\"_blank\" rel=\"noreferrer noopener\">par ici<\/a>. Pour lancer le choix par d\u00e9faut au bout de 30 secondes,&nbsp;ajoutons&nbsp;la ligne suivante :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">TIMEOUT 300<\/pre>\n\n\n\n<p>D&rsquo;autres&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=Category:Comboot\" target=\"_blank\" rel=\"noreferrer noopener\">modules&nbsp;<\/a>simples \u00e0 int\u00e9grer sont disponibles, pour d\u00e9marrer&nbsp;<a href=\"https:\/\/wiki.syslinux.org\/wiki\/index.php?title=Sanboot.c32\" target=\"_blank\" rel=\"noreferrer noopener\">depuis un SAN<\/a>&nbsp;(iSCSI, AoE), le stockage local ou red\u00e9marrer la machine. Dans ce dernier cas, il faut par exemple ajouter ces lignes. Ce sera notre valeur par d\u00e9faut&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL reboot<br> MENU DEFAULT<br> MENU LABEL Reboot<br> COM32 reboot.c32<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Debian 9.9&nbsp;(Mini ISO)<\/h2>\n\n\n\n<p>Notre serveur PXE fonctionne, mais il&nbsp;ne fait pas encore grand-chose.&nbsp;Il est temps de l&rsquo;utiliser pour installer une premi\u00e8re distribution : Debian 9.9.&nbsp;<a href=\"https:\/\/www.debian.org\/distrib\/netinst\" target=\"_blank\" rel=\"noreferrer noopener\">Elle est fournie<\/a>&nbsp;sous une forme dite \u00ab netboot \u00bb avec les \u00e9l\u00e9ments n\u00e9cessaires pour d\u00e9marrer l&rsquo;installation, qui utilisera ensuite un miroir local ou distant.<\/p>\n\n\n\n<p>Pour ce premier essai nous optons pour une ISO qui est la forme la plus simple \u00e0 utiliser. Commen\u00e7ons par la t\u00e9l\u00e9charger :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir \/var\/tftpboot\/_iso<br>cd \/var\/tftpboot\/_iso<br>sudo wget http:\/\/ftp.nl.debian.org\/debian\/dists\/stretch\/main\/installer-amd64\/current\/images\/netboot\/mini.iso<\/pre>\n\n\n\n<p>Pensez \u00e0 v\u00e9rifier l&#8217;empreinte SHA-256 du fichier r\u00e9cup\u00e9r\u00e9&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo wget&nbsp;http:\/\/ftp.nl.debian.org\/debian\/dists\/stretch\/main\/installer-amd64\/current\/images\/SHA256SUMS<br>grep -F&nbsp;\/netboot\/mini.iso SHA256SUMS<br>sha256sum mini.iso<\/pre>\n\n\n\n<p>Si les deux empreintes correspondent, c&rsquo;est bon. On peut ensuite faire un peu de m\u00e9nage :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo rm SHA256SUMS<br>sudo mv mini.iso debian_9.9_netboot.iso<\/pre>\n\n\n\n<p>\u00c9ditons le menu :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo nano \/var\/tftpboot\/pxelinux.cfg\/default<\/pre>\n\n\n\n<p>On y ajoute les lignes suivantes :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL debian<br> MENU LABEL ^Debian 9.9 (Netboot)<br> LINUX memdisk<br> INITRD _iso\/debian_9.9_netboot.iso<\/pre>\n\n\n\n<p>Le dispositif est ici assez basique puisque l&rsquo;on&nbsp;demande \u00e0&nbsp;la machine de r\u00e9cup\u00e9rer l&rsquo;ISO depuis le serveur TFTP pour la placer en m\u00e9moire. Elle est alors mont\u00e9e comme un ramdisk puis utilis\u00e9e. Notez que vous pouvez utiliser cette image avec la proc\u00e9dure d&rsquo;automatisation par pr\u00e9configuration d\u00e9crite dans&nbsp;<a href=\"https:\/\/www.nextinpact.com\/news\/107141-preseed-debian-automatisez-simplement-installation.htm\" target=\"_blank\" rel=\"noreferrer noopener\">notre pr\u00e9c\u00e9dent article<\/a>.<\/p>\n\n\n\n<p>Parfois, certaines&nbsp;images&nbsp;n\u00e9cessitent une ligne compl\u00e9mentaire pour \u00eatre charg\u00e9es correctement :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">APPEND iso raw<\/pre>\n\n\n\n<p>Cette fa\u00e7on de faire fonctionne sans probl\u00e8me avec les images pr\u00e9vues \u00e0 cet effet, mais pas pass\u00e9 une certaine taille (1,2 Go environ) ou la plupart des ISO d&rsquo;installation classique qui vont chercher un CD\/DVD ou une cl\u00e9 USB, sans les trouver. Ce proc\u00e9d\u00e9 peut donc \u00eatre utilis\u00e9 pour des images de d\u00e9pannage et autres syst\u00e8mes minimalistes, mais pas plus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fedora 30&nbsp;(initrd)<\/h2>\n\n\n\n<p>Analysons maintenant un autre cas, Fedora 30, avec une autre m\u00e9thode qui est la plus courante : charger un simple noyau compress\u00e9 (vmlinuz) et une image syst\u00e8me minimale (initrd.img). Les d\u00e9veloppeurs de Fedora fournissent les fichiers n\u00e9cessaires via&nbsp;<a href=\"http:\/\/mirror.in2p3.fr\/pub\/fedora\/linux\/releases\/30\/Workstation\/x86_64\/os\/images\/pxeboot\/\" target=\"_blank\" rel=\"noreferrer noopener\">l&rsquo;image pxeboot<\/a>. Il suffit donc de t\u00e9l\u00e9charger les fichiers puis de les placer dans un dossier \u00e0 part :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir \/var\/tftpboot\/fedora_30<br>sudo wget -P \/var\/tftpboot\/fedora_30\/ http:\/\/mirror.in2p3.fr\/pub\/fedora\/linux\/releases\/30\/Workstation\/x86_64\/os\/images\/pxeboot\/vmlinuz<br>sudo wget -P \/var\/tftpboot\/fedora_30\/ http:\/\/mirror.in2p3.fr\/pub\/fedora\/linux\/releases\/30\/Workstation\/x86_64\/os\/images\/pxeboot\/initrd.img<\/pre>\n\n\n\n<p>Il suffit ensuite d&rsquo;ajouter une entr\u00e9e au menu afin d&rsquo;initialiser la proc\u00e9dure d&rsquo;installation en lui indiquant o\u00f9 trouver les fichiers compl\u00e9mentaires \u00e0 travers le site de Fedora :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL fedora30<br> MENU LABEL ^Fedora 30 (HTTP)<br> KERNEL fedora_30\/vmlinuz<br> INITRD fedora_30\/initrd.img<br> APPEND ip=dhcp inst.stage2=http:\/\/mirror.in2p3.fr\/pub\/fedora\/linux\/releases\/30\/Workstation\/x86_64\/os\/<\/pre>\n\n\n\n<p>Une fois la proc\u00e9dure lanc\u00e9e et le syst\u00e8me d\u00e9marr\u00e9 le t\u00e9l\u00e9chargement commencera. Lorsque c&rsquo;est termin\u00e9, l&rsquo;installation se d\u00e9roulera de mani\u00e8re classique. Une m\u00e9thode facile \u00e0 adapter \u00e0 l&rsquo;arriv\u00e9e de nouvelles versions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Netboot.xyz et iPXE : choisissez votre distribution<\/h2>\n\n\n\n<p>Un projet a d\u00e9cid\u00e9 de g\u00e9n\u00e9raliser les deux fa\u00e7ons de faire que nous venons d&rsquo;analyser :&nbsp;<a href=\"https:\/\/netboot.xyz\/\" target=\"_blank\" rel=\"noreferrer noopener\">Netboot.xyz<\/a>. Il utilise une version&nbsp;<a href=\"https:\/\/ipxe.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">iPXE&nbsp;<\/a>plut\u00f4t que PXE pour avoir acc\u00e8s \u00e0 des protocoles avanc\u00e9s, vous pouvez l&rsquo;utiliser comme environnement de base dans la configuration de votre serveur DHCP ou l&rsquo;utiliser \u00e0 travers un noyau \u00e0 charger, votre UEFI, une cl\u00e9 USB, une ISO, etc.&nbsp;<\/p>\n\n\n\n<p>Nous opterons ici pour la derni\u00e8re solution, en ajoutant l&rsquo;entr\u00e9e suivante \u00e0 notre menu :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL netboot<br> MENU LABEL ^Netboot.xyz<br> LINUX memdisk<br> INITRD _iso\/netboot.xyz.iso<br> APPEND iso raw<\/pre>\n\n\n\n<p>La derni\u00e8re ligne est ici ajout\u00e9e car il ne s&rsquo;agit ne s&rsquo;agit pas d&rsquo;une ISO dite hybride, elle ne peut donc pas \u00eatre mont\u00e9e comme un simple disque de stockage pour fonctionner correctement. Il faut bien entendu r\u00e9cup\u00e9rer l&rsquo;ISO au passage :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo wget https:\/\/boot.netboot.xyz\/ipxe\/netboot.xyz.iso<\/pre>\n\n\n\n<p>Une fois Netboot.xyz lanc\u00e9, vous verrez un large choix de distributions, Live ou non, que vous pourrez installer comme bon vous semble. Vous pouvez m\u00eame l&rsquo;utiliser pour initialiser une installation de Windows (nous y reviendrons). Attention n\u00e9anmoins, aucune donn\u00e9e n&rsquo;\u00e9tant stock\u00e9e localement, tous les fichiers seront t\u00e9l\u00e9charg\u00e9s depuis des serveurs ce qui n\u00e9cessite une bonne connexion internet pour ne pas y passer des heures.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173783.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173783.png\" alt=\"PXE Netboot.xyz\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173784.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173784.png\" alt=\"PXE Netboot.xyz\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ubuntu 19.04 Desktop (Live) : NFS \u00e0 la rescousse<\/h2>\n\n\n\n<p>Passons maintenant \u00e0 un cas plus complexe : le d\u00e9marrage d&rsquo;une ISO avec un syst\u00e8me \u00ab Live \u00bb, qui doit \u00eatre directement utilisable. Nous avons cette fois opt\u00e9 pour Ubuntu 19.04 dont l&rsquo;image p\u00e8se&nbsp;environ 2 Go.<\/p>\n\n\n\n<p>Pour commencer, r\u00e9cup\u00e9rons l&rsquo;ISO et le fichier d&#8217;empreintes SHA-256 :&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo wget&nbsp;http:\/\/releases.ubuntu.com\/19.04\/ubuntu-19.04-desktop-amd64.iso<br>sudo wget http:\/\/releases.ubuntu.com\/19.04\/SHA256SUMS<\/pre>\n\n\n\n<p>On v\u00e9rifie que le fichier r\u00e9cup\u00e9r\u00e9&nbsp;est valide :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">grep -F ubuntu-19.04-desktop-amd64.iso SHA256SUMS<br>sha256sum ubuntu-19.04-desktop-amd64.iso<\/pre>\n\n\n\n<p>Un Rasbperry Pi \u00e9tant en g\u00e9n\u00e9ral limit\u00e9 en espace de stockage sur sa microSD, n&rsquo;h\u00e9sitez pas \u00e0 utiliser un p\u00e9riph\u00e9rique USB ou&nbsp;<a href=\"https:\/\/access.redhat.com\/solutions\/448263\" target=\"_blank\" rel=\"noreferrer noopener\">un partage sur votre r\u00e9seau local<\/a>&nbsp;pour stocker vos ISO. Dans ce dernier cas, pensez n\u00e9anmoins \u00e0 monter ce partage d\u00e8s le d\u00e9marrage de la machine&nbsp;pour \u00e9viter les mauvaises surprises en cas de coupure de courant par exemple.<\/p>\n\n\n\n<p>Puisqu&rsquo;il est impossible de monter l&rsquo;image r\u00e9cup\u00e9r\u00e9e en m\u00e9moire via TFTP, il faut utiliser une autre m\u00e9thode pour acc\u00e9der aux donn\u00e9es. Ainsi, nous allons \u00e0 nouveau utiliser l&rsquo;amor\u00e7age PXE&nbsp;pour initialiser un noyau et le syst\u00e8me de base, mais au lieu de lui faire passer les donn\u00e9es via un serveur HTTP distant comme pour Fedora, nous allons utiliser un partage local.&nbsp;<\/p>\n\n\n\n<p>C&rsquo;est le protocole NFS (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Network_File_System\" target=\"_blank\" rel=\"noreferrer noopener\">Network File System<\/a>)&nbsp;qui est ici utilis\u00e9 puisqu&rsquo;il est simple \u00e0 mettre en \u0153uvre avec une s\u00e9curit\u00e9 reposant plut\u00f4t sur des plages d&rsquo;IP que des identifiants. Il n&rsquo;y a de toutes fa\u00e7ons pas besoin de plus pour acc\u00e9der \u00e0 une ISO sur un r\u00e9seau local. Une fois l&rsquo;image v\u00e9rifi\u00e9e, on la monte, on copie son contenu dans&nbsp;un r\u00e9pertoire puis on fait le m\u00e9nage :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir -p \/mnt\/iso\/ \/var\/tftpboot\/expanded\/ubuntu_19.04_desktop<br>sudo mount -o loop \/var\/tftpboot\/_iso\/ubuntu-19.04-desktop-amd64.iso \/mnt\/iso\/<br>sudo cp -r \/mnt\/iso\/* \/var\/tftpboot\/expanded\/ubuntu_19.04_desktop<br>sudo umount \/mnt\/iso<br>sudo rm \/var\/tftpboot\/_iso\/ubuntu-19.04-desktop-amd64.iso SHA256SUMS<\/pre>\n\n\n\n<p>On copie le noyau et le syst\u00e8me de base dans un nouveau r\u00e9pertoire :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir \/var\/tftpboot\/ubuntu_19.04<br>cp \/var\/tftpboot\/expanded\/ubuntu_19.04_desktop\/casper\/{initrd,vmlinuz} \/var\/tftpboot\/ubuntu_19.04<\/pre>\n\n\n\n<p>On installe ensuite le service&nbsp;NFS puis on \u00e9dite son fichier de configuration :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install nfs-kernel-server<br>sudo nano \/etc\/exports<\/pre>\n\n\n\n<p>On y ajoute la ligne suivante (adaptez la plage d&rsquo;IP \u00e0 celle de votre r\u00e9seau local), permettant \u00e0 n&rsquo;importe quelle machine du r\u00e9seau d&rsquo;acc\u00e9der au dossier en lecture :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/var\/tftpboot\/expanded\/ubuntu_19.04_desktop 192.168.0.*(sync,no_root_squash,no_subtree_check,ro)<\/pre>\n\n\n\n<p>Une fois le fichier enregistr\u00e9, on initialise le serveur NFS :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo exportfs -a<\/pre>\n\n\n\n<p>On peut alors ajouter une nouvelle entr\u00e9e \u00e0 notre menu :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL ubuntudesk<br> MENU LABEL ^Ubuntu Desktop 19.04 (Live)<br> KERNEL ubuntu_19.04\/vmlinuz<br> INITRD ubuntu_19.04\/initrd<br> APPEND boot=casper rootfstype=nfs netboot=nfs nfsroot=192.168.0.222:\/var\/tftpboot\/expanded\/ubuntu_19.04_desktop splash ---<\/pre>\n\n\n\n<p>Cela vous permet d&rsquo;avoir une installation Ubuntu Desktop Live fonctionnelle&nbsp;acc\u00e9dant au contenu de l&rsquo;ISO via le protocole NFS, et donc sans d\u00e9pendre du d\u00e9bit de votre connexion internet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Automatisation de l&rsquo;installation d&rsquo;Ubuntu<\/h2>\n\n\n\n<p>L&rsquo;int\u00e9r\u00eat de cette m\u00e9thode, c&rsquo;est qu&rsquo;elle permet d&rsquo;ajouter simplement un fichier de pr\u00e9configuration (preseed). Mais l\u00e0 encore il faut user d&rsquo;astuce pour le fournir lors du d\u00e9marrage.&nbsp;Ne pouvant \u00eatre charg\u00e9 depuis un m\u00e9dia local on passe par un serveur HTTP o\u00f9 l&rsquo;on va rendre ce fichier disponible. Vous pouvez utiliser le mod\u00e8le&nbsp;<a href=\"https:\/\/www.nextinpact.com\/news\/107281-cubic-personnalisez-et-automatisez-installation-dubuntu.htm\" target=\"_blank\" rel=\"noreferrer noopener\">fourni dans notre pr\u00e9c\u00e9dent article<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install apache2<br>sudo nano \/var\/www\/html\/auto.seed<\/pre>\n\n\n\n<p>Une fois le fichier enregistr\u00e9, on modifie la derni\u00e8re ligne de notre menu en ajoutant les param\u00e8tres d&rsquo;automatisation, ce qui donne pour&nbsp;la nouvelle entr\u00e9e suivante :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL ubuntuauto<br> MENU LABEL ^Ubuntu Desktop 19.04 (Preseed)<br> KERNEL ubuntu_19.04\/vmlinuz<br> INITRD ubuntu_19.04\/initomatird<br> APPEND boot=casper preseed\/url=http:\/\/192.168.0.222\/auto.seed autc-ubiquity noprompt rootfstype=nfs netboot=nfs nfsroot=192.168.0.222:\/var\/tftpboot\/expanded\/ubuntu_19.04_desktop splash ---<\/pre>\n\n\n\n<p>Si vous choisissez cet \u00e9l\u00e9ment dans le menu, l&rsquo;installation d&rsquo;Ubuntu d\u00e9marrera, ne vous demandera rien et la machine sera red\u00e9marr\u00e9e une fois la proc\u00e9dure termin\u00e9e. Le tout, sans aucun m\u00e9dia physique. Vous pouvez utiliser diff\u00e9rents fichiers de&nbsp;pr\u00e9configuration&nbsp;avec une m\u00eame image, et donc en changer selon les cas et les machines.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Environnement WinPE : le cas&nbsp;Windows 10<\/h2>\n\n\n\n<p>Le d\u00e9ploiement de Windows est un peu particulier. En effet, il est impensable de charger son ISO compl\u00e8te via le serveur TFTP. Aucun dispositif de type netboot minimal avec chargement des fichiers d&rsquo;installation depuis les serveurs de Microsoft n&rsquo;est ouvert \u00e0 tous. Il faut donc passer par Windows Preinstallation Environment (<a href=\"https:\/\/msdn.microsoft.com\/fr-fr\/library\/windows\/hardware\/dn938389(v=vs.85).aspx\" target=\"_blank\" rel=\"noreferrer noopener\">WinPE<\/a>).<\/p>\n\n\n\n<p>C&rsquo;est lui qui d\u00e9marre lorsque vous initiez une installation depuis une cl\u00e9 USB ou un CD\/DVD. Il contient une version minimale de Windows permettant de lancer le fichier&nbsp;<code>setup.exe<\/code>&nbsp;pr\u00e9sent \u00e0 la racine de l&rsquo;image. Avec un amor\u00e7age PXE,&nbsp;nous l&rsquo;utiliserons conjointement avec un dossier partag\u00e9 sur le r\u00e9seau local contenant les fichiers d&rsquo;installation.&nbsp;<\/p>\n\n\n\n<p>Pour commencer, il vous faut r\u00e9cup\u00e9rer&nbsp;Windows Assessment and Deployment Kit (<a href=\"https:\/\/docs.microsoft.com\/fr-fr\/windows-hardware\/get-started\/adk-install\" target=\"_blank\" rel=\"noreferrer noopener\">ADK<\/a>) ainsi que WinPE, d\u00e9sormais propos\u00e9 sous la forme d&rsquo;un compl\u00e9ment :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?linkid=2086042\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e9l\u00e9charger ADK<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?linkid=2087112\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e9l\u00e9charger WinPE pour l&rsquo;ADK<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.nextinpact.com\/news\/107616-rufus-3-5-uup-dump-comment-telecharger-iso-nimporte-quelle-branche-windows-10.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Rufus, UUP Dump : comment t\u00e9l\u00e9charger l&rsquo;ISO de n&rsquo;importe quelle branche de Windows 10<\/a><\/li>\n<\/ul>\n\n\n\n<p>Vous n&rsquo;\u00eates pas oblig\u00e9s d&rsquo;installer l&rsquo;USMT (600 Mo) de l&rsquo;ADK, qui g\u00e8re la migration des utilisateurs et n&rsquo;est pas n\u00e9cessaire. L&rsquo;ensemble occupera ainsi entre 6 et 7 Go d&rsquo;espace de stockage.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cr\u00e9ation de l&rsquo;ISO WinPE<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Une fois les deux fichiers ci-dessus r\u00e9cup\u00e9r\u00e9s installez-les sous Windows. Il faut ensuite ouvrir l&rsquo;environnement de d\u00e9ploiement et d&rsquo;outils de cr\u00e9ation d&rsquo;images&nbsp;avec les droit administrateur pour lancer la cr\u00e9ation de l&rsquo;ISO. Tout d&rsquo;abord pour r\u00e9cup\u00e9rer le contenu de WinPE (dans son \u00e9dition 64 bits) :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">copype amd64 c:\\winpe_amd64<\/pre>\n\n\n\n<p>Ensuite on va ajouter un fichier qui permettra de monter le partage r\u00e9seau d\u00e8s le lancement de WinPE et de lancer automatiquement la proc\u00e9dure d&rsquo;installation (avec un clavier fran\u00e7ais). Pour cela, il faut monter le fichier&nbsp;<code>boot.wim<\/code>&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Dism \/mount-image \/imagefile:c:\\winpe_amd64\\media\\sources\\boot.wim \/index:1 \/mountdir:c:\\winpe_amd64\\mount<br>Dism \/Image:c:\\winpe_amd64\\mount \/Set-InputLocale:fr-fr<\/pre>\n\n\n\n<p>Il aut ensuite \u00e9diter le fichier charg\u00e9 au d\u00e9marrage de l&rsquo;OS :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">notepad C:\\WinPE_amd64\\mount\\Windows\\System32\\startnet.cmd<\/pre>\n\n\n\n<p>Modifiez son contenu comme suit (en utilisant l&rsquo;adresse IP de votre Raspberry Pi) :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">wpeinit<br>ping 192.168.0.222 -n 21 -w 1000 &gt; null<br>net use z: \\\\192.168.0.222\\RasPXE \/user:dummy pass<br>z:\\expanded\\setup.exe<\/pre>\n\n\n\n<p>Cela nous permet de v\u00e9rifier que le serveur est joignable, pour ensuite monter le partage r\u00e9seau et lancer l&rsquo;installation. D&rsquo;autres&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/manufacture\/desktop\/winpe-mount-and-customize\" target=\"_blank\" rel=\"noreferrer noopener\">possibilit\u00e9s de personnalisation<\/a>&nbsp;s&rsquo;ouvrent \u00e0 vous \u00e0 cette \u00e9tape : ajouter des fichiers, des pilotes, des applications, des r\u00e9glages et autres mises \u00e0 jour. Vous pouvez m\u00eame r\u00e9duire la taille de l&rsquo;image produite en suivant&nbsp;<a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/manufacture\/desktop\/winpe-optimize\" target=\"_blank\" rel=\"noreferrer noopener\">ce guide<\/a>.<\/p>\n\n\n\n<p>Une fois termin\u00e9, on d\u00e9monte le fichier de boot et on g\u00e9n\u00e8re l&rsquo;ISO :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Dism \/unmount-image \/mountdir:c:\\winpe_amd64\\mount \/commit<br>Makewinpemedia \/iso c:\\winpe_amd64 c:\\winpe_amd64\\winpe_amd64.iso<\/pre>\n\n\n\n<p>On peut alors supprimer les fichiers de travail et d\u00e9sinstaller l&rsquo;ADK\/WinPE.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cr\u00e9ation du partage r\u00e9seau via Samba<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Retour \u00e0 la console de notre Raspberry Pi&nbsp;pour&nbsp;installer et configurer Samba ainsi que le partage r\u00e9seau :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo apt install samba<br>sudo mv \/etc\/samba\/smb.conf \/etc\/samba\/smb.conf.old<br>sudo nano&nbsp;\/etc\/samba\/smb.conf<\/pre>\n\n\n\n<p>Il faut ensuite cr\u00e9er le r\u00e9pertoire qui sera utilis\u00e9 pour le partage r\u00e9seau&nbsp; :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo mkdir \/var\/tftpboot\/winpe<\/pre>\n\n\n\n<p>Remplissez le fichier de configuration comme suit :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">security = user<br>passdb backend = tdbsam<br>map to guest = Bad User<br><br>[RasPXE]<br>path = \/var\/tftpboot\/winpe<br>browseable = yes<br>guest ok = yes<br>writeable = yes<\/pre>\n\n\n\n<p>On a cr\u00e9\u00e9 ainsi un partage permettant \u00e0 n&rsquo;importe qui sur le r\u00e9seau local d&rsquo;\u00e9crire dans le r\u00e9pertoire contenant winpe. Pour que cela fonctionne il faut red\u00e9marrer le service Samba :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo systemctl restart smbd.service<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Transfert de l&rsquo;image&nbsp;Windows 10&nbsp;sur le Raspberry Pi<\/strong><\/li>\n<\/ul>\n\n\n\n<p>On peut alors y acc\u00e9der&nbsp;depuis Windows \u00e0 l&rsquo;adresse de notre RaspberryPi :&nbsp;<code>\\\\192.168.0.222<\/code>&nbsp;dans notre cas. On y transf\u00e8re alors l&rsquo;ISO de WinPE et le contenu d&rsquo;une image&nbsp;Windows 10&nbsp;dans le r\u00e9pertoire expanded. Pour cela, on cr\u00e9\u00e9 le dossier puis on monte l&rsquo;image en double-cliquant dessus. Il suffit ensuite de faire un simple copier-coller :<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173776.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173776.png\" alt=\"WinPE\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/173777.png\"><img decoding=\"async\" src=\"https:\/\/cdn2.nextinpact.com\/images\/bd\/news\/mini-173777.png\" alt=\"WinPE\"\/><\/a><\/figure>\n\n\n\n<p>On peut alors remplacer par&nbsp;<code>no<\/code>&nbsp;le param\u00e8tre d&rsquo;acc\u00e8s en \u00e9criture de Samba et red\u00e9marrer \u00e0 nouveau le service. On ajoute ensuite&nbsp;l&rsquo;entr\u00e9e suivante \u00e0 notre menu :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">LABEL winpe<br> MENU LABEL ^WinPE<br> LINUX memdisk<br> INITRD winpe\/winpe_amd64.iso<br> APPEND iso raw<\/pre>\n\n\n\n<p>Si tout se passe comme pr\u00e9vu, l&rsquo;environnement WinPE d\u00e9marre, lance le script permettant d&rsquo;acc\u00e9der au partage r\u00e9seau puis lance l&rsquo;installation. Elle pourra alors poursuivre comme si elle avait \u00e9t\u00e9 lanc\u00e9e depuis&nbsp;une cl\u00e9 USB ou un CD\/DVD.<\/p>\n\n\n\n<p>Si vous utilisez iPXE ou Netboot.xyz, sachez qu&rsquo;ils permettent de charger directement un fichier WIM plut\u00f4t que de n\u00e9cessiter une ISO compl\u00e8te, ce qui peut vous faciliter la t\u00e2che. Notez enfin que l&rsquo;installation de&nbsp;Windows 10&nbsp;est elle aussi automatisable. Ce sera l&rsquo;objet d&rsquo;un prochain&nbsp;article.<\/p>\n\n\n\n<p>Vous trouverez le menu PXE complet et finalis\u00e9 de cet article&nbsp;<a href=\"https:\/\/gist.github.com\/davlgd\/d85815dc78ee52b46d490dcd70ac294e\" target=\"_blank\" rel=\"noreferrer noopener\">par ici<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un Raspberry Pi et c&rsquo;est parti ! 19 LOGICIELTUTORIELS&nbsp;19 MIN Par&nbsp;David LegrandLe samedi 4 mai 2019 \u00e0 10:30 Les jours de repos s&rsquo;encha\u00eenent, et vous ne savez pas quoi faire pour occuper ces p\u00e9riodes parfois pluvieuses ? Et pourquoi pas utiliser l&rsquo;amor\u00e7age PXE pour simplifier l&rsquo;installation des machines de votre r\u00e9seau. Un Raspberry Pi (et [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-839","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/pages\/839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=839"}],"version-history":[{"count":1,"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/pages\/839\/revisions"}],"predecessor-version":[{"id":840,"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/pages\/839\/revisions\/840"}],"wp:attachment":[{"href":"https:\/\/reglisss.freeboxos.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}