Módulo 2 - Navegación en el FHS y hardware

Ollama AI

  • Ollama ejecuta modelos LLM localmente sin internet.
  • No requiere claves, registro ni conexión externa.
  • Compatible con llama2, mistral, gemma y más.
  • Interacción por consola con CLI sencilla e intuitiva.
  • Usa CPU o GPU si están disponibles.
  • Descarga el modelo automáticamente al primer uso.
  • Elegida tras fin de soporte de Shell Genie.

Filesystem Hierarchy Standard

  • Estándar que organiza directorios en Linux.
  • Define estructura y contenido de cada carpeta.
  • Mejora coherencia entre diferentes distribuciones Linux.
  • No es obligatorio, pero sí ampliamente adoptado.

Directorios Principales

  • /: Se conoce como la raíz. Este es el directorio superior en la jerarquía.
  • /bin: Contiene archivos binarios (ejecutables) del sistema (archivos de configuración compilados de forma predeterminada para el sistema operativo) que se utilizan durante el arranque del sistema.
  • /boot: Contiene archivos para iniciar el sistema, incluidos el initramfs y kernel.
  • /dev: Contiene archivos de configuración de dispositivo (USB, discos duros, etc.)
  • /etc: Contiene archivos de configuración del sistema y de servicios que el usuario puede cambiar, como un servidor SSH.
  • /home: Tiene carpetas para cada usuario del sistema donde se almacenan los datos personales de cada usuario (Escritorio, Descargas, Documentos, etc).
  • /lib: Contiene bibliotecas (librerías) necesarias para iniciar el sistema y ejecutar otros binarios en /bin y /sbin. Así como los módulos del kernel.
  • /media: Contiene los sistemas de archivos de medios extraíbles como CD/DVD, disquetes, USB, etc.
  • /mnt: Contiene puntos de montaje de sistemas de archivos temporales.
  • /opt: Tiene paquetes de software de terceros (por ejemplo, Skype o Zoom).
  • /root: Este es el directorio "inicio" del superusuario root. Aquí es donde se almacenan los datos, archivos y carpetas del usuario root.
  • /tmp: Contiene datos, archivos basura o temporales creados por las aplicaciones.
  • /usr: Contiene bibliotecas y archivos de solo lectura utilizados por algunos programas.
  • /proc: Tiene sistemas de archivos de datos virtuales asociados con procesos en ejecución inmediatamente después del inicio del dispositivo, Ej: El sistema de archivos de la memoria.
  • /var: contiene datos variables que persisten, como logs de autenticación, impresión y/o registros del sistema en general.
  • /sbin: Contiene archivos binarios (ejecutables) con permisos de superusuario (root). Es un enlace simbólico a /usr/sbin.

Intérprete de Comandos

  • Estructura básica: comando, opciones y parámetros. COMANDO [OPCIONES] [PARÁMETROS]

    Ejemplo:

    ping [opc] [param]
    ping -a google.com
    
  • Comando indica la acción a ejecutar.

  • Opciones modifican cómo se ejecuta esa acción.

  • Parámetros definen sobre qué se aplica el comando.

  • Ejemplo: ping -a 8.8.8.8 correctamente.

  • Manual: usa man seguido del nombre.

  • Terminal sigue sintaxis estricta para funcionar.

Administración y Navegación en el FS

  • Permiten gestionar archivos y directorios fácilmente.
  • Facilitan moverse por rutas del sistema.
  • Ayudan a organizar la información de trabajo.
  • Son esenciales para tareas básicas en Linux.
  • Mejoran productividad al operar desde terminal.
  • Brindan control total del entorno de usuario.
  • Fundamentales para administración y automatización efectiva.

