A natureza monolítica do Linux (parte do) é o problema dos drivers ARM? [fechadas]

0

Meu conhecimento sobre o kernel é bastante limitado, então, por favor, desculpe se esta questão está nas premissas erradas para começar.

Em um computador baseado em x86, como meu laptop, posso instalar todas as distribuições Linux que eu quiser. Pode haver problemas menores com placas WLAN ou placas gráficas, mas, no geral, posso instalar todas as versões do kernel do Linux.

Sistemas como os telefones Android e o Raspberry Pi com processadores ARM não podem fazer isso, é preciso obter um kernel especial. E os fabricantes de chips parecem distribuir apenas uma versão compilada de seus drivers com uma versão específica do kernel do Linux. Os telefones Android raramente são atualizados e o software parece preso ao hardware como um sistema de entretenimento para carros.

Os fabricantes dizem que manter seu driver para versões diferentes do kernel seria muito trabalhoso, e portá-lo para novas versões seria muito difícil. Mas por que eles precisam agrupá-lo com tanta força a uma versão específica que os usuários do Android não conseguem obter uma atualização com esforço razoável? Ele funciona em x86, certo?

Eu me perguntei se os drivers estavam integrados no kernel com muita força e talvez alguma falha em módulos independentes ajudaria. Em seguida, os fabricantes de dispositivos ainda podem enviar seu código compilado (de modo que a concorrência não possa inferir o design de seus dispositivos), mas funciona com diferentes versões do Linux. Como as distribuições Android e Desktop Linux usam kernels mais novos para versões mais recentes, não ter esses drivers para essa liberação do kernel impede que alguém faça o upgrade de todo o sistema.

Qual é a causa raiz dos dispositivos Android ainda estarem presos em versões antigas?

    
por Martin Ueding 08.02.2017 / 10:40

1 resposta

2

Direitos autorais, patentes e outros problemas de propriedade intelectual são a causa principal. Os fabricantes de hardware não divulgam detalhes completos, mas fornecerão um blob binário. Infelizmente, o funcionamento interno do kernel não é exatamente estável, então, para cada versão, o blob binário precisa ser atualizado. Fornecer atualizações não gera receita adicional para o fabricante, então, por que pagar um engenheiro de software para fazer alterações o tempo todo? Mesmo problema com os antigos módulos de kernel VMWare (pelo menos eles estavam abertos e podem ser corrigidos) e drivers fornecidos pela NVidia para suas placas de vídeo.

Linus disse que não se preocupa com uma interface interna estável. Se os fabricantes de hardware quiserem que suas coisas sempre funcionem, eles devem abrir o código e deixá-lo integrado na árvore principal do kernel ... aqui está um post (antigo) legal escrito por Greg Kroah-Hartman kroah.com/log/linux /stable_api_nonsense.html

    
por 08.02.2017 / 12:31