Frederic Mantegazza wrote:
>Nous essayons de faire booter une machine (un linux embarque) en tftp, mais ça
>ne marche pas.
>
>Sur la machine embarquée, on a bien configuré son adresse IP, l'adresse IP du
>serveur, le masque (ff ff ff 0) et le gw (a 0, puisqu'on est sur le même
>réseau, et on travaille en local pour ne foutre le bazarre tant qu'on ne
>maîtrise pas !!!).
>
>Sur le serveur (debian testing), tftp semble bien configuré (le paquet tftpd
>est installé, et /etc/inetd.conf a bien la ligne correspondante).
>
>Lorsque le linux embarqué boot, il demande le fichier image et rien ne se
>passe; on a des <sleep> à intervalle régulier.
>
>Un coup de tcpdump ne montre qu'une seule chose provenant de cette machine:
>c'est une requête ARP en broadcast demandant qui a l'adresse du serveur ?!!!?
>Mais pas trace d'une quelconque requête tftp...
>
>Une idée ? Comment être *sûr* que le serveur est bien configuré ? Et le
>client, que doit-il connaître pour fonctionner en plus de ce que j'ai donné
>plus haut ?
>
>Merci de votre aide.
>
>
>
PXE ?
http://sari.inpg.fr/rubriques/themes/zone_publique.groupe_linux/diskless/serveur-diskless.html#toc7
*Installation et configuration du "bootloader" : pxelinux*
Le programme de boot (bootloader) est celui qui chargera en fait le
noyau linux en mémoire. Pour PXE, il faut un bootloader "intelligent"
capable de charger un noyau et des images initrd, de les décompresser...
Après la création de [/diskless]/tftpboot dans lequel on a construit les
systèmes nécessaires aux diskless clients de ce serveur, il faut créer
un répertoire pxelinux.cfg :
*
cd /tftpboot
mkdir pxelinux.cfg
*
pxelinux se trouve dans l'outil syslinux (la version utilisée est la 1.72).
Installer syslinux-1.72.tar.gz sous /usr/local, depuis :
http://www.kernel.org/pub/linux/utils/boot/
* cp /usr/local/syslinux-1.72/pxelinux.0 /tftpboot*
ls -l /diskless/tftpboot/pxelinux.0
-rw-r--r-- 1 root root 9884 fev 10 16:38 /diskless/tftpboot/pxelinux.0
Dans le répertoire /tftpboot/pxelinux.cfg, sera édité un fichier par PC
diskless. Chaque fichier a pour nom le numéro hexadécimal de l'adresse
IP du PC. Ex. C3DC4F0C (C3 pour 195,DC pour 220, 4F pour 79 et 0C pour 12).
Ex. de fichier "bootloader"
#gagXXX
DEFAULT bzImage-diskless-pxe1
APPEND root=/dev/nfs hdg=ide-scsi devfs=mount ip=::::::dhcp nfsroot=n0-IP-serveur-nfs:/diskless/tftpboot/195.220.79.XXX
PROMPT 1
TIMEOUT 50
La première ligne donne le nom du noyau linux (bzImage...) qui doit être
placé sous /tftpboot. La seconde ligne donne les options du noyau.
(Pour les PC avec graveur de CD, hdg=ide-scsi ==> le noyau ne
reconnaîtra plus le graveur en tant que périphérique IDE (et donc plus
en tant que /dev/hdg mais en tant que /dev/scd0).
Le noyau a été crée spécifiquement pour le diskless à partir du fichier
de configuration qui a servi à créer le noyau du serveur.
(Pour visualiser le contenu d'une image :
mv initrd.img initrd.img.gz
gunzip initrd.img.gz
mount /tmp/initrd.img /mnt -t ext2 -o loop
ls /mnt
...
)