Linux 커널은 어떻게 새로운 하드웨어 지원을 추가합니까?

Linux 커널은 어떻게 새로운 하드웨어 지원을 추가합니까?

A 회사가 새로운 그래픽 어댑터를 출시한다고 가정해 보겠습니다. 향후 Linux 커널에서 지원되는 이 새로운 그래픽 어댑터를 얻는 프로세스를 누가 관리하게 됩니까? 진행 상황은 어떻습니까? 커널이 Windows의 새로운 하드웨어에 대한 지원을 어떻게 처리하는지 궁금합니다. 자체 드라이버를 개발하는 경우 Linux는 어떻게 특정 하드웨어에 대한 지원을 받습니까?

답변1

드라이버 지원은 모든 오픈 소스 소프트웨어가 작동하는 방식과 동일하게 작동합니다. 누군가가 스스로 가려운 부분을 긁기로 결정합니다.

Windows처럼 하드웨어를 제공하는 회사에서 드라이버를 제공하는 경우도 있습니다. Intel은 네트워크 칩에 대해 이 작업을 수행하고, 3ware는 RAID 컨트롤러에 대해 이 작업을 수행합니다. 이들 회사는 드라이버 제공이 최선의 이익이라고 결정했습니다. 그들의 "욕망"은 Linux 사용자에게 제품을 판매하는 것이며, 이는 드라이버가 있는지 확인하는 것을 의미합니다.

가장 좋은 경우는 회사가 Linux 배포판과 함께 제공되는 적절한 소스 코드 저장소에 드라이버를 넣기 위해 열심히 노력하는 것입니다. 대부분의 드라이버에서 이는 Linux 커널을 의미합니다. 그래픽 드라이버의 경우 이는 다음을 의미합니다.X.org. 게다가컴퓨터 지원 시스템프린터 드라이버의 경우,너트UPS 운전자의 경우,제정신이것의 분명한 이점은 드라이버가 승인된 후 만들어진 Linux 배포판이 하드웨어를 즉시 지원한다는 것입니다. 가장 큰 단점은 기업이 드라이버를 얻기 위해 오픈 소스 프로젝트와 조정하는 데 더 많은 작업을 수행해야 하며 동일한 기본 이유로 두 개의 별도 팀이 모든 것을 조정하는 것이 어렵다는 것입니다.

드라이버 소스 코드를 직접 제공하는 회사도 있습니다. 일반적으로 해당 웹 사이트에서 드라이버 소스 코드를 다운로드하여 시스템에 빌드한 다음 수동으로 설치해야 합니다. 이러한 회사는 일반적으로 충분한 직원이 없는 소규모 또는 전문 제조업체이므로 적절한 오픈 소스 프로젝트와 협력하여 해당 프로젝트의 소스 코드 기반에 드라이버를 넣을 에너지가 없습니다.

소스 코드 대신 순수 바이너리 드라이버를 제공하는 회사는 거의 없습니다. 한 가지 예는 NVIDIA와 같은 회사의 고급 3D 드라이버입니다. 그 이유는 기업이 독점적이라고 생각하는 정보를 공개하고 싶지 않기 때문인 경우가 많습니다. 이러한 드라이버는 이전의 경우처럼 많은 Linux 배포판과 호환되지 않는 경우가 많습니다. 하드웨어를 제공하는 회사가 API 및 ABI 변경 사항을 추적하기 위해 드라이버를 다시 빌드하는 데 신경을 쓰지 않기 때문입니다. 소스 코드로 제공되는 드라이버는 최종 사용자나 Linux 배포 공급자가 이러한 변경 사항을 추적하도록 조정할 수 있으므로 처음 두 경우에는 일반적으로 드라이버가 바이너리 드라이버보다 더 많은 시스템에 적합하게 만들어질 수 있습니다.

회사에서 Linux 드라이버를 제공하지 않으면 커뮤니티의 누군가가 결정합니다. 이는 UPS 및 프린터와 같은 특정 광범위한 하드웨어 범주에서 일반적입니다. a) 하드웨어를 소유할 수 있고, b) 시간이 있고, c) 기술을 보유하고 있으며, d) 드라이버를 개발하는 데 기꺼이 시간을 할애할 수 있는 사용자는 거의 없습니다. 이것은 일반적으로 널리 사용되는 하드웨어에서는 문제가 되지 않습니다. 수백만 명의 Linux 사용자에게 해당되고 선택된 소수에게만 존재하기 때문입니다. 일반적이지 않은 하드웨어로 인해 문제가 발생할 수 있습니다.

답변2

이를 자세히 이해하기 위해 최근 라즈베리파이3가 나오고 블루투스 칩이 추가됐다. 이제 이것은 Broadcom BLE 칩이며 Raspberry Pi 커널은 이를 지원하지 않으므로 bluezLinux 라이브러리가 작동하지 않습니다. 이제 이상적으로는 이 BLE 칩에 대한 펌웨어 패치가 있어야 하며 사용자가 사용할 수 있으려면 커널을 다시 컴파일해야 합니다. 맞아?

관련 정보