Comandos

  • mkdir: Permite crear directorios.
  • mkdir -p: Nos permite crear carpetas recursivamente.
  • touch: Permite crear archivos.
  • ls: Enlista el contenido del directorio actual.
  • ls -l: Enlista el contenido del directorio actual, mostrando los permisos, propietario, grupo propietario, tamaño y fecha de creación de los subdirectorios y archivos.
  • ls -a: Enlista los archivos y directorios ocultos en el directorio actual.
  • rmdir: Permite eliminar un directorio sin contenido.
  • pwd: Nos muestra la ruta absoluta actual.
  • cp: Permite copiar un archivo o directorio, desde un origen a un destino.
  • mv: Permite mover un archivo o directorio, desde un origen a un destino. También permite cambiar el nombre de archivos/directorios.
  • rm: Permite eliminar archivos.
  • rm -r: Permite borrar un directorio y su contenido recursivamente.
  • cd: Permite ingresar a un directorio.
  • cd .. : Permite retroceder entre directorios.
  • nano: Permite editar archivos de texto. Crea el archivo si no existe.
    • En Linux el símbolo ^ significa Ctrl.
    • Para guardar el archivo usamos Ctrl + O
    • Para salir de la edición usamos Ctrl + X
  • cat: Permite visualizar el contenido de un archivo de texto.
  • tree: Muestra la estructura de archivos y directorios en forma de árbol a partir de la ubicación actual.

Rutas absolutas y relativas

  • Ruta absoluta inicia desde el directorio raíz.
  • Muestra ubicación completa del archivo o directorio.
  • Ej: root@juan-vm:/home/juan# touch /home/juan/Desktop/Lab01/dir01/file01
  • Ruta relativa depende del directorio actual activo.
  • No requiere especificar toda la ruta completa.
  • Ej: root@juan-vm: /home/juan/Desktop/Lab01/dir01/ # touch file01

Significado de archivos por su color

El comando 'ls' muestra archivos y directorios con colores distintos, ayudando a identificar diferentes tipos de ellos en la ubicación actual.

  • Azul: El texto azul sin subrayar es un directorio.
  • Cyan: Enlaces simbólicos.
  • Verde: El texto verde sin subrayar es un archivo ejecutable.
  • Amarillo: El texto amarillo sin subrayar son las interfaces de comunicación de los dispositivos o los propios dispositivos
  • Magenta: El texto magenta sin subrayar es una imagen o un socket.
  • Rojo: El texto rojo sin subrayar son archivos comprimidos.

Selección y configuración del hardware

  • IRQ, DMA y E/S gestionan hardware.
    • IRQ (Solicitud de Interrupción): Esta es una señal enviada al CPU para procesar una solicitud de hardware (teclado, mouse, etc). Asignado a /proc/interrupts
    • DMA (Acceso directo a memoria): Permite que el dispositivo acceda a un "fragmento" de la memoria RAM para operaciones de lectura y escritura. Archivo: /proc/dma
    • Direcciones de E/S: Estos son puertos o interfaces lógicas creadas para permitir que los dispositivos realicen operaciones de lectura y escritura. Archivo: /proc/ioports
  • Usan archivos en /proc para monitoreo.
  • Facilitan comunicación entre dispositivos y sistema.
  • Mejoran eficiencia en operaciones de entrada/salida.
  • Cold/Hot Plug define cuándo conectar dispositivos.
  • /proc muestra procesos y recursos en tiempo real.
  • /sys permite ver y configurar hardware del sistema.
  • Sysfs y /proc son sistemas de archivos virtuales.
  • D-Bus (Desktop Bus) permite comunicación entre apps y kernel.
  • Facilita notificaciones y eventos en escritorios Linux.
  • udev gestiona dispositivos como en Windows el administrador de dispositivos.
  • Detecta, configura y administra hardware automáticamente.
  • PCI conecta tarjetas de red, sonido y video.
  • Es un estándar físico en computadoras modernas.
  • Comandos revelan detalles sobre hardware instalado.
  • Información se encuentra en /dev, /proc y /sys.

Comando lspci

