2016-12-23 4 views
0

2 개의 무선 pci 카드 (동일한 모델이지만 2 개의 다른 모드에서 작동 할 수 있음)가 버스에 있습니다. 그들은 같은 드라이버를 공유합니다. 내가하고 싶은 일은 다음과 같이 드라이버를 해킹하는 것입니다. 첫 번째 검사 장치 (인덱스 0)가 모드 A로 구성되고 다음 인덱스 (인덱스 1)가 모드 B로 구성됩니다. 이렇게하면 드라이버가 해킹됩니다.pci 버스의 장치가 항상 동일한 순서로 검사됩니까?

그래서 나는 그들이 시스템 init 때마다 같은 순서로 프로빙되는지 알고 싶다.

프로브 순서가 임의 인 경우 다른 방법이 있습니까?


이 시도 : 차이 슬롯에 동일한 카드를 연결하고 나는/SYS/장치/pci0000에서 무엇을 가지고 확인 : 00. 결과는 모두 동일합니다. 커널은 실제 슬롯에 대해 전혀 모르는 경우가 있습니까? 나는 커널이 카드가 장착 된 실제 슬롯을 알고 있을지도 모른다고 생각하고있었습니다. 동정 ..

답변

1

대답하려면 : 아니오, 그들은 일반적으로 아닙니다.

해결하려는 사항 : 현대적으로 수정되었으므로이 작업을 수행 할 필요가 없습니다 커널 시스템 Linux 시스템의 경우 네트워크 인터페이스 이름이 장치의 실제 슬롯에 연결됩니다. 물리적으로 카드를 움직일 때까지 항상 같은 이름을 갖습니다.

수정. 처음에 나는 이것이 커널에 의해 제공된다고 생각했다. 아니요, 사용자 공간 도우미가 제공합니다 (예 : udev). : 펌웨어/BIOS 통합

  • 이름 (ens1 예) PCI 익스프레스 핫 플러그 ​​슬롯 인덱스 번호를 제공 : 온보드 장치 펌웨어/BIOS 제공 인덱스 번호 (eno1 예)를 포함

    1. 이름 하드웨어의 커넥터의 물리적/지리적 통합
    2. 명칭 (예 : enp2s0) 인터페이스의 MAC 주소를 포함
    3. 이름 (예 : enx78 e7d1ea46da)
    4. 클래식, 예측할 수없는 커널 기본 ethX의 이름 (예 : eth0를)

    원산지 : https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

    예 :

    % ip link list dev enp0s20u2c2 
    42: enp0s20u2c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 
        link/ether 4a:06:8b:65:72:36 brd ff:ff:ff:ff:ff:ff 
    % ls -l /sys/class/net/enp0s20u2c2 
    lrwxrwxrwx 1 root root 0 Dec 23 14:59 /sys/class/net/enp0s20u2c2 -> ../../devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:2.0/net/enp0s20u2c2 
    
  • +0

    예. devA -> wl0 -> 모드 A. devB -> wl1 -> 모드 B. 그게 내가하려는 일이야. 하지만 나는 현대의 커널에서 고정되어 있다는 것을 이해하지 못한다. 그들의 장치 idx (probed)가 무작위라면 커널은 어떻게 정적 매핑을 할 수 있습니까? 첫 번째 probed dev는 wl0으로 명명되었지만 1srt dev는 devA 또는 devB 일 수 있습니다. 맞습니까? – kumo

    +0

    물리적으로 장치가 특정 슬롯에 연결되어 있기 때문입니다. 예를 보여주기 위해 답변을 업데이트하겠습니다. – 0andriy