Como você está perguntando aqui no askubuntu, eu apenas assumirei que você pretende desenvolver para o kernel do Linux. Você não está mencionando nada em específico, então aqui estão algumas dicas:
Conceito:
Um driver de dispositivo é um programa que controla um tipo específico de dispositivo conectado ao seu computador.
Isso significa que um driver de dispositivo atua como tradutor entre um dispositivo de hardware e os aplicativos ou sistemas operacionais que o utilizam.
Solicitações:
Para desenvolver drivers de dispositivos Linux, é necessário ter uma compreensão do seguinte:
Programação em C. Algum conhecimento profundo da programação C é necessário, como o uso do ponteiro, funções de manipulação de bits, etc.
Programação microprocessada. É necessário saber como os microcomputadores trabalham internamente: endereçamento de memória, interrupções, etc. Todos esses conceitos devem ser familiares a um programador assembler.
Por último, mas não menos importante, o Kernel do Linux é o que fica entre tudo o que você estará fazendo.
Recursos, links e ajuda:
-
Gravando drivers de dispositivos no Linux: Um breve tutorial ( sabendo o que você está procurando )
-
Guia de Programação do Kernel Linux 2.6 ( aprendendo sobre os bastidores )
-
UbuntuDevelopment ( aqui você pode obter ajuda de outros desenvolvedores do Ubuntu )
Exemplo prático:
Um passo-a-passo, com o objetivo de criar um simples dispositivo de lâmpada USB e seu driver para o Linux:
Escrevendo um driver USB simples | Revista Linux
Dê à sua caixa do Linux uma luz multicolorida que você pode ver do outro lado da sala e aprenda a escrever um driver simples para a próxima peça de hardware que você quer conectar.