Finalement, j'ai trouvé comment procéder pour définir l'adresse MAC de mon BPI R3 (carte de développement).
C'est une variable d'environnement U-boot qui va initialiser l'adresse MAC au premier amorçage de la machine.
La variable d'environnement porte un nom correspondant à l'expression régulière
eth[0-9]*addr. Aucune
variable d'environnement ayant ce nom n'est définie sur le BPI R3 car c'est une carte de développement. On
peut définir une variable d'environnement U-boot en ligne de commande avec U-boot (durant l'amorçage) ou
avec un utilitaire en ligne de commande disponible sur OpenWrt. Cette variable doit porter une adresse MAC
mais l'assignation n'est que temporaire (mémorisée dans la RAM). On peut l'enregistrer dans une mémoire
non temporaire mais on ne peut lui assigner une valeur qu'une seule fois.
ethaddr
Ethernet address. If CONFIG_REGEX=y, also eth*addr (where * is an integer).
These variables can be set only once (usually during manufacturing of the board). U-Boot refuses to delete or overwrite these variables once they have been set, unless CONFIG_ENV_OVERWRITE is enabled in the board configuration.
Source :
https://docs.u-boot.org/en/latest/usage/environment.htmlOn peut spécifier des variables d'environnement dans un fichier de configuration U-boot.
L'information qu'il me fallait se trouvait dans l'option CONFIG_DEFAULT_ENV_FILE. Elle est définie dans un correctif
BPI R3 (uboot-mediatek/patches/430-add-bpi-r3.patch). Sa valeur est
bananapi_bpi-r3_sdmmc_env. C'est dans
ce fichier qu'on peut ajouter la définition d'une variable d'environnement U-boot
ethaddr. Il faut donc faire un
correctif pour modifier ce fichier. À tout hasard, je recherche dans le correctif la chaîne de caractère
_env. Bingo !
La configuration
bananapi_bpi-r3_sdmmc_env est créée à partir de zéro.
Il suffit de modifier le correctif
lui-même grâce au mécanisme de correctif intégré à Buildroot « Quilt ».