El comando lspci es fundamental para identificar y diagnosticar dispositivos conectados a los buses PCI del sistema, permitiendo conocer detalles como el tipo de dispositivo, fabricante, función, y versión de firmware. Es clave para tareas de soporte, configuración y resolución de problemas de hardware.

  • 00: Identificador de bus (conexión física).
  • 01: Identificador de dispositivo.
  • 0: Identificador de función.
  • Tipo de dispositivo.
  • Fabricante.
  • Nombre del dispositivo.
  • Número de revisión: Define la versión del firmware instalado.

lspci -s [ids] -k: Muestra información de un dispositivo PCI específico y sus drivers del kernel.

Ej: lspci -s 00:00.0 -k

lspci -v: Muestra información detallada de cada dispositivo PCI asociado al sistema. Ej: lspci -v

Comando lsusb

El comando lsusb permite visualizar todos los dispositivos USB conectados al sistema. Es útil para identificar el tipo de conexión, número de bus, número de dispositivo, fabricante e información del proveedor. Ideal para diagnóstico y verificación de hardware USB.

  • Bus: Tipo de conexión (bus).
  • 001: Número de bus.
  • Device 001: Número de dispositivo.
  • ID 1d6b:0002: ID del dispositivo (fabricante).
  • Linux Foundation 2.0 root hub: Vendor name

lsusb -v: Muestra información detallada de cada dispositivo USB.

lsusb -v -d [ID-number]: Muestra información detallada de un dispositivo específico.

  • Módulo permite comunicación entre hardware y sistema.
  • Es el equivalente a un driver en Linux.
  • Actúa como traductor entre dispositivo y kernel.
  • Facilita funcionamiento correcto del hardware instalado.
  • Es fundamental mantener los módulos actualizados.
  • Mejora seguridad y compatibilidad con dispositivos nuevos.
  • Parte esencial de la arquitectura del sistema operativo.
  • Driver conecta sistema operativo con el dispositivo.
  • Firmware controla funciones internas del hardware directamente.
  • Driver se ejecuta desde el sistema operativo.
  • Firmware reside dentro del propio dispositivo físico.

Comando lsmod

El comando lsmod es esencial para visualizar qué módulos (drivers) están cargados actualmente en el kernel de Linux.

Permite verificar su nombre, tamaño y qué otros módulos los están utilizando, lo cual es clave para diagnosticar problemas de hardware o conflictos entre controladores.

  • Module: Nombre del módulo.
  • Size: Muestra el tamaño del módulo en bytes.
  • Used by: Indica cuáles y/o cuántos módulos están usando el módulo especifico.

modinfo: Muestra información de un módulo, autor, licencia, identificación, dependencias, entre otros parámetros (.ko significa Kernel Object). Ej: modinfo vboxvideo

modprobe -r: Permite eliminar un módulo del kernel. Ej: modprobe -r tls

Blacklisting

  • El blacklisting de módulos permite evitar que ciertos drivers problemáticos se carguen automáticamente al iniciar el sistema.

  • Evita conflictos bloqueando módulos desde blacklist.conf y actualizando con update-initramfs -u.

  • Blacklist impide carga automática de ciertos módulos.

  • update-initramfs -u aplica cambios del blacklist.

  • Algunos módulos pueden cargarse por dependencias.

  • Módulos bloqueados pueden aparecer listados en lsmod.

  • Archivo blacklist.conf ya incluye exclusiones comunes.

    1. Para agregar un módulo a la lista negra, edita el archivo /etc/modprobe.d/blacklist.conf.
    2. Añade la línea "blacklist nombre_del_módulo".
    3. Después, actualiza el initramfs con “sudo update-initramfs -u”.

Comandos y rutas importantes

  • /proc/cpuinfo: Información detallada del procesador.
  • /proc/meminfo: Datos sobre uso de memoria RAM.
  • /proc/ioports: Registra puertos de entrada y salida.
  • /proc/bus/: Contiene info de interfaces PCI y USB.
  • update-pciids: Actualiza base de datos de dispositivos.
  • usb-devices: Muestra información de hardware USB conectado.

