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이러한 브리지 지원 스크립트는 소스 코드 패키지의 일부가 아닙니다.

데비안에 포함된 추가 브리지 지원 스크립트는 다음에서 제공됩니다.데비안 자체 저장소/etc/network/interfaces의 브리징 구문이 Buildroot에서 작동하지 않는 이유는 이러한 스크립트가 없기 때문입니다.

답변2

lan1수동으로 구성하도록 부팅에 지시 lan2하도록 지정 되었습니다 . manual이 두 인터페이스는 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

관련 정보