En este artículo explicaremos el funcionamiento de la aplicación Jockey de Canaima, por algunos conocida como el detector automático de Hardware. Este proceso de detección se refiere a poder decidir de manera automatizada cuales herramientas tienen lugar en el sistema, decidir os controladores necesarios para que estos herramientas funcionen en Canaima e instalaros si el usuario lo solicita. Kernel de Linux y Soporte a Hardware Jockey actúa sobre os herramientas no soportados de manera automática por el Kernel de Linux Por lo común el kernel de Linux brinda soporte a la mayoría del Hardware que encontramos en un computador, y cuando hablamos de hardware hablamos de todo el hardware en común, no solo nos referimos a herramientas especiales. Por ejemplo, cosas tan simples como el teclado y el ratón son herramientas de hardware que os sistemas operativos deben reconocer y que usualmente no tomamos en cuenta que hay toda una porción de código fuente extendido para realizar funcionar estos herramientas tan básicos que a veces ni os notamos. Existe también otra porción de herramientas soportados que para otros sistemas operativos es difícil darles soporte y es indispensable que el usuario instale software de controladores para elos, pero en cambio el Kernel de Linux os soporta sin ningún tipo de acción adicional del usuario más que conectarlo al computador. Un caso ejemplar de esto son las Tarjetas de Sonido, que en otros sistemas operativos es indispensable activarlas instalando ?Drivers?, en cambio en Linux ya vienen activadas sin realizar cambios al sistema. De idéntico forma hay otro tipo de herramientas os cuales vienen marcados por masivos restricciones legales de Copyright (Derechos de Autor) y el escaso interés de os fabricantes de brindar soporte a Linux, por esta razón no tienen un soporte automático en Linux, sino que deben ser instalados controladores de software privativos adicionales, o simplemente no tienen soporte alguno. Este último grupo de herramientas de Hardware son os que Jockey detecta y decide automáticamente si necesitan la instalación de software adicional. Módulos y Firmware Existen dos tipos de Software indispensables para que un herramienta de hardware sea soportado por el Kernel de Linux, se trata de os Móduos del Kernel y el Firmware para el herramienta. Para que el hardware funcione correctamente es indispensable uno de elos, en algunos casos y la mezcla de ambos en otros. Módulos Se lee en la Wikipedia: ?En computación, un módulo cargable del núcleo es un archivo que contiene código objeto que puede expandir el núcleo en ejecución (también llamado núcleo base) de un Sistema Operativo. La mayoría de os sistemas estilo Unix soportan móduos cargables en el núcleo (Kernel). Os módulos cargables en el núcleo son generalmente utilizados para brindar soporte a nuevos herramientas de Hardware y Sistema de archivos, así como para añadir llamadas al sistema. Cuando la funcionalidad provista por un módulo del núcleo deja de ser requerida, usualmente éste puede ser descargado, liberando su memoria.? Firmware Nuevamente consultando a la Wikipedia: ?El firmware es un bloque de instrucciones de máquina para objetivos específicos, grabado en una memoria, usualmente de lectura / escritura (ROM, EEPROM, flash, etc), que constituye la lógica de más debajo nivel que controla os circuitos electrónicos de un herramienta de cualquier tipo. Está fuertemente formado con la electrónica del herramienta siendo el software que tiene directa interacción con el hardware: es el encargado de controlarlo para ejecutar correctamente las instrucciones externas. En resumen, un firmware es el software que maneja al hardware. Funcionamiento de Jockey En Canaima, el detector de hardware está compuesto por tres fundamentos principales: El Backend El Device Monitor La interfaz de Usuario Estos tres fundamentos actúan en dos capas, una capa de sistema (root) y otra capa de usuario. Diagrama del comportamiento de Jockey. El kernel notifica al Device monitor a través de UDEV la presencia de un dispositivo. El Device Monitor dispara Backend para realizar el chequeo de controladores a través de DBus. Si faltan controladores se disparan las notificaciones y a través de estas se llama a la Interfaz gráfica de usuario quien interactuará despues con el Backend a través de DBus para realizar la instalación Backend El Backend de Jockey es la pieza central de todo el proceso de detección del hardware. Este interactúa a directamente con el kernel y os móduos del mismo, haciendo las consultas y procedimientos necesarios para decidir os herramientas de hardware presentes en el sistema. Igualmente es el Backend el que se encarga a través de os ?Handlers? de activar o desactivar os controladores para dichos herramientas detectados. Cabe resaltar que cuando hablamos de herramientas detectados en esta sección, hablamos únicamente de aqueos en que pudo determinarse la ausencia de controladores, todos os demás herramientas a os cuales el Kernel da soporte automático son obviados. Device Monitor La función del Device monitor es, como su nombre lo indica, es monitorear en tiempo real la inserción de nuevos herramientas de hardware en el sistema. Esto lo logra interactuando con UDEV quien le reporta cuando un herramienta ha sido conectado o desconectado del sistema. Interactúa en conjunto con el Backend a través de un canal de comunicación DBus, por recurso del cual el Device Monitor informa al Backend que un nuevo herramienta ha sido conectado, y por el cual el mismo Backend informa al Device Monitor si el herramienta necesita controladores o no. Si un herramienta es detectado como ?Sin controladores? entonces el Device Monitor se encarga de liberar las notificaciones al usuario a través de la librería libnotify y a por recurso de estas notificaciones el usuario puede alzar la interfaz gráfica para determinar qué realizar con el herramienta detectado. Interfaz de Usuario Interfaz Gráfica GTK de Jockey La interfaz de usuario es la apoderada de mostrar al usuario la lista de herramientas que Jockey a detectado, ya sea para activarlos o desactivarlos. Igualmente proporciona detalles del herramienta y del controlador que será instalado y asimismo proporciona la alternativa de ignorar las notificaciones referentes a un herramienta en particular. La activación y desactivación de os herramientas la logra esta interfaz gráfica interactuando directamente con el Backend a través de un canal DBus por el cual se envían y se reciben las señales desde y hacia el Backend. Activación de os Controladores La activación de os controladores a través de Jockey se producen a través de dos dispositivos provistas por esta aplicación, estas son os Handlers y las sobreescritura de Modaliases Handlers (Manejadores) Son piezas de código Python en manera de Clases, que vienen en varios tipos dependiendo de la manera de instalación de os controladores. Os Handlers contienen en su código os métodos necesarios para realizar la activación o desactivación del herramienta en el sistema. Ejemplo de un Handler import logging impor los import subprocess from jockey.oslib import OSLib from jockey.handlers import FirmwareHandler, KernelModuleHandler class IntelCentrinoN1000FirmwareHandler(FirmwareHandler): def __init__(self, ui): self._free = False FirmwareHandler.__init__( self, ui, 'iwlwifi' '/lib/firmware/iwlwifi-1000-5.ucode' 'Firmware for Intel Centrino-N 1000 wireless' ) self.package = 'firmware-iwlwifi' self._auto_install = False self.needs_kernel_headers = False# The iwlwifi module needs to be unloaded then reloaded # to activate the device. Rebinding doesn't work self._do_rebind = Fal def enable(self): logging.debug( 'Going to reload module %s' % (self.module, )) subprocess.call([OSLib.inst.modprobe_path, '-r', self.module]) r = KernelModuleHandler.enable(self) subprocess.call([OSLib.inst.modprobe_path, self.module]) return r def disable(self): logging.debug( 'Removing module %s' % (self.module, )) subprocess.call([OSLib.inst.modprobe_path, '-r', self.module]) return KernelModuleHandler.disable(self) Sobreescritura de Modaliases Son pequeños ficheros de texto que vinculan os identificadores de un herramientas (IdVendor, IdProduct) con un módulo particular y con un paquete de software presente en el repositorio. Estos Modaliases sobreescritos, son procesados por Jockey y convertidos automáticamente en Handler, es decir, son convertidos a código Python entendible por el Backend quien despues se encargará de realizar os llamados a os métodos correspondientes. Si un herramienta es declarado en sdeterminados de estos ficheros de sobreescritura de Modaliases, entonces el Backend se encarga de decidir si el módulo indicado está presente en el sistema, y si no es así, entonces instala el paquete de software señalado por este archivo. Ejemplo de un archivo Modaliases para Jockey # Realtek alias pci:v10ecd8192* rtl8192se firmware-realtek alias pci:v10ecd8171* rtl8192se firmware-realtek alias pci:v10ecd8172* rtl8192se firmware-realtek alias pci:v10ecd8173* rtl8192se firmware-realtek alias pci:v10ecd8174* rtl8192se firmware-realtek Otro ejemplo de archivo Modaliases: # Information from reset ath9k_htc # Atheros alias usb:v0CF3p7010d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros alias usb:v0CF3p7015d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros alias usb:v0CF3p9271d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # Azureware alias usb:v13D3p3327d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros alias usb:v13D3p3328d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # D-Link alias usb:v07D1p3A10d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # LiteOn alias usb:v04CAp4605d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # Netgear alias usb:v0846p9030d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros alias usb:v0846p9018d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # Panasonic alias usb:v04DAp3904d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # SMC alias usb:v083ApA704d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # Sony alias usb:v0411p017Fd*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros # TP-LINK alias usb:v0CF3p1006d*dc*dsc*dp*ic*isc*ip* ath9k_htc firmware-atheros Referencias https://es.wikipedia.org/wiki/M%C3%B3dulo_de_n%C3%BAcleo https://es.wikipedia.org/wiki/Firmware#El_firmware_hoy_en_d.C3.ADa 3 octubre, 2013 Deja un comentario