Determinar y establecer la configuración de hardware

Conceptos Claves

  • Activar y desactivar periféricos integrados.
  • Configurar sistemas con o sin periféricos externos, tales como los teclados.
  • Diferenciar entre los diferentes tipos de dispositivos de almacenamiento masivo.
  • Establecer el ID de hardware adecuado para los diferentes dispositivos, en especial el dispositivo de arranque.
  • Conocer las diferencias entre los dispositivos de conexión en hotplug y coldplug.
  • Determinar los recursos de hardware de los dispositivos.
  • Herramientas y utilidades para mostrar información de hardware (por ejemplo, lsusb, lspci, etc)
  • Herramientas y utilidades para manipular los dispositivos USB
  • Comprensión conceptual de sysfs, udev, hald, dbus

Términos y utilidades

  • /sys
  • /proc
  • /dev
  • modprobe
  • lsmod
  • lspci
  • lsusb

Introducción

Una computadora moderna consta, como mínimo, de las siguientes partes:

Motherboard (Placa Madre): Es la placa principal que contiene los demás componentes fundamentales del sistema.

CPU: La unidad de central de procesamiento, también llamado procesador, es el componente principal de la computadora, interpreta las instrucciones contenidas en los programas y procesa los datos. Se ocupa de las operaciones básicas aritméticas, lógicas y de entrada y salida de datos.

Memoria RAM: Es la memoria de acceso aleatorio. La memoria RAM esta compuesta por dispositivos de almacenamiento en los cuales los datos almacenados pueden ser accedidos en cualquier orden.

Placa de red: También conocida como NIC, por sus siglas Network Interface Card. Es el dispositivo que permite conectar a la computadora con otra computadora, y de esta manera trabajar en red. Una sola computadora puede tener varias placas de red.

Puertos Seriales: Son interfaces físicas para conectar periféricos o terminales, transmiten los datos un bit a la vez

Puertos Paralelos: Al igual que los puertos seriales, sirven para conectar periféricos, se diferencian en que los datos aceptan conexiones de a varios bits en simultaneo.

Firmware

En el corazón de todo este hardware, se encuentra el firmware, que provee herramientas de configuración e inicia el proceso de arranque de la computadora. Entre las cosas que gestiona el firmware y una vez arrancado el sistema, Linux, se encuentran las interrupciones, las direcciones de I/O (Entrada/Salida), las direcciones DMA, el reloj de tiempo real e interfaces de disco ATA (Advanced Technology Attachment).

El sistema de archivos /proc

El sistema de archivos /proc es lo que se llama un sistema de archivos virtual, debido a que no contiene realmente archivos de algún medio de almacenamiento, sino que es creado en memoria RAM cuando se inicia el sistema. Sus archivos representan información que el kernel maneja. Estos archivos proveen información acerca del hardware, procesos en ejecución, etc. Muchas utilidades de Linux utilizan archivos en /proc para funcionar. Con el paso del tiempo, el filesystem /proc ha dejado de ser el lugar recomendado para incluir información acerca del hardware. Lo recomendable es usar sysfs (/sys).

Ejemplo

$ cat /proc/sys/fs/file-max

45372

El comando anterior nos muestra la cantidad de archivos que Linux pueda tener abiertos simultáneamente.

/etc/sysctl.conf

cat /proc/mounts

IRQs

Un IRQ es un pedido de interrupción(interruption request). Es una señal que se envía a la CPU solicitándole que suspenda la actividad que esta realizando y atienda un evento externo, como cuando se presiona una tecla del teclado. En x86, las interrupciones están numeradas del 0 al 15. Computadoras mas modernas, como sistemas x86-64, proveen más de 16 interrupciones.

Listado de interrupciones

0 - Reservado para uso interno

1 - Teclado

2 - Interrupciones en cascada para IRQs 8-15

3 - Segundo puerto RS-232 (COM 2 en Windows)

4 - Primer puerto RS-232 (COM 1 en Windows)

5 - Placa de Sonido o segundo puerto paralelo

6 - Controladora de discos floppy

7 - Primer puerto paralelo

8 - Reloj de tiempo real

9-11 - Abierto

12 - PS/2 Mouse

13 - procesador matemático

14 - Controlador ATA primario

15 - Controlador ATA secundario

