Да, ядро Linux может активировать интерфейс eth0, не прибегая к сценариям пользовательского пространства.
Вы можете использовать параметр загрузки ip=
kernel для инициализации сетевого интерфейса со статическим IP-адресом, например:
ip=192.168.1.100:::255.255.255.0:myboard:eth0:on
Конечно, интерфейс eth0 нельзя включить до тех пор, пока не будут загружены драйверы (на что указывает освобождение раздела памяти __init
).
Вот системный журнал, чтобы показать, когда сетевой интерфейс становится активным:
eth0: link down
IP-Config: Complete:
device=eth0, addr=192.168.1.100, mask=255.255.255.0, gw=255.255.255.255,
host=myboard, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
Freeing init memory: 564K
remounting / read-write... done.
mounting /proc... done.
mounting /sys... done.
Creating device nodes manually, running /sbin/makenodes-2.6
eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
Done.
mounting /home... MTDSB: dev_name "/dev/mtdblock3"
Полная информация о синтаксисе параметра ip=
boot находится в Documentation/filesystems/nfs/nfsroot.txt. Не обращайте внимания на тот факт, что первоначальная цель этой возможности заключалась в создании сетевой корневой файловой системы.
Я передал переменные окружения ip = и eth = u-boot ядру linux как bootargs
eth=
не является допустимым параметром загрузки и, вероятно, игнорируется ядром.
Кстати, если вы используете драйвер Atb 's macb.c
, убедитесь, что U-Boot устанавливает MAC-адрес для PHY, чтобы это работало.