En mi CentOS, yum update
aparece el siguiente:
(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.
Estos son los llamados "paquetes de firmware". Por ejemplo, busquemos algunos de ellos que están instalados:
rpm --query --all | grep firmware
y luego consulta su información:
rpm --query --info iwl105-firmware-18.168.6.1-62.2.el7_5.noarch
y obtenemos:
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.
Bueno está bien.
Ni siquiera tengo ese tipo de hardware, ya que esta es una VM.
Entonces, pregunta:
¿Qué hacen realmente los paquetes de firmware?
¿Son instalaciones de "una sola vez" que ejecutan un ejecutable opaco (inmediatamente? En el próximo arranque?) Que verifica si existe el hardware, bombea código binario en el flash del hardware si el hardware está allí (tal vez mientras pregunta al usuario; en Windows en por lo menos, el flasheo del hardware siempre está lleno de ventanas de DOS que aparecen, EULA a los que se debe hacer clic y barras de progreso que se deben soportar), y luego marca el paquete como "instalado".
¿Modifican los initramfs para que un módulo del núcleo cargue un blob binario o algo sucede en el próximo arranque?
fuente
Respuestas:
Por lo general, el firmware que se puede cargar no son instalaciones de "una sola vez" que están escritas para flashear en el dispositivo. El firmware se carga en un almacenamiento volátil en el dispositivo y debe hacerse cada vez que se enciende la computadora host. El dispositivo no funciona antes de cargar el firmware. El firmware se puede escribir en la RAM del dispositivo, en cuyo caso contiene código y datos para el procesador del dispositivo, pero también puede ser un flujo de bits que define la lógica de una matriz lógica programable en campo (FPGA), o alguna combinación de ambos.
Por otro lado, el firmware en la memoria flash generalmente está preprogramado en los dispositivos, y solo necesita reescribirse si hay una actualización del firmware del fabricante. Esto normalmente se realiza a través de otros mecanismos, como un ejecutable separado que ejecuta el usuario.
Hay algunas razones por las cuales los fabricantes quieren usar RAM en lugar de memoria flash. En primer lugar, permite diseñar una única versión del hardware, pero al mismo tiempo ofrecer varias versiones del producto (por ejemplo, para diferentes áreas del mercado). Si se espera que el producto se actualice con frecuencia en el campo, puede ser más fácil manejar las actualizaciones de firmware de esta manera que pasar por la dificultad de crear un programa para actualizar la memoria flash en el dispositivo. Este programa debe tener una interfaz de usuario agradable y estar diseñado para ser lo más fácil de usar posible, ya que normalmente está destinado a ser ejecutado por el usuario final del producto. Algunos dispositivos con almacenamiento flash a menudo ejecutan código de RAM de todos modos, y simplemente copian el contenido del flash a RAM cuando se inicia el dispositivo,
fuente
Como menciona Anthony Geoghegan , ¿Qué es el "firmware" en la terminología de Linux? y ¿Por qué algunos controladores aún requieren firmware? Proporcionar antecedentes útiles.
Los paquetes de firmware son paquetes que contienen archivos de firmware, es decir , archivos que contienen código destinado a ejecutarse en dispositivos conectados o conectados a su sistema; los ejemplos comunes incluyen chipsets wifi, como en su caso. No son instaladores únicos y no les importa si el hardware está disponible. Los archivos que ponen a disposición son utilizados por los controladores del kernel correspondientes, si el hardware relevante está presente: los controladores cargan el firmware en la memoria conectada al hardware de destino, que luego ejecuta el firmware para operar.
Estos paquetes de firmware no están relacionados con los instaladores de firmware en los que está pensando, que cargan las actualizaciones de firmware en la memoria flash (que solo debe hacerse cuando se requiere una actualización). Ese proceso es de hecho largo, a menudo complejo y aparentemente lleno de peligros (al menos, si basa sus impresiones en las advertencias del fabricante). Los paquetes de firmware incluidos en las distribuciones de Linux contienen el firmware que se necesita cada vez que se inicia el sistema, ya que se carga en la memoria volátil.
fuente
Agregando a las ya excelentes respuestas.
Los archivos de firmware, también conocidos como blobs binarios patentados, se cargan en su firmware al menos en el momento de las (re) botas en frío del dispositivo.
El dispositivo fue diseñado para obtener firmware en RAM en lugar de tener una ROM + RAM para reducir los costos de producción. Como ejemplo, tiene algunos chipsets wifi Broadcom y chipsets de conmutador interno que funcionan de esa manera.
Abordar el otro punto de su pregunta sobre el uso de archivos de firmware en una VM.
Como se trata de una VM, no necesita archivos de firmware. No se cargarán en ningún lado; mucho menos archivos de "firmware" de ethernet o wifi.
Del mismo modo, teniendo en cuenta que el firmware no es necesario en un entorno VM, es una gran idiosincrasia tener en Debian las dependencias de un paquete de archivos de firmware genérico en el kernel de Linux.
fuente
firmware-linux-free
yirqbalance
- son inútiles en la mayoría de las implementaciones hoy en día.)apt
para que no instale recomendaciones por defecto ...