Notas de los videos

El File System Hierarchy Standard (FHS) estandariza la estructura de directorios en Linux como un árbol genealógico que parte del directorio raíz (/), contiene todos los demás (/bin, /boot, /etc, /home).

Su objetivo es mantener consistencia entre distribuciones, no es obligatorio, pero común en distribuciones.

Directorios Clave

Directorio      Descripción                                                                                                                                                                                                                                                              
/            Directorio root o raíz, es el directorio superior de toda la jerarquía que contiene todos los demás directorios del sistema.                                                                                                                                              
/bin          Contiene ejecutables esenciales del sistema (comandos como ls, cd). No almacena aplicaciones de usuario (Firefox, etc.).                                                                                                                                                
/boot          Almacena archivos críticos para el arranque: el kernel (vmlinuz), el initramfs y el gestor de arranque (grub).                                                                                                                                                      
/dev          Contiene archivos especiales que representan dispositivos físicos (discos, USBs). Es el punto donde el hardware se "presenta" al sistema operativo. Solo sirve para mapear dispositivos, no para acceder directamente a su contenido. Para eso se requiere montarlos.
/etc          Contiene archivos de configuración del sistema operativo y de servicios instalados.                                                                                                                                                                                      
/home          Almacena carpetas personales de cada usuario del sistema, con sus propios archivos y configuraciones.                                                                                                                                                                    
/root          Directorio personal del superusuario root. Por seguridad, no se encuentra dentro de /home.                                                                                                                                                                                
/lib          Contiene librerías (software pequeño) que otros programas utilizan para funcionar.                                                                                                                                                                                        
/mnt          Punto de montaje temporal para dispositivos de almacenamiento (USB, CD-ROM, etc.).                                                                                                                                                                                        
/opt          Almacena aplicaciones opcionales de terceros (Skype, Zoom, VirtualBox Guest Additions).                                                                                                                                                                                  
/tmp          Almacena archivos temporales creados por aplicaciones en ejecución. Se limpian fácilmente.                                                                                                                                                                                
/var          Contiene datos variables y logs del sistema que persisten entre reinicios, incluidos registros de eventos y errores.                                                                                                                                                      
/bin y /sbinContienen comandos ejecutables. bin es para usuarios generales, sbin solo para el superusuario (root).                                                                                                                                                                  

Concepto de Montaje de Sistemas de Archivos

Para acceder al contenido de un dispositivo de almacenamiento, el sistema debe "montar" la partición en un directorio. Esto se hace con el comando mount, vinculando un dispositivo a una ruta accesible del sistema.

Ejemplo:

mount /dev/cdrom /mnt/cdrom

Permisos y Usuarios

  • root: Es el superusuario con permisos totales. Su directorio home está en /root (por razones de seguridad, no en /home/root).
  • Los comandos en /sbin solo pueden ejecutarlos usuarios con privilegios de root.

Línea de Comandos en Linux

La línea de comandos (también llamada terminal, consola o shell) es una interfaz basada en texto donde los usuarios interactúan directamente con el sistema operativo escribiendo comandos. A diferencia de la interfaz gráfica (con ventanas e iconos), aquí se ejecutan instrucciones mediante texto.

Estructura de Comandos en Linux

Sintaxis: comando [opciones] [parámetros]

  • Opciones: Modifican el comportamiento del comando (ej: -l, -h), son opcionales
  • Parámetros: Especifican sobre qué actúa el comando (ej: nombre de archivo/carpeta)
  • Linux es case-sensitive: mkdir ≠ MKDIR. Los comandos y sus opciones deben escribirse exactamente como están definidos.

Características Importantes

  • Los archivos sin extensión en Linux se consideran archivos de texto por defecto.

  • Los archivos se pueden ocultar colocando un punto (.) al inicio del nombre.

  • El 60% del trabajo en Linux es leer y comprender mensajes de error; el 40% es conocimiento técnico.

  • Los manuales del sistema siempre se puede consultar con man o --help.

  • Al trabajar con rutas largas, se puede usar la tecla Tab para autocompletar nombres de directorios y archivos.

Comandos Básicos

Comando          Función                                                                                
cd            Cambia de directorio (ej. cd / entra a raíz); muestra ruta actual antes del #.        
ls            Lista contenido del directorio actual.                                                  
mkdir          Crear directorios                                                                      
cd            Cambiar de directorio                                                                  
cd ..          Ir al directorio anterior                                                              
ls            Listar contenido del directorio actual                                                  
ls -l          Listar con información detallada (permisos, propietario, tamaño, fecha)                
ls -h          Mostrar tamaños en formato legible (KB, MB, GB)                                        
ls -a          Mostrar archivos ocultos (que comienzan con punto)                                      
touch          Crear archivos vacíos                                                                  
.nombrearchivoCrear archivos ocultos (con punto al inicio)                                            
mount          Montar un dispositivo en una ruta del sistema (ej: mount /dev/cdrom /mnt/cdrom)    
fdisk          Herramienta para particionar discos desde el terminal                                  
ping          Enviar mensajes de prueba a un host para verificar conectividad (ej: ping google.com)
ping -a        Ejecutar ping con sonido audible en cada respuesta recibida                            
rmdir          Eliminar directorios vacíos                                                            
rm            Eliminar archivos                                                                      
rm -r          Eliminar directorios con contenido recursivamente                                      
man comando    Ver manual de cualquier comando                                                        
comando --helpResumen rápido de opciones de un comando                                                

Comandos de Navegación y Visualización

ComandoFunción
pwdMuestra la ruta completa del directorio actual (útil para scripts)
cpCopia archivos o directorios (clona un archivo)
cp archivo.txt archivo-copia.txtCopiar archivo con otro nombre en la misma ubicación
cp /ruta/origen/archivo /ruta/destino/Copiar archivo a otra ubicación
cp /ruta/origen/archivo /ruta/destino/nuevo-nombreCopiar a otra ubicación con diferente nombre
mvMueve o renombra archivos y directorios
mv archivo.txt /ruta/destino/Mover archivo a otra ubicación
mv archivo-viejo.txt archivo-nuevo.txtRenombrar archivo (mover en misma ubicación)
catVisualiza el contenido de un archivo en pantalla
cat -nVisualiza contenido con números de línea
nano nombre-archivoAbre editor de texto simple para modificar archivos
CTRL + O (en nano)Guarda cambios (writeout) - permite cambiar el nombre del archivo
CTRL + X (en nano)Salir del editor nano
mkdir folder1 folder2Crea múltiples directorios al mismo nivel
mkdir -p folder1/folder2/folder3Crea directorios anidados de forma recursiva  (en cadena, uno dentro de otro)
treeMuestra la estructura de directorios de forma gráfica (requiere instalación)

Manipulación Avanzada de Archivos

  • Cuando se copia un archivo a la misma ubicación, debe llevar un nombre diferente
  • Cuando se copia a otra ubicación, puede mantener el mismo nombre
  • El comando mv también sirve para renombrar archivos (es un movimiento en la misma ubicación)
  • Para mover múltiples archivos se puede usar: mv archivo1 archivo2 /ruta/destino/
  • Usando &&: mv archivo1 /ruta/ && mv archivo2 /ruta/ (ejecuta uno después del otro)

Buenas Prácticas

  • Crear copias de respaldo (.backup) antes de editar archivos críticos de configuración
  • Usar rutas relativas cuando es posible (más corto)
  • Usar rutas absolutas cuando se trabaja desde ubicaciones diferentes
  • Utilizar autocompletar con Tab para evitar errores de escritura
  • Usar cd ../ para retroceder múltiples directorios: cd ../../ (retrocede dos niveles)

Concepto de Rutas: Absoluta vs Relativa

Ruta Absoluta: Especifica la ubicación completa desde la raíz del sistema

  • Ejemplo: /home/usuario/documentos/archivo.txt (empieza con /)
  • Se usa cuando el archivo está en una ubicación diferente a la actual

Ruta Relativa: Especifica la ubicación en relación con el directorio de trabajo actual.

  • Ejemplo: Si estoy en /home/usuario/, la ruta relativa a documentos/archivo.txt sería justamente esa.
  • No comienza con /

Hardware en Linux

IRQ (Interrupt Request - Solicitud de Interrupción)

  • Señales que envían los dispositivos al CPU cuando se conectan al sistema.
  • Le indica al CPU: "Estoy conectado, asígneme recursos".
  • Cada dispositivo usa un canal (IRQ0, IRQ1, IRQ2, etc.).
  • Se visualiza en: /proc/interrupts

DMA (Direct Memory Access - Acceso Directo a Memoria)

  • Componente que asigna memoria RAM a los dispositivos.
  • El CPU le solicita al DMA que asigne recursos de memoria
  • Se visualiza en: /proc/dma
  • Ejemplo: Asigna 256 MB de RAM a una USB conectada

Tipos de Dispositivos

  • Coldplug (Conexión en Frío): Solo se conectan con el sistema apagado. Ejemplos: memoria RAM, procesador (CPU), tarjetas madre

  • Hotplug (Conexión en Caliente): Se conectan con el sistema encendido. Ejemplos: USB, discos duros externos, cámara web, mouse, teclado, monitores externos

Directorios del Sistema: /proc y /sys

  1. /proc (Procesos y Recursos):

    • Contiene información dinámica y en tiempo real sobre el estado del sistema, procesos en ejecución y recursos del kernel (el kernel coloca aquí la información del sistema).

    • Almacena información sobre CPU, memoria, dispositivos

    • Es un espejo de la memoria del sistema. Los cambios aquí son volátiles (se pierden al reiniciar o apagar).

    • Archivos importantes:

      • /proc/interrupts: Canales de IRQ
      • /proc/dma: Canales de acceso directo a memoria
      • /proc/cpuinfo: Información del procesador
      • /proc/meminfo: Información de memoria RAM
      • Cada proceso en ejecución tiene una subcarpeta con su PID (Process ID), que contiene datos específicos de ese proceso.
  2. /sys (Sistema de Archivos del Sistema):

    • Contiene información y configuraciones sobre el hardware y controladores del sistema.

    • Sirve como interfaz para interactuar con el kernel y modificar ciertos parámetros del hardware o del sistema. Ejemplo: Control de brillo de pantalla en /sys/class/backlight/.

    • Los cambios aquí pueden ser más persistentes y están más orientados a la configuración del dispositivo.

Sistemas de Comunicación

  • D-BUS (Sistema de Notificaciones) es una interfaz de comunicación interna del sistema operativo que permite a las aplicaciones mostrar mensajes y notificaciones en el escritorio. Solo aplicable a distribuciones con interfaz gráfica. Ejemplos de notificaciones: dispositivos USB conectados, Firefox listo para ejecutarse, disco lleno

  • UDEV (Administrador de Dispositivos) Sistema que detecta, configura y administra automáticamente todos los dispositivos de hardware conectados al sistema. Es el equivalente en Linux al Administrador de Dispositivos de Windows.

    Funciones principales:

    • Detecta cuando se conecta un nuevo dispositivo al sistema
    • Asigna automáticamente los drivers apropiados al dispositivo
    • Crea el mapeo del dispositivo dentro del directorio /dev, (ej: /dev/sdb)
    • Administra el hardware automáticamente
    • Elimina el mapeo cuando los dispositivos se desconectan

    Proceso de funcionamiento:

    1. Se conecta un dispositivo (ej: USB)
    2. Se asignan recursos (IRQ, CPU, memoria DMA)
    3. UDEV identifica el dispositivo y asigna drivers
    4. UDEV crea el archivo de mapeo en /dev
    5. El sistema operativo reconoce el dispositivo conectado

