5

Я работаю над встроенной системой Linux, моя цель - активировать интерфейс Ethernet во время загрузки. Я использую U-Boot в качестве загрузчика. Я передал переменные среды ip = и eth = u-boot ядру linux в качестве bootargs и настроил ядро linux в качестве IP: автоконфигурирование на уровне ядра, включено. Тем не менее, это не привело к запуску сетевого интерфейса, как это делает ifconfig eth0 up.

Итак, мне интересно, можно ли поручить ядру Linux активировать интерфейс eth0, не прибегая к сценариям пространства пользователя (ifup и ifconfig)?

1 ответ1

7

Да, ядро 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, чтобы это работало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .