« Installer Debian par un boot réseau » : différence entre les versions
m (→Lancement) |
(Grosse MAJ avec mon expérience d'essais de PXE à l'Univ de Cergy-Pontoise(mais fonctionne toujours pas!)) |
||
Ligne 1 : | Ligne 1 : | ||
[[Category:Installer Linux]] | [[Category:Installer Linux]] | ||
= Installer Debian par un boot réseau = | = Installer Debian par un boot réseau grâce à PXE := | ||
<div class="leatitre">Installer Debian par un boot réseau</div><div class="leapar">Mat</div><div class="leadesc">Comment installer Debian sur un poste | <div class="leatitre">Installer Debian par un boot réseau</div><div class="leapar">Mat</div><div class="leadesc">Comment installer Debian sur un poste sans CD ni disquettes.</div> | ||
== Introduction == | == Introduction : == | ||
Ce document va décrire les étapes à suivre pour pouvoir lancer une installation de la distribution Debian sur un poste qui ne possède ni lecteur CD ni lecteur disquettes, mais une interface réseau et la prise en charge du boot réseau. Les ultraportables sont par exemple concernés ! | Ce document va décrire les étapes à suivre pour pouvoir lancer une installation de la distribution Debian sur un poste qui ne possède ni lecteur CD ni lecteur disquettes, mais une interface réseau et la prise en charge du boot réseau. Les ultraportables sont par exemple concernés ! | ||
Ligne 10 : | Ligne 10 : | ||
Je tiens à dire qu'il s'agit d'une méthode, je ne dis pas que c'est la seule ni la plus simple, mais elle a le mérite de fonctionner et d'être assez générique. Ainsi en appliquant les translations habituelles de commandes entre les différentes distributions, il doit aussi être possible d'appliquer ce petit didacticiel aux autres distributions. | Je tiens à dire qu'il s'agit d'une méthode, je ne dis pas que c'est la seule ni la plus simple, mais elle a le mérite de fonctionner et d'être assez générique. Ainsi en appliquant les translations habituelles de commandes entre les différentes distributions, il doit aussi être possible d'appliquer ce petit didacticiel aux autres distributions. | ||
D'autre part, cet article ne prend pas du tout en compte les problèmes de sécurité liés à chacun des serveurs à mettre en place. Nous partons du principe qu'il suffit de les lancer occasionnellement, dans la mesure où l'installation d'une distribution Linux ne se fait que très rarement | D'autre part, cet article ne prend pas du tout en compte les problèmes de sécurité liés à chacun des serveurs à mettre en place. Nous partons du principe qu'il suffit de les lancer occasionnellement, dans la mesure où l'installation d'une distribution Linux ne se fait que très rarement (puisqu'une seule installation suffit ;-) ) ! | ||
=== Fonctionnement général === | === Fonctionnement général : === | ||
Avant de me lancer dans des explications d'installation et de configuration, je vais expliquer en quelques mots comment fonctionne le boot réseau | Avant de me lancer dans des explications d'installation et de configuration, je vais expliquer en quelques mots comment fonctionne le boot réseau. | ||
Le boot réseau passe par PXE (pour Preboot eXecution Environment), un protocole propriétaire d'Intel. La carte réseau possède une ''PROM'' sur laquelle la machine va booter. Cette PROM contient les premières instructions qui vont permettre d'effectuer une requête DHCP (Dynamic Host Configuration Protocol) auprès du serveur afin d'obtenir une adresse IP sur le réseau et de charger ainsi le client PXE en RAM.<br /> Le client récupère ensuite le noyau linux par TFTP (Trivial FTP) et peut donc booter sur ce noyau. | Le boot réseau passe par PXE (pour Preboot eXecution Environment), un protocole propriétaire d'Intel. La carte réseau possède une ''PROM'' sur laquelle la machine va booter. Cette PROM contient les premières instructions qui vont permettre d'effectuer une requête DHCP (Dynamic Host Configuration Protocol) auprès du serveur afin d'obtenir une adresse IP sur le réseau et de charger ainsi le client PXE en RAM.<br /> Le client récupère ensuite le noyau linux par TFTP (Trivial FTP) et peut donc booter sur ce noyau. | ||
Ligne 26 : | Ligne 26 : | ||
C'est l'installation et la configuration de ceux-ci que nous allons voir dans le prochain chapitre. | C'est l'installation et la configuration de ceux-ci que nous allons voir dans le prochain chapitre. | ||
== Installation des serveurs == | == Installation des serveurs : == | ||
=== Serveur TFTP === | === Serveur TFTP : === | ||
Ce serveur est une version ultra simplifiée de FTP, qui ne nécessite aucune authentification. Il ne propose pas non plus l'affichage du contenu des répertoires. Donc, lorsqu'on veut récupérer un fichier, il faut | Ce serveur est une version ultra simplifiée de FTP, qui ne nécessite aucune authentification. Il ne propose pas non plus l'affichage du contenu des répertoires. Donc, lorsqu'on veut récupérer un fichier, il faut connaître son nom. | ||
Pour vérifier s'il est installé, tester la présence de <code>/etc/default/tftpd-hpa</code> ou <code>/etc/default/atftpd</code>. Sinon, pour l'installer, tapez simplement <code>apt-get install atftpd</code>.<br /> Son répertoire de base <code>tftpboot</code> est indiqué dans les fichiers de configuration ci-dessus. S'il n'existe pas, créez-le, et/ou modifiez les fichiers de configuration. | |||
Pour l'installer, tapez simplement <code>apt-get install atftpd</code>.<br /> | |||
Ce serveur ne nécessite pas de configuration supplémentaire pour l'usage que nous en aurons. | Ce serveur ne nécessite pas de configuration supplémentaire pour l'usage que nous en aurons. | ||
Ligne 42 : | Ligne 41 : | ||
Editez le fichier /etc/pxe.conf et adapter les valeurs réseau au votre, notamment quelle sera l'interface réseau sur lequel va se connecter le client, l'IP de celle-ci ainsi que le chemin de base <code>/tftpboot</code>. | Editez le fichier /etc/pxe.conf et adapter les valeurs réseau au votre, notamment quelle sera l'interface réseau sur lequel va se connecter le client, l'IP de celle-ci ainsi que le chemin de base <code>/tftpboot</code>. | ||
Il faut maintenant définir le fichier de configuration de PXE lui indiquant quel est le noyau linux sur lequel le poste client va booter.<br /> Mais comme vous êtes | Il faut maintenant définir le fichier de configuration de PXE lui indiquant quel est le noyau linux sur lequel le poste client va booter.<br /> Mais comme vous êtes l'heureux utilisateurs d'une Debian, ses développeurs ont pensé à vous (nous) et proposent sur certains miroirs des images et configurations toutes prêtes. Récupérez l'archive [http://ftp.fr.debian.org/debian/dists/testing/main/installer-i386/rc2/images/netboot/netboot.tar.gz netboot.tar.gz] et décompressez-la dans <code>/tftpboot</code>. | ||
Si vous n'êtes pas intéressés par le détail de cette configuration, et que seul le boot vous intéresse, vous pouvez passer directement à l'installation de DHCP. | Si vous n'êtes pas intéressés par le détail de cette configuration, et que seul le boot vous intéresse, vous pouvez passer directement à l'installation de DHCP. | ||
Ligne 52 : | Ligne 51 : | ||
<div class="code">display debian-installer/i386/boot-screens/syslinux.txt<br /> default linux<br /><br /> F1 debian-installer/i386/boot-screens/f1.txt<br /> F2 debian-installer/i386/boot-screens/f2.txt<br /><br /> label linux <blockquote> kernel debian-installer/i386/linux<br /> append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw -- </blockquote> label expert <blockquote> kernel debian-installer/i386/linux<br /> append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw-- </blockquote> prompt 1<br /> timeout 0</div> | <div class="code">display debian-installer/i386/boot-screens/syslinux.txt<br /> default linux<br /><br /> F1 debian-installer/i386/boot-screens/f1.txt<br /> F2 debian-installer/i386/boot-screens/f2.txt<br /><br /> label linux <blockquote> kernel debian-installer/i386/linux<br /> append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw -- </blockquote> label expert <blockquote> kernel debian-installer/i386/linux<br /> append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw-- </blockquote> prompt 1<br /> timeout 0</div> | ||
Je n'expliquerai pas davantage la configuration de ce serveur car je me suis rangé du côté de la facilité qui consiste à utiliser la config toute faite de Debian. Cependant, il existe moult sites où trouver les détails de ce fichier. | Je n'expliquerai pas davantage la configuration de ce serveur car je me suis rangé du côté de la facilité qui consiste à utiliser la config toute faite de Debian. Cependant, il existe [[#Liens_et_ressources_:|moult sites]] où trouver les détails de ce fichier. | ||
=== Serveur DHCP === | === Serveur DHCP : === | ||
Sous Debian il existe plusieurs versions de ce serveur. Si vous êtes à l'aise avec leur configuration respective, votre version conviendra, sinon en respectant bêtement les instructions suivantes, vous ne devriez pas avoir de difficulté. | Sous Debian il existe plusieurs versions de ce serveur. Si vous êtes à l'aise avec leur configuration respective, votre version conviendra, sinon en respectant bêtement les instructions suivantes, vous ne devriez pas avoir de difficulté. | ||
Ligne 66 : | Ligne 65 : | ||
<div class="code"> subnet 192.168.0.0 netmask 255.255.255.0 {<br /><blockquote> range 192.168.0.50 192.168.0.99;<br /> server-name "server";<br /> filename "/tftpboot/pxelinux.0";<br /> </blockquote> } </div> | <div class="code"> subnet 192.168.0.0 netmask 255.255.255.0 {<br /><blockquote> range 192.168.0.50 192.168.0.99;<br /> server-name "server";<br /> filename "/tftpboot/pxelinux.0";<br /> </blockquote> } </div> | ||
Si vous disposez de plusieurs interfaces réseau, vous pouvez préciser sur laquelle (ou lesquelles) vous voulez que DHCP réponde aux requêtes. Pour cela, il vous suffit d'éditer le fichier <code>/etc/default/dhcp</code>. | Si vous disposez de plusieurs interfaces réseau, vous pouvez préciser sur laquelle (ou lesquelles) vous voulez que DHCP réponde aux requêtes. Pour cela, il vous suffit d'éditer le fichier <code>/etc/default/dhcp</code>. Remplacer bien sûr <code>server</code> par le vôtre. | ||
== Lancement == | == Lancement : == | ||
Maintenant que tout est installé et configuré, il faut lancer les 3 serveurs : | Maintenant que tout est installé et configuré, il faut lancer les 3 serveurs : | ||
<div class="code"> /etc/init.d/atftpd start<br /> /etc/init.d/pxe start<br /> /etc/init.d/dhcp start<br /> </div> | <div class="code"> /etc/init.d/atftpd start<br /> /etc/init.d/pxe start<br /> /etc/init.d/dhcp start<br /> </div> | ||
Il est possible que le premier se lance via inetd, et dans ce cas il n'apparaîtra pas dans la liste des processus. | |||
Le deuxième ne devrait pas vous poser de problème. DHCP peut quant à lui vous afficher une ligne d'erreur. Pour savoir ce qui ne va pas, vous aurez probablement à inspecter syslog à coup de <code>cat /var/log/messages</code>. | |||
Dès qu'il n'y a plus d'erreur vous pouvez tester votre boot réseau. Branchez la machine cliente et assurez vous qu'elle est configurée pour booter sur le réseau en premier choix. Si tout va bien, vous devriez voir s'afficher au fur et à mesure de l'avancement du boot réseau, de multiples informations : l'adresse IP obtenue, le téléchargement par TFTP, etc... | |||
Dès qu'il n'y a plus d'erreur vous pouvez tester votre boot réseau. Branchez la machine cliente et assurez vous qu'elle est configurée pour booter sur le réseau en premier choix. Si tout va bien, vous devriez voir s'afficher au fur et à mesure de l'avancement du boot réseau, de multiples informations : l'adresse IP obtenue, le téléchargement par TFTP, etc ... | |||
Et en quelques secondes, l'écran Debian va s'afficher vous proposant alors d'installer la distribution. Pour tout le reste, tout redevient habituel, mais il faut tout de même considérer que votre machine serveur doit partager sa connexion web si vous voulez installer des paquets ([[Trucs:Partager_une_connection_internet|voir ici pour le partage de connexion]]). | Et en quelques secondes, l'écran Debian va s'afficher vous proposant alors d'installer la distribution. Pour tout le reste, tout redevient habituel, mais il faut tout de même considérer que votre machine serveur doit partager sa connexion web si vous voulez installer des paquets ([[Trucs:Partager_une_connection_internet|voir ici pour le partage de connexion]]). | ||
Ligne 95 : | Ligne 94 : | ||
<div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Mathieu Changeat le 03/12/2004.</div> | <div class="merci">Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Mathieu Changeat le 03/12/2004.</div> | ||
=== Liens et ressources : === | |||
*La revue GNU/Linux sur la récupération de vieux matériels contient un chapitre sur le sujet. | |||
*[http://www.debian.org/releases/etch/i386/ch04.html.fr La documentation Debian]. | |||
==== Protocole tftp : ==== | |||
*[http://lists.debian.org/debian-user-french/2002/04/msg00762.html Comment tester tftp]. | |||
*[http://209.85.129.104/search?q=cache:kjfEC59Rrj0J:www.linux-france.org/prj/inetdoc/articles/devmgmt/devmgmt.tftp.html+%22in.tftpd%22&hl=fr&ct=clnk&cd=1&lr=lang_fr&client=iceweasel-a Configuration de tftpd]. | |||
==== PXE : ==== | |||
*[http://209.85.129.104/search?q=cache:tyoh9EHK_vQJ:smhteam.info/wiki/%3Fwiki%3DInstallationReseau%26id%3D1812+pxe.conf&hl=fr&ct=clnk&cd=7&lr=lang_fr&client=iceweasel-a Installer Debian par le réseau]. | |||
*[http://209.85.129.104/search?q=cache:9MUyVsrwl6QJ:blogpmenier.dynalias.net/%3F2006/10/28/112-debian-boot-reseau-avec-pxe+pxe.conf&hl=fr&ct=clnk&cd=4&lr=lang_fr&client=iceweasel-a démarrer Debian en PXE]. | |||
*[http://www.sysresccd.org/Sysresccd-manual-fr_D%C3%A9marrage_en_r%C3%A9seau_par_PXE System Rescue CD en PXE]. | |||
*[http://209.85.129.104/search?q=cache:0X_FI1Ir4KkJ:old.cetril.org/IMG/pdf/Journal_des_erreurs_ltsp.pdf+PXE-E32+%22TFTP+open+timeout%22&hl=fr&ct=clnk&cd=1&lr=lang_fr&client=iceweasel-a Liste des erreurs courantes de PXE]. | |||
= Copyright = | = Copyright = | ||
Copyright © 03/12/2004, Mathieu Changeat | Copyright © 03/12/2004, Mathieu Changeat | ||
{{CC-BY-NC-SA}} | {{CC-BY-NC-SA}} |
Version du 14 novembre 2007 à 17:09
Installer Debian par un boot réseau grâce à PXE :
Introduction :
Ce document va décrire les étapes à suivre pour pouvoir lancer une installation de la distribution Debian sur un poste qui ne possède ni lecteur CD ni lecteur disquettes, mais une interface réseau et la prise en charge du boot réseau. Les ultraportables sont par exemple concernés !
Je tiens à dire qu'il s'agit d'une méthode, je ne dis pas que c'est la seule ni la plus simple, mais elle a le mérite de fonctionner et d'être assez générique. Ainsi en appliquant les translations habituelles de commandes entre les différentes distributions, il doit aussi être possible d'appliquer ce petit didacticiel aux autres distributions.
D'autre part, cet article ne prend pas du tout en compte les problèmes de sécurité liés à chacun des serveurs à mettre en place. Nous partons du principe qu'il suffit de les lancer occasionnellement, dans la mesure où l'installation d'une distribution Linux ne se fait que très rarement (puisqu'une seule installation suffit ;-) ) !
Fonctionnement général :
Avant de me lancer dans des explications d'installation et de configuration, je vais expliquer en quelques mots comment fonctionne le boot réseau.
Le boot réseau passe par PXE (pour Preboot eXecution Environment), un protocole propriétaire d'Intel. La carte réseau possède une PROM sur laquelle la machine va booter. Cette PROM contient les premières instructions qui vont permettre d'effectuer une requête DHCP (Dynamic Host Configuration Protocol) auprès du serveur afin d'obtenir une adresse IP sur le réseau et de charger ainsi le client PXE en RAM.
Le client récupère ensuite le noyau linux par TFTP (Trivial FTP) et peut donc booter sur ce noyau.
A la lecture de ce paragraphe succint, on s'aperçoit qu'il faut utiliser pas moins de 3 serveurs :
- TFTPD
- PXE
- DHCPD
C'est l'installation et la configuration de ceux-ci que nous allons voir dans le prochain chapitre.
Installation des serveurs :
Serveur TFTP :
Ce serveur est une version ultra simplifiée de FTP, qui ne nécessite aucune authentification. Il ne propose pas non plus l'affichage du contenu des répertoires. Donc, lorsqu'on veut récupérer un fichier, il faut connaître son nom.
Pour vérifier s'il est installé, tester la présence de /etc/default/tftpd-hpa
ou /etc/default/atftpd
. Sinon, pour l'installer, tapez simplement apt-get install atftpd
.
Son répertoire de base tftpboot
est indiqué dans les fichiers de configuration ci-dessus. S'il n'existe pas, créez-le, et/ou modifiez les fichiers de configuration.
Ce serveur ne nécessite pas de configuration supplémentaire pour l'usage que nous en aurons.
Serveur PXE
Commencez par l'installer : apt-get install pxe syslinux
.
Copiez ensuite le fichier /usr/lib/syslinux/pxelinux.0
dans /tftpboot
.
Editez le fichier /etc/pxe.conf et adapter les valeurs réseau au votre, notamment quelle sera l'interface réseau sur lequel va se connecter le client, l'IP de celle-ci ainsi que le chemin de base /tftpboot
.
Il faut maintenant définir le fichier de configuration de PXE lui indiquant quel est le noyau linux sur lequel le poste client va booter.
Mais comme vous êtes l'heureux utilisateurs d'une Debian, ses développeurs ont pensé à vous (nous) et proposent sur certains miroirs des images et configurations toutes prêtes. Récupérez l'archive netboot.tar.gz et décompressez-la dans /tftpboot
.
Si vous n'êtes pas intéressés par le détail de cette configuration, et que seul le boot vous intéresse, vous pouvez passer directement à l'installation de DHCP.
Comme nous l'expliquions en introduction, PXE dans sa configuration précise quel noyau linux vous allez utiliser pour booter sur le poste client. Le fichier de configuration ressemble étrangement à celui de lilo. Il doit se situer dans /tftpboot/pxelinux.cfg
et s'appeler default
.
Voici un exemple de son contenu :
default linux
F1 debian-installer/i386/boot-screens/f1.txt
F2 debian-installer/i386/boot-screens/f2.txt
label linux
label expertkernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw --
prompt 1kernel debian-installer/i386/linux
append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9372 root=/dev/rd/0 devfs=mount,dall rw--
timeout 0
Je n'expliquerai pas davantage la configuration de ce serveur car je me suis rangé du côté de la facilité qui consiste à utiliser la config toute faite de Debian. Cependant, il existe moult sites où trouver les détails de ce fichier.
Serveur DHCP :
Sous Debian il existe plusieurs versions de ce serveur. Si vous êtes à l'aise avec leur configuration respective, votre version conviendra, sinon en respectant bêtement les instructions suivantes, vous ne devriez pas avoir de difficulté.
Commencez par installer le serveur : apt-get install dhcp
Le fichier de configuration de DHCP permet d'envisager une multitude de cas d'architectures réseaux. Nous allons considérer la plus simple. Le serveur est dans le réseau 192.168.0.0 avec le masque 255.255.255.0 .
Voici un bloc à rajouter dans /etc/dhcpd.conf
afin que la machine cliente obtienne une adresse IP entre 192.168.0.50 et 192.168.0.99. Ces valeurs sont bien sur arbitraires, vous pouvez choisir vous même la plage.
}range 192.168.0.50 192.168.0.99;
server-name "server";
filename "/tftpboot/pxelinux.0";
Si vous disposez de plusieurs interfaces réseau, vous pouvez préciser sur laquelle (ou lesquelles) vous voulez que DHCP réponde aux requêtes. Pour cela, il vous suffit d'éditer le fichier /etc/default/dhcp
. Remplacer bien sûr server
par le vôtre.
Lancement :
Maintenant que tout est installé et configuré, il faut lancer les 3 serveurs :
/etc/init.d/pxe start
/etc/init.d/dhcp start
Il est possible que le premier se lance via inetd, et dans ce cas il n'apparaîtra pas dans la liste des processus.
Le deuxième ne devrait pas vous poser de problème. DHCP peut quant à lui vous afficher une ligne d'erreur. Pour savoir ce qui ne va pas, vous aurez probablement à inspecter syslog à coup de cat /var/log/messages
.
Dès qu'il n'y a plus d'erreur vous pouvez tester votre boot réseau. Branchez la machine cliente et assurez vous qu'elle est configurée pour booter sur le réseau en premier choix. Si tout va bien, vous devriez voir s'afficher au fur et à mesure de l'avancement du boot réseau, de multiples informations : l'adresse IP obtenue, le téléchargement par TFTP, etc...
Et en quelques secondes, l'écran Debian va s'afficher vous proposant alors d'installer la distribution. Pour tout le reste, tout redevient habituel, mais il faut tout de même considérer que votre machine serveur doit partager sa connexion web si vous voulez installer des paquets (voir ici pour le partage de connexion).
Si le boot réseau est très long et que vous observez des timeout, cela peut venir soit d'une mauvaise configuration, soit de votre firewall qui bloque les ports des différents serveurs. Pour information, voici les numéros de ports qu'utilisent ces derniers:
- PXE : 4011
- DHCPD : 67
- TFTPD : 69
Pour chacun d'entre eux, vous pouvez modifier le numéro de port associé dans les fichiers de configurations respectifs. Mais gardez en tête que la machine client utilisera très certainement les valeurs par défaut.
Aller plus loin
Ce didacticiel montre seulement un petit morceau de ce que permettent les boots réseaux. En effet, il est également possible en maniant NFS (un autre serveur !) de faire démarrer un poste client sous linux sans avoir besoin de l'y installer. La procédure est la même pour les premiers serveurs, mais il faut utiliser un autre noyau que celui fourni par Debian. Ce dernier doit notamment supporter NFS.
Ceci pourrait faire l'objet d'un autre didacticiel, si toutefois certains d'entre vous sont intéressés.
Liens et ressources :
- La revue GNU/Linux sur la récupération de vieux matériels contient un chapitre sur le sujet.
- La documentation Debian.
Protocole tftp :
PXE :
- Installer Debian par le réseau.
- démarrer Debian en PXE.
- System Rescue CD en PXE.
- Liste des erreurs courantes de PXE.
Copyright
Copyright © 03/12/2004, Mathieu Changeat
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |