No meu CentOS, a yum update
traz o seguinte:
(6/38): iwl1000-firmware-39.31.5.1-62.el7_39.31.5.1-62.2.el7_5.noarch.drpm
(7/38): iwl105-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(8/38): iwl135-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(9/38): iwl2000-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(10/38): iwl2030-firmware-18.168.6.1-62.el7_18.168.6.1-62.2.el7_5.noarch.drpm
(11/38): iwl3160-firmware-22.0.7.0-62.el7_22.0.7.0-62.2.el7_5.noarch.drpm
etc.
Estes são os chamados "pacotes de firmware". Por exemplo, vamos encontrar alguns deles instalados:
rpm --query --all | grep firmware
e, em seguida, consulte suas informações:
rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch
e temos:
Summary : Firmware for Intel(R) Centrino Wireless-N 105 Series Adapters
Description :
This package contains the firmware required by the iwlagn driver
for Linux to support the iwl105 hardware. Usage of the firmware
is subject to the terms and conditions contained inside the provided
LICENSE file. Please read it carefully.
OK, bem.
Eu nem tenho esse tipo de hardware, pois esta é uma VM.
Então, pergunta:
O que os pacotes de firmware realmente fazem?
São instalações "one-shot" que executam um executável opaco (imediatamente? Na próxima inicialização?) Que verifica se o hardware existe, transmite o código binário no flash do hardware, se o hardware estiver lá (talvez ao perguntar ao usuário; no Windows em pelo menos, a intermitência do hardware está sempre repleta de janelas do DOS que aparecem, EULAs que precisam ser clicados e barras de progresso que precisam ser suportadas) e, em seguida, marca o pacote como "instalado".
Eles modificam o initramfs para que um blob binário seja carregado por um módulo do kernel ou algo aconteça na próxima inicialização?
fonte
Respostas:
O firmware carregável normalmente não é uma instalação "one-shot" que é gravada para piscar no dispositivo. O firmware é carregado no armazenamento volátil no dispositivo e precisa ser executado sempre que o computador host é ligado. O dispositivo não funciona antes do carregamento do firmware. O firmware pode ser gravado na RAM do dispositivo; nesse caso, contém código e dados para o processador no dispositivo, mas também pode ser um fluxo de bits que define a lógica de uma matriz lógica programável em campo (FPGA) ou alguma combinação de ambos.
Por outro lado, o firmware na memória flash normalmente é pré-programado nos dispositivos e só precisa ser reescrito se houver uma atualização do firmware pelo fabricante. Isso geralmente é feito por meio de outros mecanismos, como um executável separado, executado pelo usuário.
Existem algumas razões pelas quais os fabricantes desejam usar a RAM em vez da memória flash. Antes de tudo, torna possível projetar uma única versão do hardware, mas ao mesmo tempo entregar várias versões do produto (para diferentes áreas de mercado, por exemplo). Se for esperado que o produto seja atualizado em campo com freqüência, pode ser mais fácil lidar com as atualizações de firmware dessa maneira do que com o problema de criar um programa para atualizar a memória flash no dispositivo. Este programa deve ter uma interface de usuário agradável e ser projetado para ser o mais amigável possível, uma vez que normalmente é destinado ao usuário final do produto. Alguns dispositivos com armazenamento flash geralmente executam código da RAM de qualquer maneira e apenas copiam o conteúdo do flash para a RAM quando o dispositivo é iniciado,
fonte
Como Anthony Geoghegan menciona , o que é "firmware" na terminologia Linux? e Por que alguns drivers ainda exigem firmware? fornecer antecedentes úteis.
Pacotes de firmware são pacotes que contêm arquivos de firmware, ou seja , arquivos que contêm código destinado a ser executado em dispositivos ou conectados ao seu sistema - exemplos comuns incluem chipsets wifi, como no seu caso. Eles não são instaladores únicos e não se importam se o hardware está disponível. Os arquivos que eles disponibilizam são usados pelos drivers do kernel correspondentes, se o hardware relevante estiver presente: os drivers carregam o firmware na memória conectada ao hardware de destino, que executa o firmware para operar.
Esses pacotes de firmware não estão relacionados aos instaladores de firmware que você está pensando, que carregam atualizações de firmware na memória flash (o que só precisa ser feito quando uma atualização é necessária). Esse processo é realmente demorado, geralmente complexo e aparentemente cheio de perigos (pelo menos, se você basear suas impressões nos avisos do fabricante). Os pacotes de firmware incluídos nas distribuições Linux contêm firmware necessário sempre que o sistema é inicializado, porque é carregado na memória volátil.
fonte
Adicionando às já excelentes respostas.
Arquivos de firmware, também conhecidos como blobs binários proprietários, são carregados no firmware pelo menos no momento das (re) inicializações frias do dispositivo.
O dispositivo foi projetado para obter firmware na RAM, em vez de ter uma ROM + RAM para reduzir os custos de produção. Como exemplo, você tem alguns chipsets Wi-Fi Broadcom e chipsets de switch interno que funcionam dessa maneira.
Abordando o outro ponto da sua pergunta sobre o uso de arquivos de firmware em uma VM.
Como você está lidando com uma VM, não precisa de arquivos de firmware. Eles não serão carregados em nenhum lugar; muito menos arquivos de "firmware" Ethernet ou Wi-Fi.
Da mesma forma, considerando que o firmware não é necessário em um ambiente de VM, é uma grande idiossincrasia ter no Debian as dependências de um pacote genérico de arquivo de firmware no kernel do Linux.
fonte
firmware-linux-free
eirqbalance
- são inúteis na maioria das implementações de hoje em dia.)apt
para que ele não instala recomendações por padrão ...