Une fois que nous avons connaissance des informations nécessaires, il faut entrer dans le vif du sujet. Le début de la manipulation va se faire sur le serveur, puisqu'il faut le configurer de telle manière qu'il fournisse un fichier de démarrage à la station. Ensuite, on passera sur la station pour lancer le boot via le réseau, puis on procèdera à l'installation proprement dite, et enfin on remettra le serveur en état, c'est à dire que l'on défera la configuration que nous lui aurons faite afin de ne pas laisser une porte ouverte à d'éventuels intrus.
Plusieurs paramétrages sont nécessaires sur le serveur, mais pour les effectuer il est obligatoire d'être connecté en tant qu'administrateur, c'est à dire en tant qu'utilisateur root.
Comme serveur fonctionne et est déjà connecté au réseau, il est très simple d'obtenir son adresse IP, il suffit de lancer la commande ifconfig. Ci-dessous vous pouvez voir un extrait de ce qu'affiche la commande ifconfig, seule nous intéresse la première interface Ethernet, c'est à dire eth0:
$ /sbin/ifconfig
eth0 Link encap:10Mbps Ethernet HWaddr 08:00:20:1F:DE:FA
inet addr:192.168.52.12 Bcast:192.168.52.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:446376 errors:5 dropped:0 overruns:0
TX packets:289573 errors:1 dropped:0 overruns:0
Interrupt:38 Base address:0x66c
Son adresse IP est donc 192.168.52.12.
Afin que serveur puisse associer l'adresse IP de la station à son nom, il faut lui indiquer cette correspondance. Pour cela il faut ajouter une ligne au fichier /etc/hosts. Ce fichier contient au moins une ligne décrivant la correspondance entre localhost et l'adresse IP de loopback 127.0.0.1 mais si vous n'avez pas de serveur DNS il contient probablement d'autres lignes pour tous les ordinateurs que doit connaître serveur. Il comporte au minimum deux colonnes, la première est celle des adresses IP et la seconde celle des noms de machines. Les colonnes suivantes sont des colonnes d'alias, c'est à dire des colonnes contenant des synonymes éventuels pour les noms d'hôtes. La ligne que nous allons ajouter contiendra l'adresse IP de la station soit 192.168.52.15 ainsi que son nom, soit morgoth. Après modification du fichier /etc/hosts nous devons avoir quelque chose qui ressemble à ça:
#extrait de /etc/hosts
127.0.0.1 localhost localhost.localdomain
192.168.52.15 morgoth morgoth.youpi.fr
tftpd est un daemon unix permettant de faire des transferts de fichiers, un peu comme ftpd pour le protocole FTP qui signifie File Transfer Protocol. D'ailleurs TFTP signifie Trivial File Transfer Protocol. Il sert surtout à fournir des fichiers de démarrage à certains postes du réseau, et c'est pour cela que nous allons l'utiliser. Par défaut ce daemon est interdit car il pourrait mettre en danger la sécurité du système. Ce daemon est généralement lancé automatiquement par le super serveur internet inetd lorsqu'un poste client fait une requête TFTP, aussi il faut modifier le fichier de paramétrage de inetd pour autoriser ou interdire le lancement de tftpd. Pour autoriser son lancement il suffit d'enlever la marque de commentaire '#' en tête de la ligne tftp dans le fichier /etc/inetd.conf, puis de sauvegarder le fichier modifié et ensuite de réinitialiser le daemon inetd. Voici un extrait du fichier /etc/inetd.conf tel qu'il devra être:
# extrait de /etc/inetd.conf
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers." Do not uncomment
# this unless you *need* it.
#
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /tmp
Cette ligne est découpée en plusieurs champs dont voici la signification:
Ce champ représente le nom du service tel que défini dans le fichier /etc/services. En cas de connexion d'un client sur ce service, le super serveur internet inetd va lancer le daemon correspondant en fonction des champs suivants.
Ces deux champs indiquent que la socket utilisée sera du type datagram et que le protocole sera udp. On ne peut pas mettre n'importe quelles valeurs dans ces champs, il faut mettre ce pour quoi le daemon a été écrit.
Ce champ positionné à wait indique que le daemon n'accepte qu'une seule requête à la fois, on peut également mettre nowait si le daemon en accepte plusieurs. Ce champ indique en fait à inetd respectivement qu'il doit attendre la fin de l'exécution du daemon avant de répondre à une nouvelle requête, ou bien qu'il peut relancer directement un nouveau daemon en cas de nouvelle requête.
Ce champ indique l'identifiant de l'utilisateur qui sera utilisé pour lancer le daemon. Ici c'est tout simplement root. Selon le daemon considéré et la sécurité que l'on veut appliquer on peut éventuellement mettre le nom d'un utilisateur sans aucun privilège, toutefois le nom doit apparaître dans le fichier /etc/passwd.
Ici, la commande à exécuter n'est pas directement le daemon tftpd mais pour des raisons de sécurité c'est un autre programme qui va contrôler que le client de la requête est bien autorisé à la faire, et qui va inscrire dans les fichiers de contrôle du système diverses informations concernant la connexion, ce programme lancera ensuite l'exécution du daemon tftpd soit in.tftpd. Le programme tcpd est ce que l'on appelle un tcp wrapper.
Les arguments sont donc ici les arguments de tcpd, c'est à dire le nom du daemon à lancer (in.tftpd) et ses propres arguments. tftpd accepte en argument le nom du répertoire dans lequel seront les fichiers à fournir aux clients, ici j'ai décidé de placer ces fichiers dans /tmp mais vous pouvez tout à fait indiquer un autre répertoire.
Pour réinitialiser le super serveur internet inetd il suffit de lui envoyer le signal SIGHUP. Cela va le forcer à relire son fichier de configuration. Voici la commande à taper:
$ /usr/bin/killall -HUP inetd
NFS ou Network File System de Sun est un protocole permettant de partager des répertoires sur un réseau. Ce protocole est surtout utilisé sur les machines de type unix. En général les daemons pour NFS sont actifs par défaut. S'ils ne le sont pas c'est que vous les avez désactivés et donc que vous savez les réactiver. Il nous faut partager le répertoire dans lequel nous allons placer le fichier de démarrage mais on ne le partagera que pour notre station. Pour ce faire il faut ajouter une ligne dans le fichier /etc/exports, voici cette ligne:
/tmp morgoth(rw)
La première colonne est le nom du répertoire, la seconde est le nom éventuel des stations autorisées à monter ce répertoire via le réseau et les options de montages autorisées, ici Lecture et Ecriture (Read et Write, ou rw).
Le fichier que nous devons recupérer s'appelle tftpboot.img. Il contient en fait un noyau Linux et un systeme de fichiers minimal lui permettant de démarrer et de lancer le programme d'installation. Vous pouvez récupérer ce fichier sur votre CDROM ou alors sur un site ftp, par exemple depuis ftp://ftp.lip6.fr/pub/linux/distributions/redhat/redhat-4.2/sparc/images/tftpboot.img
Nous allons placer ce fichier dans le répertoire que nous exportons, soit /tmp, mais il faut le renommer de manière à ce que notre station puisse le télécharger. Le nom du fichier doit être formé de l'adresse IP de la station convertie octet par octet en hexadécimal, suivie d'un point, suivi du type de la station. Si quelqu'un connait la raison de ceci il peut me la donner afin que je l'inclue dans une prochaine version de ce document.
Rappel: l'adresse IP est 192.168.52.15 et le type est SUN4C
En convertissant chacun des 4 octets de l'adresse IP en hexadécimal, nous obtenons:
Nous devons donc placer le fichier tftpboot.img dans /tmp puis le renommer sous le nom:
C0A8340F.SUN4C Nouveau nom du fichier de boot
ARP ou Address Resolution Protocol est le protocole utilisé par une machine lorsqu'elle connait l'adresse IP d'une autre et qu'elle désire connaître l'adresse Ethernet correspondante. En effet, les machines ne peuvent dialoguer directement grâce à leurs adresses IP, elles sont obligées d'utiliser leurs adresses Ethernet.
Le principe de fonctionnement est le suivant:
Pour d'évidentes raisons de performances, les adresses Ethernet renvoyées sont conservées un certain temps en mémoire par le poste qui a émis la demande, ce qui évite une surcharge de messages broadcast (un message broadcast est un message émis vers tous les postes du réseau).
Comme la station morgoth ne sait pas répondre à ce type de requête puisque le protocole ARP n'est pas supporté dans son BIOS, il nous faut placer la correspondance entre l'adresse IP et l'adresse Ethernet de morgoth dans la mémoire de serveur.
Pour ce faire il faut taper les commandes suivantes:
Mise en mémoire de la correspondance Adresse IP / Adresse Ethernet:
$ /sbin/arp -s 192.168.52.15 08:00:20:AB:CD:EF
On vérifie que la commande a bien été prise en compte:
$ /sbin/arp -a
Address HWtype HWaddress Flags Mask Iface
morgoth.youpi.fr ether 08:00:20:AB:CD:EF CM * eth0
gateway.youpi.fr ether 00:DD:EF:04:52:80 C * eth0
Ici on voit que l'adresse de la passerelle est déjà stockée en mémoire, ce qui est normal car elle est très souvent utilisée puisque tous nos transferts vers Internet passent par elle. Si vous n'avez pas de passerelle la seconde ligne est absente. Selon la taille de votre réseau et ce que vous faites il y a peut-être d'autres lignes affichées.
D'après François ROMIEU la manipulation précédente ne serait pas nécessaire du fait qu'arp gère ses tables de manière dynamique. J'avoue ne pas avoir fait le test sans cette manipulation. En tout état de cause elle est décrite dans la FAQ SparcLinux http://www.geog.ubc.ca/s_linux/faq.html, et pour cette raison elle est décrite ici.
RARP ou Reverse Address Resolution Protocol est le protocole exactement inverse, il n'est pratiquement jamais utilisé, sauf dans le cas présent. En effet, on est bien en présence d'un poste qui connait son adresse Ethernet mais ne connait pas son adresse IP. On va donc configurer serveur afin qu'il puisse lui répondre.
Dans le cas de Linux, vous devez vous assurer que le support pour le protocole RARP est bien intégré dans le noyau du serveur, soit d'origine, soit sous forme de module chargeable.
Mise en mémoire de la correspondance Adresse Ethernet / Adresse IP:
$ rarp -s morgoth 08:00:20:AB:CD:EF
On vérifie que la commande a bien été prise en compte:
$ /sbin/rarp -a
IP address HW type HW address
192.168.52.15 10Mbps Ethernet 08:00:20:AB:CD:EF
La configuration du serveur est maintenant terminée, nous allons passer sur la station pour achever l'installation, puis nous reviendrons sur ce poste pour le reconfigurer et le remettre dans l'état où il était avant notre intervention.