O Linux (e alguns outros sistemas unix de código aberto) tratam os drivers de maneira muito diferente da forma como os sistemas operacionais Windows funcionam.
Nos sistemas Windows (especialmente antes do Windows 10), o kernel do sistema operacional fornece uma interface de software binário estável na qual um driver pode ser gravado e essa interface (com exceções) é garantidamente inalterada durante o ciclo de suporte de um dado Versão do Windows. Isso favorece os drivers sendo gravados e fornecidos por terceiros, eles geralmente trabalham para pelo menos uma versão do Windows em todo esse ciclo de suporte. As desvantagens são que essa interface de driver é difícil de melhorar ou consertar nesse ciclo de vida e favorece a distribuição binária de drivers que (toda a política à parte!) Frequentemente limita o suporte multi-plataforma consistente.
Os kernels do Linux têm uma interface de driver em mudança que é estritamente especificada no nível do código-fonte, e inclinada para a melhoria e consistência multi-plataforma. Isso significa que, a menos que um driver "tradutor" adicional que ofereça uma interface binária estável e específica seja usado, um binário do driver é específico para uma compilação exata do kernel. Pode-se "falsificar" um binário de driver para ser compatível com algumas dúzias de versões exatas de kernel em uma plataforma, mas o esforço para mantê-lo (como uma oferta binária) seria antieconômico. Este viés também é politicamente desejado na comunidade de kernel do linux, já que fingem que um driver binário de código fechado poderia fazer muito pior do que o firmware malicioso em um periférico de busmastering considere código-fonte fechado não muito confiável desagradável para executá-lo com privilégios de kernel. Assim, drivers de dispositivos de código aberto para todo o hardware principal são fornecidos dentro do próprio pacote kernel, com a segunda opção de ser relativamente fácil de usar o método de distribuir um driver externo como um tarball de origem, para ser compilado contra o kernel instalado. / p>
Alguns outros drivers linux (por exemplo, drivers gráficos clássicos X11, drivers de scanner, drivers de impressora) não são tratados como partes do kernel, mas como partes de algum software userspace que fornece a funcionalidade como um serviço de sistema amplo (XOrg, Sane , Ghostscript ...) - estes, também, tendem a ser específicos e distribuídos principalmente com uma determinada versão do software relevante do espaço do usuário.