- sdcard + bootcode.ini
- DHCP/BOOTP
- TFTP
- NFSv2 (voir ce post)
- Brancher
Prérequis : Vous devez avoir un serveur DHCP configurable sur votre réseau.
Attention : Le serveur DHCP intégré dans les box des opérateurs internet n’est en général pas suffisamment configurable.
Mettre ce fichier sur une carte micro SD vierge formatée en FAT32.
Mettre cette carte dans le RPi 2. (ne pas mettre en marche)
2) Configurer le serveur DHCP. Ici je donne la configuration du DHCP sur un switch Cisco.
A vous d'adapter à vos adresses ip.
ip dhcp excluded-address 192.168.0.1 192.168.0.100
ip dhcp pool CLUSTER
network 192.168.0.64 255.255.255.192
dns-server 8.8.8.8
option 43 ascii "Raspberry Pi Boot "
default-router 192.168.0.100
option 66 ascii 192.168.0.70
IMPORTANT : Il y a 3 espaces après Boot à la fin de "Raspberry Pi Boot "
- network définit le (sous)réseaux dans lequel les adresse ip sont allouées par le serveur dhcp.
Le « ip dhcp excluded-address exclue les ip de 1 à 100. L’allocation aura donc lieu dans l’intervalle 101..126
- dns-server définit l’ip du résolveur dns. Ici celui de Google.
- default-router définit l'ip de la gateway (routeur)
- option 66 définit le nom du serveur TFTP, donné sous forme d’adresse IP.
3) Configuration du serveur TFTP (ici configuration avec Centos 7)
yum install tftp-server tftp
systemctl start tftp
systemctl enable tftp
Mettre tous les fichiers nécessaires au boot d’un RPi2 (ou d’un RPi3) dans la racine du serveur TFTP.
yum install tftp-server tftp
systemctl start tftp
systemctl enable tftp
Par défaut le serveur TFTP sert les fichiers qui sont dans /var/lib/tftpboot
Télécharger les dernière versions depuis https://github.com/raspberrypi/firmware/tree/master/boot
ou prendre des version plus 'mature' sur la partition FAST d'une sdcarte carte. Cette partition est ensuite montée sous le nom de /boot.
ou prendre des version plus 'mature' sur la partition FAST d'une sdcarte carte. Cette partition est ensuite montée sous le nom de /boot.
bootcode.bin
On l’a déjà mis sur la carte de notre Rpi2, mais un Rpi3 sans sdcard peut le prendre directement sur le serveur TFTP.
On l’a déjà mis sur la carte de notre Rpi2, mais un Rpi3 sans sdcard peut le prendre directement sur le serveur TFTP.
Les 4 fichiers start*.elf
Celui utilisé dépendra de la répartition mémoire entre GPU et CPU
(Voir paramètre gpu_mem=... dans config.txt)
Celui utilisé dépendra de la répartition mémoire entre GPU et CPU
(Voir paramètre gpu_mem=... dans config.txt)
start.elf
start_cd.elf
start_x.elf
start_db.elf
A chaque fichiers start*.elf correspond un fichier fixup*.dat
fixup.dat
fixup_cd.dat
fixup_x.dat
fixup_db.dat
Le kernel ARM7 32 bits multi cores commun à RPi2 et RPi3
kernel7.img
Les Device Tree
bcm2709-rpi-2-b.dtb
bcm2710-rpi-3-b.dtb
Créer les deux fichiers de configuration vide (on les remplira plus tard)
config.txt
cmdline.txt
4) Enfin, mettre le RPi sous tension.
Dans /var/log/message on doit trouver l’activité du serveur TFTP
tftpd: Client 192.168.0.126 finished config.txt
tftpd: Client 192.168.0.126 finished start.elf
tftpd: Client 192.168.0.126 finished fixup.dat
tftpd: Client 192.168.0.126 finished config.txt
tftpd: Client 192.168.0.126 finished config.txt
tftpd: Client 192.168.0.126 finished cmdline.txt
tftpd: Client 192.168.0.126 finished cmdline.txt
tftpd: Client 192.168.0.126 finished kernel7.img
tftpd: Client 192.168.0.126 finished bcm2709-rpi-2-b.dtb
tftpd: Client 192.168.0.126 finished config.txt
Note: Le serveur TFTP ne montre que les transferts effectifs. Si on regarde avec tcpdump le trafic réseaux on découvre que le processus de boot teste l’existence de bien d'autres fichiers:
tcpdump -l -n -v -ttttt -i eth0 -s 1500 udp | grep –line-buffered RRQ | awk ‘{print $6}’
358bec05/start.elf
autoboot.txt
config.txt
recovery.elf
start.elf
fixup.dat
recovery.elf
config.txt
dt-blob.bin
recovery.elf
config.txt
bootcfg.txt
cmdline.txt
recovery7.img
recovery.img
kernel7.img
armstub7.bin
armstub.bin
kernel7.img
bcm2709-rpi-2-b.dtb
config.txt
Cette séquence varie en fonction des fichiers effectivement trouvés sur le serveur TFTP et en fonction du contenu de config.txt
Si tout se passe bien vous aurez au bout d'environ 5 ou 6 secondes la mire colorée, puis les info du chargement du kernel qui se terminera pas un message du type:
PANIC Unable to mount root fs.
C'est normal ! L’étape suivante est de justement fournir ce root file system via NFSv2.
Si tout se passe bien vous aurez au bout d'environ 5 ou 6 secondes la mire colorée, puis les info du chargement du kernel qui se terminera pas un message du type:
PANIC Unable to mount root fs.
C'est normal ! L’étape suivante est de justement fournir ce root file system via NFSv2.
Si rien ne ce passe il faudra debugger le DHCP puis le TFTP avec tcpdump ou wireshark.
Pour voir tout le trafic il faudra utiliser un hub, pas un switch.
Quand le processus de boot échoue le led d’activité clignote 4 fois (parfois 7).
Si le RPi2 émet plusieurs requêtes DHCP alors que le serveur DHCP lui répond c'est que la réponse ne lui convient pas.
Pour voir tout le trafic il faudra utiliser un hub, pas un switch.
Quand le processus de boot échoue le led d’activité clignote 4 fois (parfois 7).
Si le RPi2 émet plusieurs requêtes DHCP alors que le serveur DHCP lui répond c'est que la réponse ne lui convient pas.
Aucun commentaire:
Enregistrer un commentaire