[unix] Linux 드라이버는 어떻게 작동하며 어디서 찾을 수 있습니까? (예 : NIC 드라이버)

Linux에서 드라이버가 어떻게 작동하는지 궁금합니다. 드라이버는 편집 할 수있는 단일 파일입니까? 현재 사용중인 드라이버 목록이 있거나 각 장치마다 다른 드라이버를 찾을 수 있습니까?

특히 네트워크 어댑터 드라이버에 대해 배우고 싶습니다.

좋은 문서가 어디에 있는지 알고 있다면 그것을 읽고 싶습니다.



답변

드라이버는 다른 프로그램과 매우 유사하며 여러 소스 파일로 구성 될 수 있습니다. Linux 장치 드라이버는 커널 또는 커널 모듈로 직접 컴파일 할 수 있습니다. 커널 모듈은 동적으로로드 할 수 있다는 이점이 있습니다 (즉, 새 커널을 컴파일 할 필요가 없습니다).

분명히 Linux 소스 코드를 항상 볼 수 있지만 처음에는 어려운 작업이 될 수 있습니다. 그러나 Linux 드라이버에서와 마찬가지로 파일이 있습니다. 이는 다른 프로그램이 VFS 인터페이스를 통해 액세스하는 것을 의미합니다. 예를 들어, ioctl()장치 파일을 사용하여 호출을 통해 CDROM을 제어 할 수 있습니다 .

리눅스 장치 드라이버를 확인하는 것이 좋습니다 . 무료로 제공되며 질문에 답변 해드립니다. 특히, 간단한 “Hello, Kernel”모듈을 만드는 방법을 보여주는 2 장을 읽을 수 있습니다. 그것은 당신이 요구하는 것보다 훨씬 많을 수도 있지만, 관심있는 비트와 조각을 읽을 수 있습니다. ;피


답변

Linux 드라이버는 커널로 빌드되고 모듈로 또는 모듈로 컴파일됩니다. 또는 소스 트리의 커널 헤더에 대해 드라이버를 빌드 할 수 있습니다. 입력하여 현재 설치된 커널 모듈 목록을 볼 수 있으며, 설치된 경우을 lsmod사용하여 버스를 통해 연결된 대부분의 장치를 살펴보십시오 lspci.

현재 커널 버전에서 NIC에 대한 드라이버를 지원하지 않는 경우 공급 업체에서 드라이버를 찾아야하며 소스에서 커널 모듈을 컴파일해야합니다 (커널 헤더에 대해).


답변

NIC와 같은 것이 자동으로 나타나지 않으면 하드웨어 제조업체의 사이트로 이동하여 Linux 버전이 있는지 확인해야합니다.

좀 더 일반적인 용어로 리눅스 드라이버는 라이브러리 나 모듈 형태를 취하는 경향이 있습니다.


답변