Lo primero que tenemos que hacer cuando nuestro hardware no funcione es buscar si el módulo que necesitamos está incluído en las fuentes. Si no es así, en la documentación que lo adjunta nos indicará como hacerlo con la herramienta patch desde el directorio de las fuentes, aplicando un archivo que parchee las fuentes del kernel que luego deberemos compilar.
# patch -p1 < nvidia.patch
Es importante asegurarnos si no vamos a usar un kernel vanilla de que el driver se añadirá correctamente al kernel de nuestra distribución(la propia herramienta patch nos avisará si no sabe como añadirlo). Si lo vamos a compilar como módulo, se hace como cualquier programa, con la salvedad que el binario resultado tiene la extensión .o o .ko
El paquete encargado de cargar los drivers en linux es modutils y se basa en varios archivos de configuración y herramientas. Para ver los drivers que tenemos en nuestro sistema los buscamos bajo /lib/modules/VersionDelKernel/. Vamos a ver algunos componentes del sistema encargado de cargar los módulos en linux:
/etc/modules.conf
Archivo de configuración donde podemos definir algunas opciones que luego usaran los comandos de modutils por defecto. Algunas opciones interesantes que podemos definir en este archivo son:
alias nombre_alias modulo Con esto se crea un enlace para el sistema entre nombre_alias y módulo sumistrado, de modo que cuando el sistema tenga que acceder a nombre_alias, utilizará módulo para hacerlo. Los alias no se deben definir aquí directamente si no mediante el comando update-modules
path=ruta Esto indicará a las herramientas de modutils que busquen los drivers y mapas de dependencias en ruta en vez de los sitios por defecto(/etc/lib/modules/..., etc)
path[tipo]=ruta Indica a las modutils que los módulos de la clase tipo se deben de buscar en ruta en vez de en los sitios por defecto
/etc/modules.autoload.d/Kernel-2.x
El archivo /etc/modules.autoload.d/kernel-2.x(/etc/sysconfig/kernel en Red Hat y Suse) indica que módulos se deben cargar en el sistema cuando lo iniciamos. Si queremos añadir algún módulo, simplemente añadimos su nombre sin la extensión en una línea para que sea cargado por modprobe durante el boot. Podemos también pasarle argumentos en caso de que el driver los necesite para la carga. Una vez hecho esto, ejecutamos modules-update(o update-modules según distribución) para que los cambios se apliquen a /etc/modules.conf. Aquí deberemos incluir los módulos incluídos en el kernel como [M] si los necesitamos desde el inicio. Eso enlentecerá el sistema, por lo que si no se necesitan podemos escribir un sencillo script que nos cargue los módulos que necesitamos.
depmod
Los módulos también tienen dependencias, a menudo un módulo necesitan de otros módulos para ser cargados, que serán cargados por modprobe siguiendo las indicaciones de un archivo al estilo make generado por depmod, otra herramienta del paquete modutils. Al arranque del sistema operativo debe de haber incluída alguna línea en los scripts rc de arranque que ejecute /sbin/depmod -a para hacer accesibles a modprobe las dependencias de los módulos a cargar. Algunas opciones interesantes de depmod son:
-a Busca en todos los directorios especificados en el archivos de configuración opcional /etc/modules.conf
q No mostrar errores sobre símbolos(traducciones de direcciones de memoria a nombres de funciones) sin resolver que falten
a Muestra el nombre del módulo procesado
modprobe
Este comando se encarga de cargar y descargar módulos o paquetes de éstos. Los módulos también tienen dependencias, a menudo un módulo necesita de otros módulos para ser cargado, que serán cargados por modprobe siguiendo las indicaciones del archivo generado por depmod. Algunas opciones interesantes de modprobe son:
-a Cargar todos los módulos que coincidan con el sumistrado como argumento
l Listar todos los módulos que coincidan
r Quitar módulo con sus paquetes de dependencias
c Mostrar la configuración actual para las modutils
insmod
Comando análogo a modprobe, usaremos modprobe siempre que sea posible.
lsmod
Lista todos los módulos cargados en el sistema
El proceso de instalación del driver debe seguir estos pasos normalmente:
-Compilar el paquete del driver
Ejecutar make modules_install ( en el directorio de las fuentes ) para actualizar los símbolos -Cargarlo con modprobe o insmod
Añadir el módulo a /etc/modules.autolad.d/kernel-2.x si queremos que sea cargado al inicio del sistema
Ejecutar update-modules(o modules-update) para que registre el nuevo alias en el sistema añadiéndolo a /etc/modules.conf.