Distribution : Debian
Niveau : Débutant
Commentaire :
Lorsqu'un poste n'a aucun lecteur (disquette, cd, dvd, etc), il est intéressant de pouvoir lancer une installation en bootant grâce à un autre ordinateur du réseau.
Cet article a été écrit pour permettre une installation de Debian Etch sur un portable donc le lecteur CD est endommagé.
Pour booter grâce à un réseau, il faut utiliser le protocole PXE (Preboot eXecution Environment). Toutes les cartes réseaux ne permettent pas ceci, mais la majorité des cartes actuelles le permettent.
La carte réseau contient une PROM qui va permettre à la machine de booter. Cette PROM va rechercher sur le réseau un ordinateur qui peut lui fournir une adresse IP, et ensuite un noyau. Ce noyau va être récupéré via le protocole TFTP.
Il va donc falloir un client et un serveur :
Il existe plusieurs serveurs TFTP. Nous allons ici utiliser tftpd-hpa.
Installez le serveur tftpd-hpa :
# apt-get install tftpd-hpa
La configuration par défaut, lance le service tftpd via le super-server inetd. Les différents fichiers de configuration sont :
Pour inetd, vous devriez trouver une ligne similaire à celle ci :
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
Le service sera chrooté dans le répertoire /var/lib/tftpboot et lancé par l'utilisateur nobody. Le chroot est ici très important car le protocole tftp ne requiers pas d'authentification de la part du client. En d'autres termes, un client malintentionné pourrait par exemple récupérer un fichier important sur le système hors du répertoire de travail. L'utilisation de inetd est ici préférée pour limiter les ressources allouées à tftpd, car peu utilisé.
Il est possible de redémarrer le serveur inetd :
/etc/init.d/openbsd-inetd restart
Installez le serveur pxe :
# apt-get install pxe
Editez le fichier /etc/pxe.conf
Véfifier que l'interface réseau indiquée dans la ligne suivante correspond à l'interface réseau du réseau local :
interface=eth0
Vérifiez aussi que l'adresse réseau correspond à l'adresse du serveur (192.168.0.1 dans notre cas) :
default_address=192.168.0.1
Vérifiez aussi que le dossier utilisé par tftpd-hpa est bien renseigné :
tftpdbase=/var/lib/tftpboot
Redémarrez le service PXE :
# /etc/init.d/pxe reload
Récupérez l'image de Debian à l'une des adresses suivantes (en fonction de votre version de Debian) et mettez là dans le dossier /var/lib/tftpboot :
Décompressez la :
# cd /var/lib/tftpboot # tar -xvzf netboot.tar.gz # rm netboot.tar.gz
Cette image va permettre au client de démarre l'installation réseau de votre système Debian.
Afin de pouvoir installer un serveur DHCP, nous allons configurer l'interface réseau connectée au réseau local de la manière suivante :
Fichier /etc/network/interfaces :
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
Afin que les changements soient pris en compte, redémarrez le réseau :
# /etc/init.d/networking restart
Nous allons ici voir la configuration de DHCP pour notre cas. Vous trouverez plus d'informations sur le protocole DHCP dans l'article concerné.
Installez le service :
# apt-get install dhcpd3-server
Editez le fichier /etc/default/dhcp3-server et complétez la ligne suivante pour indiquer l'interface réseau sur laquelle le serveur peut attribuer des adresses IP (eth0 dans notre cas) :
INTERFACES="eth0"
Editez ensuite le fichier /etc/dhcp3/dhcpd.conf et ajouter les lignes suivantes. Si vous n'avez jamais utilisé le serveur DHCP précédemment, vous pouvez vider le fichier avant de rajouter les lignes.
# option definitions common to all supported networks...
option domain-name "example.com";
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;
default-lease-time 900;
max-lease-time 7200;
### Permet le boot reseau pour tftp
allow booting;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.19;
filename "pxelinux.0";
option root-path "/var/lib/tftpboot";
next-server 192.168.0.1;
}
Ces lignes vont permettre d'attribuer des adresses IP entre 192.168.0.10 et 192.168.0.19 (on peut donc avoir 10 machines au maximum dans ce cas-ci).
Redémarrons le service DHCP :
# /etc/init.d/dhcp3-server restart
Tout d'abord, vérifiez si votre carte réseau supporte le protocole PXE.
Configurez votre BIOS de façon à ce que votre client boote via le réseau. Pour certains ordinateurs, le boot réseau est optionnel via l'appui sur une touche F12 au démarrage (un message indiquant cette possibilité est alors affiché).
Si le BIOS ne permet pas le boot sur la carte réseau, il est possible de booter grâce à une disquette. Pour celà, il est possible de récupérer des images sur le site http://rom-o-matic.net.
Récupérez l'image qui correspond à votre carte réseau sur le site, puis mettez la sur la disquette :
$ cat nomDeLImage.zdsk > /dev/fd0
Il ne vous reste qu'à rebooter l'ordinateur, en ayant pris soin de configurer le BIOS pour qu'il démarra sur le lecteur disquette.
Maintenant démarrez votre poste client, et si tout est bien configuré, vous allez voir le joli écran de l'installateur Debian.
Le point important à prendre en compte pour la mise en place des règles Firewall est que le protocole TFTP utilise le port 69 en udp (RFC 1350). De plus, pour le suivi de connexion, il ne faut pas oublier l'helper nf_conntrack_tftp (Le nom peut changer en fonction de la version du noyau utilisé). Je considère ici que votre firewall gère déjà le DHCP.