나는이 문제에 대한 해결책을 마침내 찾았 기 때문에 지금 내 자신의 질문에 대답하고 있습니다.
드라이버를 언로드 한 다음 올바른 순서로로드하여 장치를 재정렬 할 수 있다는 것을 알았습니다.
첫 번째 방법 (bruteforce) :
그래서 내가 생각해 낸 첫 번째 방법은 init.d 스크립트로 드라이버를 다시로드하는 것을 간단하게하는 것입니다.
다음 init 스크립트는 데비안 6.0에 맞춰져 있지만, 적절한 init.d 스크립트를 사용하는 거의 모든 배포에서 동일한 원칙이 적용됩니다.
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: reorder-nics
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Reloads the nics in correct order
### END INIT INFO
#
# This script should reload the nic drivers in corrected order.
# Basically it just unloads and then loads the drivers in different order.
#
echo "Reloading NICs!"
# unload the drivers
modprobe -r driver_0 # eth0 nic interface
modprobe -r driver_1 # eth1 nic interface
# load the drivers in corrected order
modprobe driver_1
modprobe driver_0
#EOF
그런 다음 스크립트를 적절한 런레벨 디렉토리에 추가해야합니다. " update-rc.d "명령 으로 데비안에서 쉽게 할 수 있습니다 . 예를 들면 다음과 같습니다.update-rc.d reorder-nics start S
두 번째 방법 (더 나은 생각) :
나는 또한 조금 더 우아한 방법을 찾았습니다 (적어도 Debian & Ubuntu 시스템의 경우).
먼저 커널이 NIC 드라이버를 자동으로로드하지 않는지 확인하십시오. 에 블랙리스트 파일을 생성하면됩니다 /etc/modprobe.d/
. " disable-nics.conf
"(이) 라는 파일을 만들었습니다 . 의 파일 /etc/modprobe.d/
에는 .conf
접미사 가 있어야합니다 . 또한 모듈 이름 지정 /etc/modprobe.d/blacklist.conf
은 커널에 의한 모듈 자동로드에 영향을 미치지 않으므로 자신의 파일을 만들어야합니다.
# Disable automatic loading of kernel driver modules
# Disable NIC drivers
blacklist driver_0 # eth0 by default
blacklist driver_1 # eth1 by default
그런 다음 루트로 ' depmod -ae '를 실행하십시오.
' update-initramfs -u '를 사용 하여 initrd를 다시 작성하십시오.
마지막으로 올바른 순서대로 드라이버 이름을 / etc / modules 파일에 추가하십시오.
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
# drivers in wanted order
driver_1 # this one should be loaded as eth0
driver_0 # this one should be loaded as eth1
다음 부팅 후 변경 사항이 적용됩니다.
재부팅은 필요하지 않습니다. 루트로 물론 다음 명령을 사용하여 장치를 쉽게 전환 할 수 있습니다.
modprobe -r driver_0; modprobe -r driver_1; modprobe driver_1; modprobe driver_0
솔루션을 검색하는 동안 찾은 유용한 링크 :