리눅스(커널/배포판)에서 지원 안되는 디바이스드라이버에 대해서

k1d0bus3의 이미지

Q/A에 올리려다가 자유로운 의견을 듣고싶어 자유게시판에 올립니다.

Nvidia GPU는 디바이스드라이버 공개가 안되어있는 걸로 압니다.
이유가 무었이며, 왜 이런 이해관계가 생기는건지 궁금합니다.
어쨋든 그래서 리버스엔지니어링으로 디바이스드라이버를 만든것이 noveau프로젝트더군요. (문제는 전 noveau를 쓰면서 버그(충돌)를 경험했습니다.)
이것저것 배포판들을 여러종류의 PC에서 쓰다보면
꼭 사운드카드, 터치패드(맥북), 무선랜 등등 작동안되는 디바이스들이 한둘씩 있습니다.
여러분께서는 어떤 경험을 하셨으며, 주로 어떤 종류의 디바이스(회사)에서 문제들이 생기는지 궁금합니다.

sohn9086의 이미지

> Nvidia GPU는 디바이스드라이버 공개가 안되어있는 걸로 압니다.

그렇지 않습니다. NVIDIA사의 홈페이지에서 다운로드 받으면 됩니다.
아마도 배포판에서 NVIDIA사의 정식 드라이버를 패키징해서 제공하지 않아서 오해하고 계신거라 봅니다.

> 이유가 무었이며, 왜 이런 이해관계가 생기는건지 궁금합니다.
> 어쨋든 그래서 리버스엔지니어링으로 디바이스드라이버를 만든것이 noveau프로젝트더군요. (문제는 전 noveau를 쓰면서 버그(충돌)를 경험했습니다.)

배포판마다 이유가 다르지만 디바이스 제조사의 정식 드라이버가 오픈 소스가 아닐 경우, 자유 소프트웨어 정신에 위배된다는 이유로 패키징하지 않는 배포판이 많다고 봅니다.
디바이스 제조사는 왜 소스코드를 공개하지 않는 것인가? 그것은 기업 입장에서 그들의 지적재산을 침해받고 싶지 않기 때문입니다.
소스코드를 공개하면 그 디바이스의 레지스터 구성을 대충 알 수 있고, 경쟁사에게 설계의 힌트를 제공할 수 있습니다.
neuveau 는 NVIDIA의 디바이스 드라이버를 리버스 엔지니어링해 레지스터 구조를 "때려맞춰" 개발한 오픈소스버전의 (하지만 기능은 제한적인) 드라이버입니다.

저도 무선랜 드라이버가 인식이 안된적이 있어서 패치를 만들어서 고쳐쓴적이 있습니다. 무선랜 칩셋은 이미 리눅스에서 지원하는 거였는데 처음보는 USB디바이스라고 판단을 했던 모양이어서 한 줄 추가했더니 움직이더군요.

생산적인 댓글을 달자

k1d0bus3의 이미지

GPU처럼 무선랜쪽도 문제가 자주 발생하던데, 이 역시 정식 드라이버가 오픈소스가 아닌 것(혹은 오픈소스드라이버의 성능적 문제)이 주된 이유라고 봐야 합니까?

제 경험상 리눅스 드라이버가 문제가 되는 것은 항상 GPU,wireless 부분이였습니다.
다른 디바이스들도 많은데, 왜 유독 이쪽 디바이스드라이버들만 문제가 될까요?
워낙 종류가 다양해서? 리버스엔지니어링이 어려워서? GPU/wireless쪽 제조사들이 하드웨어구조나 드라이버소스코드 공개를 꺼려서?

commonJS의 이미지

공통적인 얘기긴 합니다만 리눅스 쪽은 아무래도 리버스 엔지니어링이 어려워서라기 보다는 기업 입장에서는 아무래도 일반인들이 자주 쓰는 운영체제 쪽을 먼저 지원하게 될 수 밖에 없겠죠, (말 그대로 수지타산이 안 맞는 이유도 있고요.)