Linux에서 드라이버가 어떻게 작동하는지 알고 싶습니다. 드라이버는 편집할 수 있는 단일 파일입니까? 현재 사용 중인 드라이버 목록이 있습니까, 아니면 각 장치마다 찾을 수 있는 다른 위치가 있습니까?
특히 네트워크 어댑터의 드라이버를 이해하고 싶습니다.
좋은 문서가 어디에 있는지 아시면 저도 읽어보고 싶습니다.
답변1
드라이버는 여러 소스 파일로 구성될 수 있다는 점에서 다른 프로그램과 매우 유사합니다. Linux 장치 드라이버는 커널 또는 커널 모듈로 직접 컴파일될 수 있습니다. 커널 모듈은 동적으로 로드할 수 있다는 장점이 있습니다(즉, 이를 사용하기 위해 새 커널을 컴파일할 필요가 없습니다).
분명히 Linux 소스 코드는 언제든지 볼 수 있지만 처음에는 이것이 어려운 작업이 될 수 있습니다. 그러나 Linux의 다른 것과 마찬가지로 드라이버도 파일입니다. 이는 다른 프로그램이 VFS 인터페이스를 통해 액세스한다는 것을 의미합니다. 예를 들어, ioctl()
장치 파일을 사용하여 CDROM을 호출하여 CDROM을 제어할 수 있습니다.
꼭 확인해 보시길 추천드립니다리눅스 장치 드라이버. 무료로 이용 가능하며 귀하의 질문에 답변해 드립니다. 특히, 간단한 "Hello, Kernel" 모듈을 생성하는 방법을 보여주는 2장을 읽어볼 수 있습니다. 귀하가 요청하는 것보다 훨씬 더 많을 수도 있지만 관심 있는 부분을 읽을 수 있습니다. 그리고 그것은 무료입니다. ;피
답변2
Linux 드라이버는 커널로 구축되어 모듈로 컴파일됩니다. 또는 소스 트리의 커널 헤더에서 드라이버를 빌드할 수 있습니다. 를 입력하여 현재 설치된 커널 모듈 목록을 볼 수 lsmod
있으며 설치된 경우 을 사용하여 버스를 통해 연결된 대부분의 장치를 볼 수 있습니다 lspci
.
NIC용 드라이버가 현재 커널 버전에서 지원되지 않는 경우 공급업체에서 드라이버를 찾아야 하며 커널 모듈은 소스(커널 헤더 기반)에서 컴파일해야 합니다.
답변3
대부분의 경우 네트워크 카드와 같은 항목이 자동으로 표시되지 않으면 하드웨어 제조업체의 웹사이트를 방문하여 Linux 버전이 있는지 확인해야 합니다.
보다 일반적으로 Linux 드라이버는 라이브러리나 모듈 형식을 취하는 경향이 있습니다.