Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Installer un serveur de boot sur un NAS DS-106e de Synology
Article mis en ligne le 18 juin 2008
dernière modification le 17 mai 2016
D’autres articles sur les applications des NAS :
Quelques définitions : NFS, SAN et NAS,
Configurer le NAS DS-106e de Synology,
Installer un serveur Subversion sur un NAS DS-106e de Synology.

Cet article vient à la suite de celui sur la configuration du Synology 106e, et il suppose réalisées au préalable les opérations de configuration en question, notamment l’installation d’un environnement Debian chrooté.

Comment faire sans lecteur de cédérom ?

En fait, l’idée de cette installation m’est venue lorsque j’ai reçu mon nouvel ordinateur portable Toshiba Portégé R500-10U, une machine géniale parce qu’elle ne pèse que 776 g. Pour ce poids-là on n’a ni lecteur de CD/DVD ni de disquette, ce qui convient à mes usages, mais le lecteur de CD de mes portables précédents avait quand même une utilité : installer un système d’exploitation décent à la place de celui que le fournisseur se croit obligé de mettre sur le disque dur, et dont je vous laisse deviner le nom. Là je suis resté sec, et j’ai même dû passer un week-end avec Vista, non sans répercussions fâcheuses sur mon état psychologique.

J’ai trouvé pas mal de documents consacrés à l’installation d’un système libre à partir d’une clé USB ou d’autres périphériques USB, mais j’ai dû mal m’y prendre, en tout cas je n’ai pas réussi à booter, ou quand j’ai réussi à booter le système d’installation ne trouvait pas l’image ISO de cédérom contenant les paquetages de base, bref je n’y arrivais pas. J’ai donc pensé à l’installation par le réseau.

Choix d’une méthode d’installation

Le réseau de mon employeur bien-aimé comporte un serveur de boot destiné à l’installation de divers systèmes, et effectivement j’ai réussi dans un premier temps à installer ainsi une version un peu ancienne de CentOS, ce qui m’a déjà mis de meilleure humeur, mais ce n’était pas encore ce qu’il me fallait. J’ai essayé de bricoler le serveur DHCP pour ajouter le système qu’il me fallait, mais c’était une mauvaise idée parce que ce serveur n’était pas là pour faire des essais mais pour la production.

Je me suis donc décidé à installer ce qu’il fallait à la maison, et, pourquoi pas, sur mon NAS, après tout c’est une machine tout indiquée pour ce genre d’usage. Je m’imaginais cette manœuvre très compliquée, parce que je ne l’avais jamais réalisée. En fait, pendant une réunion particulièrement ennuyeuse et stérile avec les commerciaux d’un grand fournissseur de SGBD et d’ERP, j’ai commencé à explorer le Web sur le sujet, et je suis tombé sur l’excellent tutorial Setting Up A PXE Install Server For Multiple Linux Distributions With Ubuntu Edgy Eft.

Ce tutorial est pour Ubuntu, mais ce n’est pas trop différent de la Debian, pourtant antique, installée sur mon NAS Synology. En fait, comme la suite allait le montrer, ce tutorial appliqué à la lettre fonctionne parfaitement sur Debian, à quelques nuances près quant à la postion du fichier de configuration du serveur DHCP dans l’arborescence /etc. On trouvera d’autres explications (en français cette fois) sur le site Comment ça marche et sur le site Debian.

Amorçage et installation système par le réseau

La possibilité pour un ordinateur d’amorcer son système d’exploitation (booter en jargon) par le réseau (c’est-à-dire, au lieu de charger le système qui est sur son disque dur, d’aller en chercher un autre chez un ordinateur voisin) nécessite que son microcode de démarrage (firmware, ou BIOS) le permette, ce qui est le cas de pratiquement toutes les machines modernes, et cela repose sur trois protocoles : Dynamic Host Configuration Protocol (DHCP), Trivial File Transfer Protocol (TFTP) et Preboot Execution Environment (PXE).