PCI (Peripheral Component Interconnect) - Tipo de conexión física estándar en la tarjeta madre para conectar dispositivos.

Dispositivos que se conectan por PCI: Tarjetas gráficas/de video, tarjetas de red, tarjetas de sonido, dispositivos de almacenamiento M.2

ComandoFunción
lspciLista información de todos los dispositivos PCI conectados a la tarjeta madre
lspci -vMuestra información detallada (verbose) de dispositivos PCI
lspci -kMuestra el kernel driver/módulo asignado a cada dispositivo PCI
lspci -vkCombina ambos parámetros para máxima información
lspci -s [ID]Muestra información de un dispositivo específico (show)
lspci -s [ID] -kMuestra drivers/módulos del kernel que usa el dispositivo
lspci | grep [término]Filtra resultados para buscar un dispositivo específico
lsusbLista información de todos los dispositivos USB conectados al sistema
lsusb -vMuestra información detallada (verbose) de dispositivos USB
lsusb -kMuestra el kernel driver asignado a cada dispositivo USB
lsmodLista módulos/drivers cargados en el kernel

Los comandos lspci, lsusb y lsmod obtienen información de tres directorios principales:

DirectorioInformaciónTipo de Datos
/devPunto de conexión entre dispositivos y el SOArchivos de mapeo de dispositivos
/procInformación en tiempo real de dispositivosDatos dinámicos (se pierden al apagar)
/sysArchivos de configuración de dispositivosDatos editables/modificables

Drivers/Módulos

Software que actúa como traductor entre un dispositivo de hardware y el sistema operativo

  • En Linux: Se llaman "módulos" (en Windows se llaman "drivers")

  • Permiten la comunicación efectiva entre dispositivos que "hablan idiomas diferentes"

    • Ejemplo: Impresora ↔ Computadora
  • Sin el driver/módulo correcto, el dispositivo no funciona o funciona con errores

Diferencia entre Driver y Firmware

  • Driver/Módulo: Software instalado en el sistema operativo que facilita la comunicación entre el dispositivo y el SO.

  • Firmware: Software integrado en el dispositivo mismo que controla su funcionamiento básico

  • Relación: El driver permite la comunicación entre el firmware del dispositivo y el sistema operativo

Concepto de driver o módulo

  • En Linux, un driver se conoce como módulo.

  • Los módulos permiten la comunicación entre el sistema operativo (kernel) y los dispositivos de hardware (impresora, red, video, etc.).

  • Aunque los módulos están instalados en el sistema, solo funcionan cuando están cargados en el kernel.

  • El kernel es el núcleo o corazón del sistema operativo, donde se cargan y ejecutan los módulos.

  • Archivo .ko (Kernel Object): La extensión de los archivos que contienen los módulos/drivers.

Comando lsmod

  • Permite listar los módulos que están cargados actualmente en el kernel, es decir, los que están en uso.

  • No muestra todos los módulos instalados, solo los activos.

  • Que un módulo esté instalado no significa que esté en uso.

  • lsmod solo muestra los que están cargados en el kernel.

  • Obtiene información desde /proc, /sys y /dev.

  • Información que muestra:

    • Columna 1: Nombre del módulo
    • Columna 2: Tamaño en bytes
    • Columna 3 (Used By): Número y dispositivos/módulos que lo están usando
    • Importante: Un módulo puede ser usado por otro módulo (dependencias)
    • Ejemplo: El módulo DRM_VRAM_HELPER es utilizado por VBOXVIDEO
  • Los módulos instalados se encuentran en: /lib/modules/[kernel_version]/kernel/drivers/

  • Los archivos de módulos tienen extensión .ko (Kernel Object).

