buildroot: インターフェイス経由でブリッジを追加

buildroot: インターフェイス経由でブリッジを追加

私のインターフェースファイルをビルドルートファイルシステムに追加しました(rootfsを上書き)。

auto lan1
iface lan1 inet manual
auto lan2
iface lan2 inet manual

auto br0
iface br0 inet static
    address 192.168.40.1
    netmask 255.255.255.0
    bridge_ports lan1 lan2
    bridge_fd 5
    bridge_stp no

ただし、次のエラーが発生します(dmesgまたは/var/log/messagesには表示されません)。

Cannot find device "br0"

buildroot に bridge-utils が組み込まれており、手動でブリッジを作成できますが (brctl addbr br0) 起動時に完了しません。

どんなアイデアがありますか?

編集:これは私のものです構成定義そして完了インターフェースファイル

私はsystemdを使用しません。レガシーvinitらしい。

/sbin/init --help
BusyBox v1.32.0 (2021-01-21 18:56:27 CET) multi-call binary.

フランクさんこんにちは

答え1

/etc/network/interfacesのブリッジングサポートは、/etc/network/if-pre-up.d、if-post-down.d、if-down.dの「ブリッジ」スクリプトとライブラリスクリプト/libで提供されています。 /bridge-utils/bridge-utils.sh

Debian では、これらのブリッジサポート拡張スクリプトは bridge-utils パッケージの一部です。 buildrootで使用されているbridge-utilsのソースコードを見ると、kernel.orgこれらのブリッジサポートスクリプトはソースコードパッケージの一部ではありません。

Debian に含まれる追加のブリッジサポートスクリプトは、以下で提供されます。Debian 独自のリポジトリ/etc/network/interfaces のブリッジング構文が Buildroot で機能しない理由は、これらのスクリプトがないためです。

答え2

lan1手動で設定するように起動に指示するように指定されlan2ました。manualこれら 2 つのインターフェイスは、br0初期化前にイネーブルになっていないため失敗します。

0.0.0.0を割り当てて有効にしてlan起動lan2してみてください。私は常に優先順位が重要であると疑っていますので、そのファイルの最後の定義が次のようになっていることを確認interfacesしてください。br0

auto lan1 lan2 br0

iface lan1 inet manual
   up ifconfig lan1 0.0.0.0 up

iface lan2 inet manual
   up ifconfig lan2 0.0.0.0 up

iface br0 inet static
    address 192.168.40.1
    netmask 255.255.255.0
    bridge_ports lan1 lan2
    bridge_fd 5         # not sure this is necessary with stp 'no'
    bridge_stp no

関連情報