Как установить 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}'