Versiones del kernel

  • Un sistema puede tener varios kernels instalados, pero solo uno activo.

  • El kernel activo se identifica con: uname -r

  • La versión activa debe coincidir con el directorio en /lib/modules/.

  • Los kernels instalados funcionan como alternativas, no como backups.

Comando modinfo

  • modinfo significa Module Information.

  • Se utiliza para obtener información detallada de un módulo específico.

  • Muestra:

    • Ruta absoluta del archivo .ko
    • Licencia
    • Descripción del driver
    • Autor/desarrollador
    • Información técnica adicional
    • Comando: modinfo <nombre_del_modulo> (ej: modinfo e1000)
  • Antes de usar modinfo, es necesario conocer el nombre del módulo (usando lsmod).

Comando modprobe -r

  • modprobe -r permite remover un módulo del kernel,  pero NO lo desinstalla del sistema.

  • Solo deja de estar en uso durante la sesión actual.

  • Si el sistema se reinicia, el módulo se vuelve a cargar automáticamente.

  • Un módulo no puede ser removido si está siendo utilizado por otro módulo o dispositivo.

  • Ejemplo: sudo modprobe -r pata_acpi

Eliminación completa de un módulo

Para eliminar completamente un módulo del sistema se requieren tres pasos:

  1. Eliminar el archivo .ko

    • rm <ruta_absoluta_del_archivo.ko> (la ruta se obtiene con modinfo)
  2. Actualizar el backup de módulos

    • update-initramfs -u (esto regenera la imagen de arranque inicial sin el módulo eliminado).
  3. Reiniciar el sistema

    • reboot , es obligatorio para que el kernel cargue sin ese módulo. Sin reinicio no hay forma de aplicar completamente el cambio.

Initramfs y respaldo de módulos

  • Linux mantiene un backup de módulos (initramfs).

  • Aunque un módulo sea eliminado del sistema, puede cargarse desde ese respaldo.

  • Al actualizar el initramfs, el sistema reconoce los cambios reales.

  • Por seguridad, el sistema siempre arranca usando este respaldo.

Consideraciones prácticas

  • Eliminar módulos críticos (como ACPI o drivers esenciales) puede provocar fallos graves.

  • Este procedimiento es didáctico y de laboratorio, no común en entornos productivos.

  • En la práctica real, raramente se elimina un módulo manualmente.

  • En máquinas virtuales, un snapshot puede restaurar el sistema, pero eso es a nivel de virtualización, no del sistema operativo.

Blacklisting de Módulos

El blacklisting es un mecanismo que permite evitar que un módulo (driver) se cargue automáticamente en el kernel al arrancar, sin eliminarlo del sistema. Útil para módulos problemáticos, vulnerables o reemplazados.

Proceso:

  1. Editar el archivo: /etc/modprobe.d/blacklist.conf
  2. Agregar línea: blacklist [nombre_módulo]  (ej: blacklist psmouse)
  3. Actualizar initramfs: update-initramfs -u
  4. Reiniciar el sistema
    • Ejemplo Práctico en Clase: Se puso en lista negra el módulo psmouse (driver del mouse), y tras reiniciar, el cursor dejó de funcionar dentro de la máquina virtual, demostrando el efecto.

Diferencia entre blacklisting y eliminar un módulo

Acción¿Se carga al reiniciar?¿Se elimina el archivo?¿Requiere reinicio?
modprobe -rSíNoNo (temporal)
Eliminar .koNoSíSí
BlacklistingNoNoSí

Blacklisting es la forma recomendada de desactivar un driver en Linux sin eliminarlo, permitiendo control sobre qué módulos se cargan en el kernel y manteniendo la estabilidad del sistema.

Built with LogoFlowershow