저는 PCIe 하드웨어 장치를 PCI Express를 통해 다른 시스템으로 내보내는 관리 시스템을 가지고있는 프로젝트에서 작업하고 있습니다. 나는 작동중인 관리 커널 모듈을 가지고 있지만 수출하는 장치에 관리 시스템에 이미로드 된 드라이버가 없는지 확인하는 방법을 찾아야합니다. 그렇지 않으면 동일한 드라이버가 2 개의 다른 시스템에서 액세스 할 것이기 때문에 장치가 충돌로 끝납니다. & 분명히 문제가 발생합니다.특정 장치 (다른 커널 모듈의 코드)에서 커널 모듈을 언로드하십시오.
예를 들어 Manager에 이중 포트 Intel 100MBps NIC 장치가 설치되어 있고 시스템에 2 개의 PCIe 끝점이 표시되어 있다고 가정합니다 (예 : Fn 0 & 1). 인텔 모듈 e1000이 두 장치 모두에로드됩니다. 해당 장치의 포트 2를 다른 시스템으로 내보내려면 e1000 모듈에서 "분리"하고 싶습니다.
커널을 해킹하거나 e1000 드라이버의 프로브 기능을 조정하지 않고도이 작업을 수행 할 수있는 확실한 방법을 알고 있습니까? 두 개의 NIC 장치 모두에 모듈을 함께 제거하기 때문에 단순히 rmmod를 수행 할 수는 없습니다. NIC를 아직 관리 시스템에서 작동 상태로 유지하고 싶지는 않지만 e1000 드라이버가 아직로드되지 않았 으면합니다.
기본적으로 rmmod는이 작업을 수행하지만 드라이버가 소유 한 &에 대해 검사 된 모든 장치의 드라이버를 제거합니다. 리눅스에게 "이 특정 장치에 대해서만 모듈을 언로드"하라는 어떤 식 으로든? Windows의 경우 장치 관리자에서 장치를 마우스 오른쪽 단추로 클릭하는 것과 같습니다. & "사용 안함"을 선택하십시오.