PXEBootInstall

Préface

L’installation utilisant le démarrage réseau ne doit pas être confondue avec DebianNetworkInstall. Dans l’installation réseau, vous commencez avec un CD (ou une mémoire flash USB ou similaire) pour installer un système Linux minimal avant de procéder au téléchargement d’autres packages sur le réseau.

L’installation à l’aide du démarrage réseau est également différente de l’utilisation du réseau pour démarrer un système déjà installé : dans ce cas, la machine cliente reste dépendante de la disponibilité du serveur à chaque démarrage futur. Le projet Linux Terminal Server (LTSP) fonctionne comme ça, par exemple.

Cette page décrit l’installation d’un nouveau système Debian sans CD, DVD, USB du tout. À la fin du processus d’installation, la nouvelle machine peut fonctionner sans le support du serveur. Lors de l’installation, vous aurez besoin d’un serveur de démarrage réseau.

Comme il n’y a pas de serveurs de démarrage fiducial dans la nature, vous devez configurer le vôtre. C’est beaucoup plus compliqué que d’installer Debian à partir d’un CD (raccourci pour CD ou USB ou…). Normalement, le démarrage réseau n’est utilisé que s’il n’y a vraiment aucun moyen de démarrer à partir d’un CD. Si le démarrage à partir d’un CD échoue, cela peut être dû à des problèmes de BIOS qui empêcheront également le démarrage réseau (les tentatives de dépannage typiques incluent la désactivation du démarrage sécurisé, le passage de l’UEFI au mode de démarrage hérité, etc.).

Sur le Web, plusieurs articles peuvent être trouvés qui décrivent plus ou moins en détail comment configurer un serveur de démarrage réseau. Ils ont tous la même faiblesse: vous devez exécuter une longue liste d’instructions sans obtenir de commentaires avant la toute fin de la procédure lorsque vous essayez de démarrer. Si ça marche, d’accord. Sinon, le débogage deviendra très très difficile. Par conséquent, dans ce qui suit, nous décomposons la procédure en étapes qui peuvent être déboguées séparément.

http://www.debian.org/releases/stable/amd64/ch04s05 – Guide d’installation Debian – 4.5. Préparation des fichiers pour le démarrage Net TFTP

Remarque: Si votre système prend en charge iPXE, utilisez netboot.xyz sera probablement beaucoup plus simple.

Conditions préalables

L’ordinateur sur lequel vous souhaitez installer sera appelé le Client.

L’ordinateur à partir duquel vous installez sera appelé le serveur. Nous supposons que le serveur exécute Debian.

Pour être précis, nous supposons que le Client et le Serveur font partie d’un RÉSEAU local avec les adresses IP suivantes:

Vous découvrirez la valeur de x plus tard.

Notez que de nombreux routeurs fournissent également un serveur DHCP : vous devrez l’éteindre, car un seul serveur DHCP peut fonctionner dans un réseau local donné. Sauf si vous pouvez configurer le serveur DHCP de votre routeur pour qu’il soit conforme à la configuration du serveur DHCP ISC ci-dessous, mais cela ne fait pas partie de la portée de ce document.

Il est également possible que le routeur et le serveur soient la même machine, c’est-à-dire que votre serveur Debian est la passerelle par défaut pour ce réseau local. Cela fonctionnera bien.

Les instructions suivantes ont été testées avec Debian 8.2 (Jessie) en septembre 2015.

Activer le démarrage PXE

Configurez le menu de démarrage du BIOS du Client pour démarrer à partir du réseau.

Redémarrez. Sur la plupart des systèmes, cela produit une sortie contenant l’adresse MAC du client. Ensuite, il échouera avec

 PXE-E53: no boot filename received.

Notez l’adresse MAC; il sera utile pour interpréter les messages de journal.

Sur de nombreux serveurs, il est également possible de passer temporairement au démarrage PXE sans modifier définitivement les paramètres du BIOS. Il y aura une sorte de frappe à frapper lors de la publication du BIOS. Sur les serveurs Dell, F12 fera l’affaire (ou Esc puis @ à partir d’une console série ou IPMI).

Configurer le serveur DHCP

Sur le serveur, nous devons configurer un serveur DHCP.

La meilleure pratique actuelle semble être d’utiliser le paquet isc-dhcp-server, qui fournit un démon dhcpd.

Son fichier de configuration est /etc/dhcp/dhcpd.conf. Modifiez ce fichier pour qu’il contienne à peu près les éléments suivants ; adaptez les adresses IP et MAC à vos besoins locaux :

Après chaque modification de ce qui précède, redémarrez le serveur DHCP avec

 # /etc/init.d/isc-dhcp-server restart

ou avec l’équivalent systemd

 # systemctl restart isc-dhcp-server

Vérifiez qu’il est en cours d’exécution :

 # pgrep -lf dhcpd 32277 /usr/sbin/dhcpd -q

ou

 # systemctl status isc-dhcp-server

ce qui donne un peu plus d’informations.

Avant de redémarrer le client, vous pouvez exécuter

 # journalctl -fu isc-dhcp-server

qui vous montre les dernières lignes du journal du serveur DHCP, puis met à jour l’écran à chaque nouvelle entrée de journal. (Si vous ne voulez pas « suivre » le journal, il suffit de laisser de côté le « f »)

 PXE-E32: TFTP open timeout

et en même temps, vous verrez des messages de journal sur l’écran du serveur affichant les demandes DHCP et les offres similaires à la sortie ci-dessous la commande alternative ci-dessous

Si vous préférez ne pas utiliser systemd, ou si vous souhaitez comparer la sortie de journal traditionnelle à des fins de diagnostic, vous pouvez rechercher /var/log/syslog, par exemple avec ceci commande

 # grep DHCP /var/log/syslog
  • où vous devriez voir quelque chose comme:

(Notez que les versions précédentes de Debian utilisaient /var/log/daemon.log au lieu de syslog)

Si rien n’apparaît dans le journal avec l’une ou l’autre commande, vérifiez les liens réseau entre le Serveur et le Client. Notez que certains commutateurs réseau peuvent imposer des limitations sévères sur le trafic DHCP ; pour ceux de Cisco, utilisez ‘portfast’ si possible (voir http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a00800b1500.shtml).

Configurer le serveur TFTP

Ensuite, nous devons configurer un serveur TFTP sur le serveur.

Encore une fois, il existe plusieurs paquets qui fournissent TFTP (FTP trivial, non sécurisé, à utiliser uniquement dans les réseaux locaux). Il semble préférable d’utiliser le package tftpd-hpa. Lors de l’installation, quelques questions sont posées. La réponse à ces questions va dans un fichier de configuration, /etc/default/tftpd-hpa. Il ne devrait pas être nécessaire de modifier le contenu par défaut suivant:

 TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure"

Ignorez les anciens sites Web qui vous demandent d’insérer quelque chose comme ‘RUN_DAEMON= »yes »‘.

Après chaque modification du fichier de configuration ci-dessus, redémarrez le serveur TFTP avec

 # /etc/init.d/tftpd-hpa restart

ou

 # systemctl restart tftpd-hpa

Sur Jessie, le répertoire /srv/tftp sera automatiquement créé. Cela signifie que les deux étapes suivantes ne sont pas nécessaires si vous utilisez Jessie.

Initialement, sur les versions pré-Jessie, le redémarrage du serveur TFTP peut échouer avec un message comme

 Restarting HPA's tftpd: in.tftpd/srv/tftp missing, aborting.

Par conséquent, en tant que root, créez le répertoire /srv/tftp. Redémarrez le démon TFTP. Vérifiez qu’il est réellement en cours d’exécution:

 # pgrep -lf tftpd 12555 /usr/sbin/in.tftpd

ou

 # systemctl status tftpd-hpa

ce qui donne à nouveau quelques lignes du journal plutôt que simplement le fait que la tâche est (n’est pas) en cours d’exécution.

Il est utile de tester votre serveur TFTP avec un client TFTP ; vous pouvez simplement utiliser le package tftp-hpa à cette fin:

 # cd /tmp # uname -a >/srv/tftp/test # tftp 192.168.0.2 tftp> get test tftp> quit # diff test /srv/tftp/test (nothing, they are identical)

Il est également utile de voir quelles entrées de journal vous obtenez lorsque vous téléchargez un fichier qui existe, et lorsque vous essayez d’en télécharger un qui n’existe pas. Tout en utilisant tftp pour tester votre serveur tftpd, essayez de suivre vos expériences avec les anciennes et nouvelles formes de la commande log pendant que vous utilisez votre client TFTP pour télécharger des fichiers qui existent, ainsi que des fichiers qui n’existent pas.

La commande traditionnelle sur Jessie

 # tail -f /var/log/syslog

(Notez encore que les versions précédentes de Debian utilisaient /var/log/daemon.log au lieu de syslog.)

Sur systemd

 # journalctl -fu tftpd-hpa

Malheureusement, ceux-ci semblent donner des résultats différents, en janvier 2017. La commande systemd n’affiche pas les demandes de fichiers pour les fichiers qui n’existent pas.

Il est très utile de savoir ce que le client demande, car cela vous aide à déplacer les fichiers à l’emplacement prévu si vous faites des erreurs plus tard. À l’heure actuelle, il vaut probablement la peine d’utiliser la méthode traditionnelle de suivi des journaux pour TFTPD.

Redémarrez le client. Vous devriez voir des messages d’erreur sur l’écran du client commençant par

 PXE-T01: File not found

ce qui est tout à fait correct car nous n’avons pas encore fourni de fichiers. Sur l’écran du serveur, vous verrez exactement ce que le client a demandé.

