Как установить MAC-адрес интерфейса Ethernet с помощью connman

У меня есть встроенная система, которая требует от меня извлечения MAC-адреса из флэш-памяти и передачи его в интерфейс Ethernet во время его загрузки. Традиционно я модифицировал вызов ifconfig в скрипте инициализации, чтобы просто передать MAC, извлеченный из флэш-памяти, как hw ether параметр.

Система, над которой я работаю, использует connman для управления сетевым соединением. Встроенная система всегда будет иметь одно соединение Ethernet с одним совпадающим MAC-адресом в произвольном формате во флэш-памяти. connman используется, когда меняется доступный интерфейс, поэтому полезно иметь динамическую систему для управления переводом и отключением интерфейса и его настройкой.

Можно ли передать MAC connman для использования аналогично тому, что я делал ранее с ifconfig, и, если да, то как?

Альтернативно, возможно ли передать MAC в качестве параметра загрузки ядру, чтобы connman никогда не знал об этом? Я могу вытащить MAC из флэш-памяти в U-Boot, но устройство Ethernet не доступно для U-Boot.

1 ответ

Решение

Альтернативно, возможно ли передать MAC в качестве параметра загрузки ядру, чтобы connman никогда не знал об этом?

Да, вы можете использовать U-Boot ethaddr переменная окружения, чтобы сделать именно это.

Проверьте U-Boot Environment Variables для документации по этой переменной.

Соответствующий фрагмент документации:

ethaddr: MAC-адрес Ethernet для первого / единственного интерфейса Ethernet (= eth0 в Linux). Эта переменная может быть установлена ​​только один раз (обычно во время изготовления платы). U-Boot отказывается удалять или перезаписывать эту переменную после ее установки.

Это может быть так же просто, как выполнить следующие команды, чтобы установить переменную среды и сохранить ее (естественно, подставив ваш MAC-адрес):

setenv ethaddr 11:22:33:44:55:66
saveenv

Если ethaddr еще не используется в вашей загрузочной строке U-Boot, тогда вам нужно сделать больше, чем просто выше. Для примера того, как настроить это в системе, посмотрите Как установить фиксированный MAC-адрес в LeopardBoard DM36x.

Вот команда загрузки, использующая ethaddr что вышеуказанный сайт заканчивается:

setenv bootcmd 'setenv bootargs \${bootargs} davinci_emac.ethaddr=\${ethaddr}; nboot 0x82000000 0 \${kerneloffset}'
Другие вопросы по тегам