A continuación, te explico los pasos para compilar, instalar y probar cualquier driver en Linux.
1. Configura el Entorno
Antes de comenzar, asegúrate de que tienes lo siguiente instalado en tu sistema:
- Kernel headers: Incluyen los archivos necesarios para compilar drivers.
sudo apt install linux-headers-$(uname -r) - Herramientas de desarrollo como
makeygcc:sudo apt install build-essential
2. Estructura del Proyecto
Organiza tus archivos en un directorio. Por ejemplo:
my_driver/
├── Makefile
├── driver.c
El archivo Makefile es necesario para compilar el driver, y su contenido debe ser algo como esto:
Makefile
obj-m += driver.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
3. Compilar el Driver
- Cambia al directorio donde están los archivos del driver:
cd /ruta/a/my_driver/ - Compila el driver usando
make:makeEsto generará un archivo con extensión.ko(Kernel Object). Por ejemplo, si el archivo fuente esdriver.c, el resultado serádriver.ko.
4. Instalar el Driver en el Sistema
- Carga del módulo en el kernel: Usa el comando
insmodpara cargar el módulo.sudo insmod driver.ko - Verifica que el driver esté cargado: Usa
lsmodpara listar los módulos cargados.lsmod | grep driverSi ves tu módulo en la lista, significa que fue cargado exitosamente. - Verifica mensajes del kernel: Usa
dmesgpara ver los mensajes de registro del kernel.dmesg | tailAquí deberían aparecer mensajes relacionados con tu driver, como los definidos enprintk().
5. Probar el Driver
Dependiendo del tipo de driver (de carácter, bloque, etc.), deberás interactuar con él de distintas maneras. A continuación, algunos ejemplos:
- Driver de carácter: Si registraste un dispositivo de carácter, debería aparecer un archivo especial en
/dev.ls /dev | grep nombre_del_dispositivoPuedes leer/escribir en el dispositivo:echo "Hello, driver!" > /dev/nombre_del_dispositivo cat /dev/nombre_del_dispositivo - Sysfs: Si tu driver usa
sysfs, deberías ver un directorio en/sysrelacionado con tu driver:ls /sys/class/nombre_del_dispositivo
6. Desinstalar el Driver
Para descargar el módulo del kernel, usa rmmod:
sudo rmmod driver
Luego, verifica que el módulo ya no esté cargado:
lsmod | grep driver
7. Limpiar Archivos Compilados
Si quieres eliminar los archivos generados durante la compilación, usa:
make clean
Ejemplo Completo
Supongamos que compilaste el driver char_device.c y generaste el archivo char_device.ko. Aquí está el flujo de comandos:
# Compilar el driver
cd /ruta/a/my_driver/
make
# Cargar el driver
sudo insmod char_device.ko
# Verificar que el módulo está cargado
lsmod | grep char_device
# Ver mensajes del kernel
dmesg | tail
# Probar el driver (en este caso, de carácter)
echo "Prueba" > /dev/char_device
cat /dev/char_device
# Descargar el módulo
sudo rmmod char_device
# Limpiar archivos compilados
make clean
Con este proceso, puedes compilar y ejecutar cualquier driver en Linux. Si tienes problemas específicos durante algún paso, ¡avísame y lo revisamos!