Algunas interrupciones están reservadas para propósitos particulares, como el teclado y el reloj de tiempo real, otros tienen usos comunes, pero pueden ser reasignados, y otros quedan libres para ser asignados. La lista de interrupciones de puede leer desde /proc/interrupts.

Direcciones I/O (Direcciones de entrada y salida)

Las direcciones o puertos I/O son direcciones de memoria reservadas para la comunicación entre la CPU y dispositivos de hardware. Una vez que el sistema se encuentra corriendo, las direcciones de I/O, se pueden consultar desde el archivo /proc/ioports.

Direcciones DMA (Direct Memory Addressing)

DMA es un método de comunicación alternativo a los puertos I/O. En vez de tener a la CPU como intermediaria entre un dispositivo y la memoria, los DMA permiten a los dispositivos mandar datos directamente a la memoria, sin uso de la CPU. Esto permite tener menos requerimientos de uso de CPU para actividades de I/O. Para el uso de DMA, la arquitectura x86 implementa varios canales DMA, los cuales pueden usar usados por dispositivos. La información sobre los canales DMA se pueden encontrar en /proc/dma.

Dispositivos coldplug y hotplug

Los dispositivos hotplug son aquellos que pueden ser conectados mientras el sistema esta corriendo, mientras que los dispositivos coldplug precisan que el sistema se encuentre apagado para ser conectados y desconectados, corriendo el riesgo de dañarse si así no se hiciese. Generalmente los componentes internos de la computadora como la CPU, la memoria y los discos internos son coldplug. Y los dispositivos externos como dispositivos USB, firewire y Ethernet son hotplug.

Utilidades para detectar dispositivos hotplug

Demonio HAL: Las siglas HAL provienen Hardware abstraction layer, el demonio que opera esta capa de abstracción de hardware es llamado hald. Es un programa dentro del espacio del usuario y provee información sobre el hardware disponible. Se conecta a D-Bus y provee una API la cual las aplicaciones pueden utilizar para descubrir, monitorear e invocar operaciones en dispositivos.

D-Bus: Su nombre proviene de Desktop Bus. Es un demonio que permite a los programas en ejecución comunicarse entre sí y ser notificados de eventos. Ya sean eventos de otros procesos o de hardware, como por ejemplo la conexión de un disco USB. Es el vinculo que conecta a las aplicaciones con demonio HAL (hald).

udev: Tradicionalmente, Linux crea a los nodos de dispositivos como archivos en /dev . /dev se crea como un sistema virtual de archivos, que crea archivos de dispositivos dinámicamente a medida que los drivers de esto son cargados y descargados. Udev se puede configurar desde /etc/udev/udev.conf. Se puede crear reglas de Udev dentro del directorio /etc/udev/udev.d/. Las reglas son básicamente archivos dentro de este directorio, los cuales serán leídos por el demonio udev y utilizados cuando el Kernel notifica a udev sobre algún evento.

Sysfs (/sys) : El sistema virtual de archivos /sys exporta información de dispositivos. En este sistema de archivos virtual se guarda una base de datos con todos los dispositivos que están conectados al sistema. Los archivos dentro de /sys generalmente están compuestos por un solo valor.

Imagen 1

Configuración de placas PCI

El bus PCI, que es el bus de expansión mas estándar para dispositivos internos, fue diseñado con Plug and Play (PNP), por lo que generalmente estos dispositivos se configuran automáticamente. Igualmente existen comandos para el caso de que se requiera hacer alguna configuración manual, aunque esto no se da con frecuencia.

Comando lspci

Descripción

es una utilidad para la visualización de información sobre los buses PCI en el sistema y los dispositivos conectados a ellos.

Sintaxis

lspci [opciones]

Opciones mas comunes

-t Muestra un diagrama de árbol que contiene todos los buses, los puentes, los dispositivos y las conexiones entre ellos.
-vv Muestra mas más detalles.
-nn Muestra el proveedor PCI y los códigos del dispositivo como números y nombres.

Comando setpci

Descripción

Es la herramienta para configurar dispositivos pci.

setpci [opciones] dispositivos operaciones

Configuración de Dispositivos USB

USB es la forma mas popular para interfaces externas. USB permite conectar una variedad de dispositivos . Hay 3 versiones de USB, 1.1 , 2.0 y 3.0. Es el método preferido para conectar impresoras, discos externos, cámaras de fotos y muchos otros tipos de dispositivos.

