Linux 커널 트리에는 리버스 엔지니어링된 드라이버가 많이 있습니다. 그러나 일부 드라이버(특히 무선 드라이버)가 제대로 작동하려면 펌웨어 바이너리 Blob이 필요합니다.
누군가가 이를 리버스 엔지니어링하고 드라이버를 100% 무료로 만드는 것을 막는 것은 무엇입니까? 아니면 운전자마다 다른 규칙이 있나요?
답변1
펌웨어는 메인 CPU가 아닌 장치 자체의 프로세서에서 실행되는 소프트웨어입니다. 여러 가지 이유로 인해 펌웨어는 드라이버보다 비공개 소스일 가능성이 높습니다.
펌웨어는 한 번만 만들면 되며 운영 체제마다 다른 드라이버가 필요합니다. 따라서 하드웨어 제조업체에는 제3자가 선호하는 운영 체제에 대한 자체 드라이버를 작성할 수 있도록 허용하는 인센티브가 있지만 펌웨어에는 그러한 인센티브가 없습니다.
펌웨어는 하드웨어에 더 가깝기 때문에 하드웨어 회사는 하드웨어 작동 방식을 비밀로 유지하려는 경우가 많습니다. 그래서 그들은 또한 펌웨어가 어떻게 만들어지는지 공개하는 것을 좋아하지 않습니다.
펌웨어는 드라이버 코드보다 리버스 엔지니어링하기가 더 어렵습니다. 메인 CPU에서 실행되는 드라이버와 달리 주변 장치는 일반적으로 쉽게 디버깅할 수 없습니다. 또한 펌웨어는 제대로 문서화되지 않은 환경에서 실행됩니다(CPU 유형이 거의 없고 어떤 I/O 장치가 어떤 주소에 매핑되는지는 매우 다양함).
Wi-Fi 드라이버에 추가 문제가 있습니다. 대부분 지역의 법률은 특정 무선 주파수의 사용을 금지하고 있으며 이러한 금지된 주파수에서 소비자 장비가 방송되지 않도록 보호해야 합니다. 하드웨어는 매우 유연하며 유일한 보호 수단은 펌웨어인 경우가 많습니다. 금지된 주파수로 방송하기 위해 펌웨어를 수정하는 것이 너무 쉽다면 제조업체는 이러한 규정을 위반할 수 있습니다.