web-dev-qa-db-ja.com

Linuxで起動時にネットワークを起動する方法

私は組み込みLinuxシステムに取り組んでいます。私の目的は、起動時にイーサネットインターフェイスをアクティブ化することです。ブートローダーとしてu-bootを使用しています。 ip =およびeth = u-boot環境変数をbootargsとしてLinuxカーネルに渡し、LinuxカーネルをIP:カーネルレベルの自動構成として構成し、有効にしました。ただし、「ifconfig eth0 up」のように、ネットワークインターフェイスは起動しませんでした。

それで、ユーザースペーススクリプト(ifupとifconfig)に頼らずに、Linuxカーネルにeth0インターフェイスをアクティブ化するように指示することが可能かどうか疑問に思っていますか?

6

はい、Linuxカーネルはユーザースペーススクリプトに頼ることなくeth0インターフェイスをアクティブ化できます。
ip=カーネルブートパラメータを使用して、静的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=ブートパラメータの構文の詳細は、 Documentation/filesystems/nfs/nfsroot.txt にあります。この機能の本来の目的がネットワーク化されたルートファイルシステムを容易にすることであったという事実は無視してください。

Ip =とeth = u-boot環境変数をbootargsとしてLinuxカーネルに渡しました

eth=は有効なブートパラメータではないため、カーネルによって無視される可能性があります。
BTW Atmelのmacb.cドライバーを使用している場合、U-BootがPHYのMACアドレスをインストールして、これが機能することを確認してください。

8
sawdust