PXE est programmé dans le microcode, et se déclenchera à la mise sous tension de la machine à condition que l’option de boot par le réseau ait été sélectionnée dans le menu de configuration du BIOS.

 Le travail du microcode PXE sera de trouver sur le réseau un serveur DHCP qui accepte de lui répondre.
 Si tel est bien le cas, le travail du serveur DHCP sera d’envoyer les informations nécessaires à la poursuite des opérations, essentiellement l’emplacement des fichiers d’amorçage (noyau du système d’exploitation et image pré-configurée du contenu de la mémoire au démarrage).
 Une fois renseigné, le microcode PXE ira chercher les fichiers d’amorçage désirés, les récupérera par TFTP et les chargera dans la mémoire de l’ordinateur. Il existe des fichiers d’amorçage spécialement configurés pour démarrer l’installation d’un système d’exploitation neuf sur l’ordinateur.

Toujours pendant la réunion, je me suis connecté au NAS à la maison et j’ai commencé les opérations. À la fin de la réunion, le serveur sera opérationnel.

Installer DHCP

Première chose à faire, installer un serveur DHCP. DHCP est le protocole qui permet à votre ordinateur, lorsqu’il se connecte à un réseau, d’obtenir une adresse IP. C’est grâce à DHCP que Free, Orange ou InterPC attribuent une adresse à leurs abonnés. Si vous avez un petit routeur genre Linksys ou Netgear, c’est lui qui obtient l’adresse fournie par le fournisseur d’accès, et il comporte lui-même un petit serveur DHCP qui donne à son tour des adresses à vos ordinateurs. Mais le serveur DHCP de ces petits routeurs est insuffisant pour ce que nous voulons faire, il va donc falloir le désactiver au profit de celui que nous allons installer sur le NAS, plus complet et surtout plus configurable. En effet, le protocole DHCP permet d’envoyer à un système distant des informations bien plus raffinées que juste une adresse prise dans un intervalle, ce à quoi sont limités les petits routeurs.

Le fichier de configuration du serveur DHCP, /etc/dhcp3/dhcpd.conf,
contient les informations nécessaires à l’amorçage et à la configuration réseau
des clients, le mien ressemble à cela :

L’instruction filename donne le nom du fichier initial d’amorçage, l’instruction next-server donne l’adresse du serveur où aller chercher ce fichier et les autres fichiers d’amorçage.

Ne pas oublier la ligne deny unknown-clients;, sinon vos voisins de réseau vont peut-être installer Ubuntu sur leur ordinateur sans vraiment l’avoir voulu :-)

L’instruction log-facility local7; commande l’enregistrement d’un journal des opérations du serveur Dhcp. Elle va de pair avec l’insertion, dans le fichier /etc/syslog.conf, de la ligne suivante, afin d’en récupérer le contenu dans un fichier à part :

Comment installer ces fichiers, ce que nous diront la section suivante, et le tutorial déjà cité de Falko Timme, Setting Up A PXE Install Server For Multiple Linux Distributions..., auquel nous renvoyons pour les détails.

Installer TFTP

Ensuite, installer TFTP et les fichiers adéquats comme indiqué dans le tutorial. En bref, les clients s’attendent à trouver les fichiers dont ils ont besoin dans l’arborescence
/var/lib/tftpboot/, avec les détails de configuration dans
le fichier /var/lib/tftpboot/pxelinux.cfg/default ; le mien ressemble à cela :

L’antislash après append vga=normal dans la configuration de ubuntu_i386_install est pour indiquer une ligne de continuation, mais dans le fichier réel tout doit être sur la même ligne. Les chemins indiqués dans le fichier sont relatifs à la racine /var/lib/tftpboot/.

Il faut en outre modifier le fichier /var/lib/tftpboot/boot.txt, qui anonce le menu des options possibles :

Vérifier avec la commande tree que l’arborescence est bien conforme à ce qui donné dans le tutorial,

Difficulté éventuelle pour le boot avec TFTF et PXE

En réitérant cette opération avec un serveur de boot installé sur un système plus récent, j’ai buté sur un problème : la machine que j’essayais de faire booter par le réseau détectait correctement le serveur, obtenait bien du serveur DHCP une adresse IP convenable et les autres informations utiles (adresses des serveurs de noms...), mais au moment de charger le fichier d’amorçage par TFTP, l’opération échouait avec un timeout.

En consultant les journaux (/var/log/syslog) du serveur, on trouvait les messages suivants :

En fait, l’adresse fournie était IPv6.
J’ai mis un certain temps à trouver la correction, très simple dès qu’on la connaît : dans le fichier /etc/inetd.conf, remplacer udp par udp4 :

Pour finir !

Lancer l’installation, aller dîner, au dessert tout sera installé. L’essayer c’est l’adopter !