buildroot:通过接口添加桥

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源代码内核.org这些桥接支持脚本不是源代码包的一部分。

Debian 中包含的这些额外的桥接支持脚本来自Debian 自己的存储库/etc/network/interfaces 中的桥接语法在 Buildroot 中不起作用的原因是因为缺少这些脚本。

答案2

lan1并被lan2指定为manual告诉引导将那些手动配置。由于这两个接口在br0初始化之前未处于活动状态,因此会失败。

尝试分配 0.0.0.0lan以便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

相关内容