Si votre machine est connectée à un réseau local, vous pouvez l'amorcer directement à partir d'une autre machine de ce réseau en utilisant TFTP. Pour cela, les fichiers d'amorçage doivent être placés à un endroit spécifique de cette machine et elle doit savoir amorcer votre propre machine.
Vous devez configurer un serveur TFTP et, pour beaucoup de machines, un serveur BOOTP ou un serveur DHCP.
BOOTP est un protocole IP qui indique à un ordinateur quelle est son adresse IP et lui dit où obtenir sur le réseau une image d'amorçage. Le protocole DHCP (« Dynamic Host Configuration Protocole », Protocole de configuration dynamique des hôtes) est une extension bien plus flexible de BOOTP (et respectant la compatibilité ascendante). Certains systèmes ne peuvent être configurés que par DHCP.
Le protocole trivial de transfert des fichiers (« Trivial Transfert File Protocol » ou TFTP) est utilisé pour transférer l'image d'amorçage au client. Théoriquement, tout serveur sur les plateformes qui implémentent ces protocoles peut être utilisé. Dans les exemples qui vont suivre, on donnera les commandes pour SunOS 4.x, SunOS 5.x (mieux connu sous le nom de Solaris) et GNU/Linux.
Il existe deux serveurs BOOTP pour GNU/Linux, bootpd CMU
et dhcpd ISC ; le second est en fait un serveur DHCP que
l'on peut trouver dans les paquets bootp
et
dhcp
dans Debian GNU/Linux.
Pour utiliser bootpd CMU, vous devez commencer par
décommenter (ou ajouter) la ligne adéquate dans
/etc/inetd.conf
. Dans Debian GNU/Linux, vous pouvez tout
simplement lancer update-inetd --enable bootps
suivi
de /etc/init.d/inetd reload
pour le faire. Sinon, la
ligne en question devrait ressembler à :
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120
Maintenant, vous devez créer le fichier /etc/bootptab
.
C'est le même genre de format familier et cryptique que ceux des bons vieux
fichiers BSD printcap
, termcap
, et
disktab
. Voyez la page de manuel de
bootptab
pour d'autres informations.
Pour bootpd CMU, il sera nécessaire d'obtenir l'adresse
matérielle (MAC) du client. Voici un exemple du fichier
/etc/bootptab
:
client:\ hd=/tftpboot:\ bf=tftpboot.img:\ ip=192.168.1.90:\ sm=255.255.255.0:\ sa=192.168.1.1:\ ha=0123456789AB:
Vous devrez changer au moins l'option « ha » qui spécifie l'adresse matérielle du client. L'option « bf » spécifie le fichier que le client devra récupérer par TFTP ; cf. Section 4.3.4, « Mettre les images TFTP en place » pour plus de précisions.
En comparaison, configurer BOOTP avec dhcpd ISC est très
facile parce qu'il traite les clients BOOTP comme des clients DHCP légèrement
spéciaux. Certaines architectures requièrent une configuration complexe pour
amorcer les clients par BOOTP. Si la vôtre en fait partie, lisez la
Section 4.3.2, « Configurer un serveur DHCP ». Sinon, vous pouvez simplement ajouter la directive
allow bootp
au bloc de configuration pour le
sous-réseau contenant le client, puis redémarrer dhcpd
avec /etc/init.d/dhcpd restart
.
Il existe un seul serveur DHCP libre, dhcpd ISC. Dans
Debian GNU/Linux, il est disponible dans le paquet dhcp
.
Voici un exemple de fichier de configuration (habituellement
/etc/dhcpd.conf
) :
option domain-name "example.com"; option domain-name-servers ns1.example.com; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; server-name "servername"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option routers 192.168.1.1; } host clientname { filename "/tftpboot/tftpboot.img"; server-name "servername"; next-server servername; hardware ethernet 01:23:45:67:89:AB; fixed-address 192.168.1.90; }
Note : dans le nouveau paquet dhcp3
, ce fichier
s'appelle /etc/dhcp3/dhcpd.conf
.
Dans cet exemple, il y a un serveur servername
qui joue le rôle de serveur DHCP, serveur TFTP et passerelle réseau. Vous
devrez certainement changer les options de domain-name
ainsi que le nom du serveur et les adresses matérielles du client. L'option
filename
devrait être le nom du fichier extrait
par TFTP.
Après avoir modifié le fichier de configuration de dhcpd,
relancez dhcpd par
/etc/init.d/dhcpd restart
.
Pour faire fonctionner le serveur TFTP, vous devez vous assurer au préalable
que tftpd est activé. Ce dernier est généralement activé
grâce à la ligne suivante dans /etc/inetd.conf
:
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd /tftpboot
Les paquets Debian, quand ils sont installés, placent correctement cette ligne.
Lisez ce fichier et mémorisez le répertoire passé en argument à
in.tftpd ; vous en aurez besoin ultérieurement.
L'option -l
autorise certaines versions de
in.tftpd à enregistrer toutes les requêtes dans le journal
du système ; c'est extrêmement pratique en cas d'erreur d'amorçage. Si
vous avez dû modifier /etc/inetd.conf
, vous devrez le
signaler au processus inetd. Sur une machine Debian,
lancez /etc/init.d/inetd reload
; sur les autres
machines, retrouvez le numéro de processus de inetd et
tuez-le avec la commande
kill -HUP
.
inetd-pid
Ensuite, placez les images TFTP dont vous avez besoin (décrites dans la
Section 4.2.1, « Où trouver les fichiers d'installation ? ») dans le répertoire des images d'amorce
de tftpd. Généralement, ce répertoire s'appelle
/tftpboot
. Vous aurez à faire un lien depuis ce fichier
vers le fichier que tftpd utilisera pour amorcer le client.
Malheureusement, le nom du fichier est déterminé par le client
TFTP et il n'y a pas vraiment de standard.
Pour les DECstation, il y a des fichiers tftpimage pour chaque
sous-architecture ; ils contiennent à la fois un noyau et un
installateur en un seul fichier. La convention
de nommage est subarchitecture
/netboot-boot.img.
Copiez l'image tftp que vous allez utiliser dans
/tftpboot/tftpboot.img
si vous travaillez avec
l'exemple de configuration de BOOTP/DHCP décrit plus haut.
Le microprogramme des DECstation autorise l'amorçage via TFTP par
la commande boot
où #
/tftp#
est le numéro de périphérique
« TurboChannel » sur lequel amorcer. Sur la plupart des DECstation,
c'est le numéro « 3 ». Si le serveur BOOTP/DHCP ne fournit pas le
nom du fichier ou bien que vous ayez besoin de passer des paramètres
supplémentaires, cela peut se faire avec la syntaxe suivante :
boot #/tftp/filename param1=value1 param2=value2 ...
Plusieurs révisions des microprogrammes des DECstation ont un problème avec
l'amorçage sur le réseau : le transfert débute mais après un certain
temps, il s'arrête avec a.out err
.
Il peut y avoir plusieurs causes :
Le microprogramme ne répond pas à une requête ARP durant un transfert TFTP.
Cela conduit à une suspension ARP et le transfert s'arrête. La solution est
d'ajouter l'adresse MAC de la carte Ethernet dans la table
ARP du serveur TFTP. On peut le faire avec
arp -s
en tant que root sur la
machine serveur TFTP. On peut lire l'adresse MAC de la DECstation en entrant
cnfg à l'invite du microprogramme de la DECstation.
IP-address
MAC-address
Le microprogramme impose une taille limite aux fichiers utilisés pour amorcer par TFTP.
Il y aussi des révisions de microprogramme qui ne peuvent pas s'amorcer du tout par TFTP, voyez les pages web de NetBSD.