O suporte ao driver do Linux está no nível do kernel?

0

Até agora, eu achava que os drivers Linux estivessem no nível do kernel. Isso significa que os drivers são colocados dentro do kernel, portanto distribuições diferentes devem suportar o mesmo hardware, desde que elas executem a mesma versão do kernel. Claro que existem dkms drivers, que são instalados depois de instalar o kernel, mas eu não estou falando sobre eles.

Hoje eu li um artigo e ele disse: "Diferentes distros empacotam drivers diferentes em seus instaladores, o que significa que, dependendo de qual distro você usar, você descobrirá que diferentes partes do hardware podem ou não funcionar prontamente."

O que estou perdendo? Como diferentes distros empacotam drivers diferentes? Como é possível se os drivers estiverem dentro do kernel?

    
por khajvah 15.10.2013 / 00:47

3 respostas

2

Embora a disponibilidade de drivers na comunidade Linux seja de fato uniforme, vários fatores contribuem para tornar esse quadro geral menos do que perfeito.

A uniformidade na disponibilidade do driver a que você está se referindo certamente se aplica àqueles que entram na árvore do kernel. Uma vez que isto seja decidido, o suporte para o desenvolvimento de drivers sob uma estrutura de kernel em evolução está diretamente ligado ao grupo de kernel Linux, e você pode ter certeza da disponibilidade dos ditos drivers a partir de alguma versão inicial do kernel em diante.

No entanto, há também um grande grupo de drivers proprietários que podem, por razões óbvias, entrar na árvore do kernel. Ou existem drivers que exigem firmware proprietário, que não são necessariamente instalados automaticamente, dependendo de quão estritamente os desenvolvedores da distribuição aderem aos princípios do Software Livre de Código Aberto (FOSS). Para ambos os tipos de motoristas, o grau de suporte (para não mencionar sua adequação técnica) por parte de seus legítimos proprietários não é constante com o tempo, como no caso dos motoristas da Broadcom; daí a necessidade do desenvolvimento de alternativas de software livre. Um caso famoso, além da Broadcom, é o dos drivers OpenSource NVidia. Quando uma alternativa de código aberto não existe, você pode descobrir que algumas unidades são compatíveis com versões mais antigas do kernel, mas não com versões mais recentes; em alguns casos, a compilação com cabeçalhos de Linux atualizados não é uma opção, simplesmente porque eles podem se referir a chamadas de sistema que não existem mais.

Além disso, o novo hardware é normalmente introduzido entre diferentes versões do kernel, que podem ser (trivialmente ou não) acomodadas pelos drivers existentes. Este é o caso, por exemplo, de muitos adaptadores wifi, que os produtores apresentam como novos em algum momento, mas que são baseados em chipsets pré-existentes para os quais já existe um driver Linux. Em alguns casos, uma modificação de código trivial mais recompilação resolve o problema permanentemente. Outras vezes, modificações mais complexas no driver são necessárias, ou até mesmo a introdução de um driver totalmente novo. Felizmente para nós, neste caso o generoso pessoal do Linux Backports nos fornece versões de drivers novos ou modificados que são compatíveis com kernels mais antigos. Então, mesmo se você se sentir deixado para trás, o download de backports deste site permitirá que você pratique os mais novos drivers ao redor.

Em outras palavras, um pouco de trabalho é necessário (download e compilação dos backports do Linux) para restaurar a quase uniformidade a qual você estava se referindo.

    
por 15.10.2013 / 09:16
3

Bem, muitos drivers estão na forma de módulos de kernel carregáveis - que, enquanto na árvore do kernel, pode não ser compilado. Você sempre pode compilar esses módulos mais tarde, instalar e reinicializar. Geralmente, a menos que você esteja compilando do zero, o estilo do gentoo provavelmente irá usá-los em cima de um conjunto de padrões sãos. Isso permite que um kernel tenha módulos adicionados sem precisar de uma reinicialização (usando insmod), e não carregue módulos, se não for necessário.

O DKMS apenas adiciona algumas coisas bonitas, como recompilar módulos automaticamente em uma atualização do kernel.

    
por 15.10.2013 / 01:11
0

Tente baixar fontes do kernel e execute make menuconfig . Você verá um grande número de opções, muitas das quais são módulos do kernel nos quais você pode compilar (eles se tornam parte da imagem do kernel gerada), compilados como módulos (eles podem ser carregados do disco quando o kernel já foi inicializado) ou não compilar nada.

Além disso, as distribuições podem usar diferentes versões de kernels e diferentes conjuntos de patches sobre o lançamento oficial do kernel (vanilla). Alguns instaladores de distribuição permitem que você use drivers / firmware de fonte fechada que não podem não podem fazer parte das fontes oficiais.

Mas, no geral, você obtém praticamente o mesmo suporte de hardware com distribuições de propósito geral usando aproximadamente a mesma versão do kernel.

    
por 15.10.2013 / 03:57