Fournir l’image de démarrage

Télécharger netboot/netboot.tar.gz à partir d’un miroir Debian (voir http://www.debian.org/distrib/netinst#netboot).

Facultatif : Pour vérifier la signature numérique, tapez ces commandes :

Décompressez netboot.tar.gz à /srv/tftp, qui devrait maintenant contenir

 debian-installer/ pxelinux.0@ pxelinux.cfg@ version.info

Il peut être nécessaire de chmod-R a+r* pour rendre tous les fichiers de ce répertoire lisibles pour le démon TFTP.

Vous devrez peut-être également modifier grub/grub.cfg afin de paramétrer votre console série, si nécessaire (j’ai remplacé la section sur le terminal graphique):

serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1terminal_input console serialterminal_output console serial

ainsi que la console série pour l’installateur debian en ajoutant ceci à la ligne de commande du noyau :

console=ttyS1,115200n8r console=tty1

Redémarrez le démon TFTP, et vous voudrez peut-être suivre les entrées du journal telles qu’elles apparaissent

 # tail -f /var/log/syslog

redémarrez ensuite le client. Vous devriez accéder à un écran d’installation de Debian.

Si vous recherchez dans /var/log/syslog, vous verrez ce qui a été téléchargé depuis le serveur TFTP par le chargeur de démarrage PXE, puis par SYSLINUX. Vous pouvez également voir des réponses « NAK » lorsque SYSLINUX demande des fichiers qui n’existent pas (il essaie plusieurs emplacements pour certains fichiers importants).

Le chargeur PXE (le firmware dans le BIOS ou le contrôleur réseau du client) essaie de charger dans cet ordre :

  • pxelinux.0 (ou plus exactement, ce que vous lui avez dit de télécharger dans le champ ‘nom de fichier’ de la réponse DHCP)

Alors SYSLINUX/PXELINUX essaiera de rechercher sa configuration sur différents chemins, du plus spécifique au moins :

  • pxelinux.cfg/GUID
  • pxelinux.cfg/MAC
  • pxelinux.cfg/default

Et si le menu de configuration dépend d’autres éléments de configuration, ils sont également téléchargés. Debian aura au moins besoin du ‘bootmenu.fichier txt ‘ qui est le menu principal.

Par défaut, vous arrivez à l’écran graphique du menu démarrer de l’installation Debian. Appuyez sur  » entrée  » pour lancer l’installation. Soyez patient : cela peut prendre plus d’une minute avant que l’écran suivant (« Sélectionner une langue ») n’apparaisse.

Autre moyen d’obtenir l’image de démarrage

Si vous avez un système Debian de la même version que vous souhaitez installer, vous pouvez installer l’image de démarrage en utilisant apt.

Pointez maintenant le serveur tftp vers /usr/lib/debian-installer/images/VERSIONVERSION/ARCHARCH/INTERFACEINTERFACE où INTERFACE=text pour l’installateur en mode texte ou INTERFACE=gtk pour l’installateur graphique. Un moyen simple d’y parvenir consiste à transformer /srv/tftp en lien symbolique.

Une autre façon d’utiliser Dnsmasq

dnsmasq est un transitaire DNS et un serveur DHCP légers et faciles à configurer avec la fonctionnalité BOOTP/TFTP/PXE. Autrement dit, vous pouvez remplacer isc-dhcp-server et tftpd-hpa par Dnsmasq.

Voici le fichier /etc/dnsmasq.conf fournissant les mêmes fonctionnalités que la méthode d’installation et de configuration de isc-dhcpd-server et tftpd-hpa décrite ci-dessus.

Téléchargez le netboot.tar.gz et l’extraire dans le /srv/tftp comme description précédente.

Problèmes potentiels

Si le noyau de l’image netboot se désynchronise avec les packages de modules du noyau, les modules ne se chargeront pas et l’installation échouera, les symptômes habituels sont que des messages sur les « symboles manquants » apparaissent dans la console ctrl-alt-f4.

Pour résoudre ce problème, mettez à jour le noyau et initrd sur le serveur netboot.

Il y a probablement un problème de BTS Debian ouvert pour cela, mais je ne le trouve pas maintenant.

Voir Aussi

  • http://www.debian.org/releases/stable/amd64/ch04s05 – Guide d’installation Debian – 4.5. Préparation des fichiers pour le démarrage du réseau TFTP

  • di-netboot-assistant automatise la plupart des étapes décrites ci-dessus : DebianInstaller/NetbootAssistant

  • Le programme d’installation Lenny dans netboot.tar.gz ne prend PAS en charge l’installation à l’aide de la console série par défaut maintenant. Vous trouverez plus d’informations sur ce problème et un correctif pour activer l’accès à la console série dans 309223.

  • https://networkboot.org/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *