Solução da comunidade

Como adicionar com segurança firmware de dispositivos em falta ao ZimaOS

A DVB-S2 tuner needed a Hauppauge firmware blob; IceWhale said users could not add host firmware directly and agreed to integrate the requested file into a release.

O ZimaOS não suporta a instalação informal de firmware do kernel no anfitrião com comandos do estilo Ubuntu apt install linux-firmware-.... O ZimaOS é um sistema do tipo appliance, e a IceWhale informou explicitamente os utilizadores de que o firmware do anfitrião deveria ser integrado na versão do sistema operativo, em vez de ser copiado manualmente.

O caso original envolvia um sintonizador USB DVB-S2 Hauppauge WinTV-NOVA-S2 que precisava de um blob de firmware antes de poder ser utilizado pelo Tvheadend ou pelo Plex. A IceWhale concordou em integrar o firmware numa versão futura e pediu ao utilizador que o testasse.

Por que motivo os comandos do Ubuntu não são diretamente aplicáveis

Os gestores de pacotes do Ubuntu podem gravar firmware num sistema de ficheiros mutável do anfitrião. O ZimaOS não é uma instalação Debian genérica com o mesmo fluxo de instalação de pacotes.

O firmware do kernel tem de estar disponível no anfitrião

Muitos dispositivos DVB, Wi-Fi e outros solicitam firmware ao kernel do anfitrião durante a inicialização. Um contentor Docker não consegue resolver o problema se o anfitrião nunca inicializar o hardware.

Passo 1: Identifique o dispositivo exato e o blob em falta

lsusb
dmesg | grep -i -E 'firmware|dvb|usb'

Registe os IDs USB/PCI, o nome do controlador e o nome exato do ficheiro em falta.

Passo 2: Confirme a origem e a licença do firmware

Ao pedir à IceWhale que o inclua, forneça a fonte oficial do fornecedor/kernel-firmware e as informações sobre a redistribuição.

Passo 3: Solicite a integração no sistema operativo

A IceWhale afirmou que, por motivos de segurança, os utilizadores não podiam adicionar firmware ao anfitrião por conta própria e que a equipa poderia integrar um blob específico quando existisse um caso de utilização claro.

Passo 4: Teste depois de uma versão incluir o firmware

Volte a ligar o dispositivo e inspecione dmesg. Deve garantir que o controlador é inicializado sem o erro «ficheiro de firmware não encontrado» antes de configurar o Tvheadend ou o Plex.

Passe o dispositivo para a aplicação separadamente

Depois de o anfitrião reconhecer um sintonizador DVB, uma aplicação Docker pode ainda precisar do firmware relevante /dev/dvb dispositivos mapeados no contentor. O firmware do anfitrião e o acesso do contentor são camadas separadas.

Não confunda o firmware do espaço do utilizador com o firmware do kernel

Algumas aplicações carregam os seus próprios modelos/ficheiros de dados, que podem ser montados num contentor. O firmware solicitado por um controlador do kernel é diferente.

O guia de resolução de problemas de hardware ajuda a estruturar o relatório.

Como funciona o carregamento de firmware no Linux

Quando um controlador do kernel inicializa o hardware, pode chamar o carregador de firmware do Linux e solicitar um blob identificado por um nome a partir dos caminhos de firmware do anfitrião. Se esse ficheiro estiver em falta, o controlador pode associar-se apenas parcialmente ou recusar-se a expor o nó final do dispositivo.

A {A("https://docs.kernel.org/driver-api/firmware/request_firmware.html","documentação do carregador de firmware do Linux","Compreenda como os controladores do kernel solicitam firmware ao sistema operativo anfitrião")} explica este mecanismo ao nível do anfitrião.

Confirme a existência do controlador antes de solicitar apenas o firmware

Um blob de firmware não pode ajudar se o ZimaOS não tiver o controlador do kernel para o dispositivo. Verifique dmesg e as informações do módulo para determinar se o controlador é carregado e, em seguida, solicita firmware, ou se o hardware não é suportado numa fase anterior da pilha.

O encaminhamento para o contentor vem depois da deteção pelo anfitrião

Para o Tvheadend, Plex ou outra aplicação, certifique-se primeiro de que o anfitrião expõe o sintonizador em /dev/dvb. Só depois configure os mapeamentos de dispositivos do Docker e as permissões das aplicações.

Volte a testar após cada atualização do ZimaOS

Se a IceWhale integrar o firmware numa versão, confirme que o sintonizador continua a inicializar após atualizações principais posteriores. Mantenha os IDs exatos do hardware nas suas notas para que os relatórios de regressão possam ser reproduzidos.

Compreenda o carregador de firmware do Linux

Os controladores do kernel solicitam frequentemente um blob de firmware identificado por um nome durante a inicialização do dispositivo. A documentação do carregador de firmware do Linux explica que isto acontece ao nível do kernel do anfitrião, antes de a maioria dos contentores de aplicações poder utilizar o dispositivo.

Se o controlador estiver presente, mas o blob solicitado estiver em falta, uma atualização do firmware integrada no sistema operativo é a solução mais adequada. Se o próprio controlador estiver em falta, adicionar apenas o blob não fará o hardware funcionar.

Perguntas frequentes

Posso instalar o linux-firmware no ZimaOS com o apt?

Não trate o ZimaOS como o Ubuntu; a posição da IceWhale era integrar o firmware necessário do anfitrião.

O Docker pode incluir o firmware em falta?

Não, se o kernel do anfitrião precisar dele antes de o dispositivo existir para o contentor.

O que devo verificar após a integração?

Utilize dmesg e a enumeração do hardware para confirmar uma inicialização sem problemas.

O firmware requer uma interface gráfica de desktop?

Não. O firmware do kernel/dispositivo funciona num servidor sem interface.