Los dispositivos USB se adjuntan a una computadora a través de hubs . Se organizan en forma de árbol. El comando lsusb se puede utilizar para ver cómo los dispositivos están conectados físicamente a un sistema Linux.

$ lsusb -t

/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M

/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M

/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M

/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M

Módulos del Kernel

El hardware en Linux se maneja a través de drivers del kernel, muchos de los cuales vienen en forma de módulos de Kernel. Estos generalmente son archivos independientes, típicamente almacenados dentro de /lib/modules. Pueden ser cargados para proveer acceso a hardware y descargados para quitar el acceso. Usualmente, Linux carga los módulos cuando se inicia, pero módulos adicionales pueden ser cargados manualmente.

Se puede listar los módulos que se encuentran cargados actualmente usando lsmod, el cual no recibe opciones. Este comando nos muestra los módulos que cargados además de que otros programas o módulos se encuentran utilizándolos.

/etc/modules

/etc/modprobe.d/

Comando lsmod

Descripción

El comando lsmod muestra toda la información disponible acerca de los módulos cargados actualmente. Revisar de los módulos cargados es a menudo el primer paso en la identificación de posibles problemas, como los conflictos de controladores (sucede con bastante frecuencia con los controladores de dispositivos USB). Esta información también se puede encontrar en /proc/modules.

Sintaxis

lsmod [opciones]

Opciones

lsmod sólo tiene dos opciones, ninguna de ellas afecte a su funcionamiento.

Opción Abreviación Descripción
--help -h Muestra información de ayuda.
--version -V Muestra la versión.

Cargar módulos de kernel en tiempo de ejecución

Linux permite cargar módulos mediante 2 programas: insmod y modprobe.

Insmod carga un solo modulo a la vez, mientras que modprobe automáticamente carga los módulos dependientes. Por lo que generalmente es la herramienta preferida.

Comando modprobe

Sintaxis

modprobe [opciones] módulo [símbolo = valor ...]

Descripción

Como insmod, modprobe se utiliza para insertar módulos. De hecho, modprobe es un contenedor insmod y proporciona funcionalidad adicional. Además de la carga de módulos individuales, modprobe tiene la capacidad de cargar módulos junto con sus requisitos previos o todos los módulos almacenados en un directorio específico. El comando modprobe también puede eliminar los módulos cuando se combina con la opción -r.

De debe iniciar sesión como superusuario para insertar módulos.

Opciones de uso más frecuente

Opción Descripción
-a Carga todos los módulos. Cuando se utiliza junto con la opción -t tipo_modulo , se limita a los módulos en el directorio tipo_modulo.
-c Muestra la configuración del módulo completo, incluyendo valores por defecto y las directivas que se encuentran en /etc/modules.conf (o /etc/conf.modules en los sistemas más antiguos). La opción-c no se utiliza con cualquier otra opción.
-l Lista los módulos. Cuando se utiliza con la opción -t tipo_modulo, lista solamente los módulos en el directorio tipo_modulo. Por ejemplo, si tipo_modulo es net, a continuación se muestran los módulos en /lib/modules/kernel-version/kernel/net.
-r Remueve el módulo, similar a rmmod. Varios módulos pueden ser especificados.
-s Salida directa a syslog en lugar de stdout.
-t tipo_modulo Intenta de cargar varios módulos que se encuentran en el directorio tipo_modulo. Esta acción hardware prueba insertar módulos para un mismo tipo de hardware, como un adaptador de red (en cuyo caso tipo_modulo sería net, lo que representa /lib/modules/kernel-version/kernel/net).

Ejemplo 1

Instalar el módulo de sistema de archivos msdos:

modprobe msdos

Ejemplo 2

Remover los módulos fat y msdos del, asumiendo msdos no está en uso:

modprobe -r fat msdos

Ejemplo 3

Intenta cargar los módulos de red disponibles hasta que logra cargar alguno:

modprobe -t net

Ejemplo 4

Intento de cargar todos los módulos de red disponibles:

Modprobe –at net

Ejemplo 5

Lista de todos los módulos disponibles para su uso:

Modprobe -l

Ejemplo 6

Lista de todos los módulos en el directorio de red para las interfaces de red de 3Com:

Modprobe-lt net | grep 3c

Remover módulos

Para remover un modulo se utiliza el comando rmmod, que básicamente es el opuesto del comando insmod

results matching ""

    No results matching ""