Linux
          Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Contáctenos
  • LPI.org
101.1 Lección 1

Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
  1. Tema 101: Arquitectura del Sistema
  2. 101.1 Determinar y configurar los ajustes de hardware
  3. 101.1 Lección 1

101.1 Lección 1

Certificación:

LPIC-1

Versión:

5.0

Tema:

101 Arquitectura del Sistema

Objetivo:

101.1 Determinar y configurar hardware

Lección:

1 de 1

Introducción

Desde los inicios de la informática, los fabricantes de computadoras personales y de negocios han integrado una variedad de partes de hardware en sus máquinas, que a su vez deben ser compatibles con el sistema operativo. Eso podría ser abrumador desde la perspectiva del desarrollador del sistema operativo, a menos que la industria establezca estándares para los conjuntos de instrucciones y la comunicación del dispositivo. Al igual que la capa de abstracción estandarizada proporcionada por el sistema operativo a una aplicación, estos estándares facilitan la escritura y el mantenimiento de un sistema operativo que no está vinculado a un modelo de hardware específico. Sin embargo, la complejidad del hardware subyacente integrado a veces requiere ajustes sobre cómo deben exponerse los recursos al sistema operativo, para que pueda instalarse y funcionar correctamente.

Algunos de estos ajustes pueden realizarse incluso sin un sistema operativo instalado. La mayoría de las máquinas ofrecen una utilidad de configuración que se puede ejecutar cuando se enciende la máquina. Hasta mediados de los 2000, la utilidad de configuración se implementó en el BIOS (Basic Input/Output System), el estándar para el firmware que contiene las rutinas de configuración básicas que se encuentran en las placas base x86. Desde finales de la primera década de los 2000, las máquinas basadas en la arquitectura x86 comenzaron a reemplazar el BIOS con una nueva implementación llamada UEFI (Unified Extensible Firmware Interface), que tiene características más sofisticadas para la identificación, prueba, configuración y actualizaciones de firmware. A pesar del cambio, no es raro llamar a la utilidad de configuración BIOS, ya que ambas implementaciones cumplen el mismo propósito básico.

Note

Más adelante encontrará  un tema que trate en detalles  las similitudes y diferencias entre BIOS y UEFI.

Activación de Dispositivos

La utilidad de configuración del sistema se presenta después de presionar una tecla específica cuando se enciende la computadora. La tecla que debe presionar varía de un fabricante a otro, pero generalmente es Del o una de las teclas de función, como F2 o F12. Generalmente, la combinación de teclas para iniciar la configuración del BIOS se muestra en la pantalla al iniciar la máquina

En la utilidad de configuración del BIOS, es posible habilitar y deshabilitar periféricos integrados, activar la protección básica contra errores y cambiar configuraciones de hardware como IRQ (solicitud de interrupción) y DMA (acceso directo a memoria). Raramente se necesita cambiar esta configuración en las máquinas modernas, pero puede ser necesario hacer ajustes para abordar problemas específicos. Existen tecnologías RAM, por ejemplo, que son compatibles con velocidades de transferencia de datos más rápidas que los valores predeterminados, por lo que se recomienda cambiarlo a los valores especificados por el fabricante. Algunas CPU ofrecen características que pueden no ser necesarias para una instalación en particular y pueden desactivarse. Las funciones deshabilitadas reducirán el consumo de energía y pueden aumentar la protección del sistema, ya que las funciones de la CPU que contienen errores conocidos también se pueden deshabilitar.

Si la máquina está equipada con muchos dispositivos de almacenamiento, es importante definir cuál tiene el gestor de arranque correcto y debe ser la primera entrada en el orden de arranque del dispositivo. Es posible que el sistema operativo no se cargue si el dispositivo incorrecto aparece primero en la lista de verificación de arranque del BIOS/UEFI.

Inspección de dispositivos en Linux

Una vez que los dispositivos se identifican correctamente, corresponde al sistema operativo asociar los componentes de software correspondientes requeridos por ellos. Cuando una característica de hardware no funciona como se esperaba, es importante identificar dónde está sucediendo exactamente el problema. Cuando el sistema operativo no detecta un dispositivo, lo más probable es que éste, o el puerto al que está conectado, esté defectuoso. Cuando el dispositivo se detecta correctamente, pero aún no funciona como se espera, puede haber un problema en el lado del sistema operativo. Por lo tanto, uno de los primeros pasos cuando se trata con problemas relacionados con el hardware es verificar si el sistema operativo está detectando correctamente el dispositivo. Hay dos formas básicas de identificar recursos de hardware en un sistema Linux: usar comandos especializados o leer archivos específicos dentro de sistemas de archivos especiales.

Comandos para inspección

Dos comandos esenciales para identificar dispositivos conectados en Linux son:

lspci

Muestra todos los dispositivos actualmente conectados al bus PCI (Peripheral Component Interconnect). Los dispositivos PCI pueden ser un componente conectado a la placa base, como un controlador de disco, o una tarjeta de expansión instalada en una ranura PCI, como una tarjeta gráfica externa.

lsusb

Enumera los dispositivos USB (Universal Serial Bus) actualmente conectados a la máquina. Aunque existen dispositivos USB para casi cualquier propósito imaginable, la interfaz USB se utiliza en gran medida para conectar dispositivos de entrada (teclados, dispositivos señaladores) y medios de almacenamiento extraíbles.

La salida de los comandos lspci y lsusb consiste en una lista de todos los dispositivos PCI y USB identificados por el sistema operativo. Sin embargo, es posible que el dispositivo aún no esté completamente operativo, porque cada parte del hardware requiere de un componente de software para controlar el dispositivo correspondiente. Este componente de software es de la clase módulo del kernel y puede formar parte del núcleo oficial de Linux o agregarse por separado de otras fuentes.

Los módulos del núcleo de Linux relacionados con dispositivos de hardware se denominan controladores (drivers en inglés). Los controladores para Linux no siempre son suministrados por el fabricante del dispositivo. Mientras que algunos fabricantes proporcionan sus propios controladores binarios para que se instalen por separado, muchos controladores están escritos por desarrolladores independientes. En el pasado era habitual que las partes hardware que funcionaban en Windows  no tuviesen un módulo del núcleo equivalente para Linux. Hoy en día, los sistemas operativos basados en Linux tienen un amplísimo soporte de hardware y la mayoría de los dispositivos (por no decir todos) funcionan sin problemas.

Los comandos directamente relacionados con el hardware a menudo requieren privilegios de root para ejecutarse o solo mostrarán información limitada cuando los ejecute un usuario normal, por lo que puede ser necesario iniciar sesión como root o ejecutar el comando con sudo.

La siguiente salida del comando lspci, por ejemplo, muestra algunos dispositivos identificados:

$ lspci
01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI
04:04.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)
04:0b.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70)

La salida de dichos comandos pueden tener decenas de líneas, por lo que los ejemplos contienen solo las secciones de interés. Los números hexadecimales al principio de cada línea son las direcciones únicas del dispositivo PCI correspondiente. El comando lspci muestra más detalles sobre un dispositivo específico si su dirección se da con la opción -s, acompañada de la opción -v:

$ lspci -s 04:02.0 -v
04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI
    Subsystem: Linksys WMP54G v4.1
    Flags: bus master, slow devsel, latency 32, IRQ 21
    Memory at e3100000 (32-bit, non-prefetchable) [size=32K]
    Capabilities: [40] Power Management version 2
    kernel driver in use: rt61pci

El resultado ahora muestra muchos más detalles del dispositivo en la dirección 04:02.0. Es un controlador de red, cuyo nombre interno es Ralink corp. RT2561/RT61 802.11g PCI. Subsystem está asociado con la marca y el modelo del dispositivo (Linksys WMP54G v4.1) y puede ser útil para fines de diagnóstico.

El módulo del núcleo del sistema operativo se puede identificar en la línea kernel driver in use, que muestra el módulo rt61pci. De toda la información recopilada, es correcto suponer que:

  1. El dispositivo ha sido identificado.

  2. Se cargó un módulo en el núcleo del sistema operativo.

  3. El dispositivo debe estar listo para usarse.

La opción -k, disponible en versiones más recientes de lspci, proporciona otra forma de verificar qué módulo/s del núcleo del sistema operativo está en uso para el dispositivo especificado:

$ lspci -s 01:00.0 -k
01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
    kernel driver in use: nvidia
    kernel modules: nouveau, nvidia_drm, nvidia

Para el dispositivo elegido, una placa GPU NVIDIA, lspci indica que el módulo en uso se llama nvidia, en la línea kernel driver in use: nvidia y todos los módulos del núcleo del sistema operativo que se relacionan con él en la línea kernel modules: nouveau , nvidia_drm, nvidia.

El comando lsusb es similar a lspci, pero enumera la información de USB exclusivamente:

$ lsusb
Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny
Bus 001 Device 028: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter
Bus 001 Device 011: ID 04f2:0402 Chicony Electronics Co., Ltd Genius LuxeMate i200 Keyboard
Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

El comando lsusb muestra los canales USB disponibles y los dispositivos conectados a ellos. Al igual que con lspci, la opción -v muestra una salida más detallada. Se puede seleccionar un dispositivo específico para inspección proporcionando su ID a la opción -d:

$ lsusb -v -d 1781:0c9f
Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.01
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x1781 Multiple Vendors
  idProduct          0x0c9f USBtiny
  bcdDevice            1.04
  iManufacturer           0
  iProduct                2 USBtiny
  iSerial                 0
  bNumConfigurations      1

Con la opción -t, el comando lsusb muestra las asignaciones actuales de los dispositivos USB en forma de árbol jerárquico:

$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/3p, 480M
            |__ Port 2: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 2: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 3: Dev 20, If 0, Class=Wireless, Driver=btusb, 12M
            |__ Port 3: Dev 20, If 1, Class=Wireless, Driver=btusb, 12M
            |__ Port 3: Dev 20, If 2, Class=Application Specific Interface, Driver=, 12M
            |__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=lan78xx, 480M
        |__ Port 2: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 29, If 0, Class=Vendor Specific Class, Driver=, 1.5M

Es posible que no todos los dispositivos tengan los módulos correspondientes asociados. La comunicación con determinados dispositivos puede ser manejada directamente por la aplicación, sin la intermediación que proporciona un módulo. Sin embargo, hay información significativa en la salida proporcionada por lsusb -t. Cuando existe un módulo tratando con el dispositivo, su nombre aparece al final de la línea del mismo, como en Driver=btusb. El campo Class identifica la categoría general, como Human Interface Device, Wireless, Vendor Specific Class, Mass Storage, entre otros.

Es común tener una gran cantidad de módulos del núcleo del sistema operativo cargados en un sistema Linux estándar en cualquier momento (téngase en cuenta que no todos son controladores de dispositivos hardware). La forma preferible de interactuar con ellos es usar los comandos proporcionados por el paquete kmod, que es un conjunto de herramientas para manejar tareas comunes con módulos del kernel de Linux como insertar, eliminar, enumerar, verificar propiedades, resolver dependencias y alias. El comando lsmod, por ejemplo, muestra todos los módulos cargados actualmente:

$ lsmod
Module                  Size  Used by
kvm_intel             138528  0
kvm                   421021  1 kvm_intel
iTCO_wdt               13480  0
iTCO_vendor_support    13419  1 iTCO_wdt
snd_usb_audio         149112  2
snd_hda_codec_realtek  51465  1
snd_ice1712            75006  3
snd_hda_intel          44075  7
arc4                   12608  2
snd_cs8427             13978  1 snd_ice1712
snd_i2c                13828  2 snd_ice1712,snd_cs8427
snd_ice17xx_ak4xxx     13128  1 snd_ice1712
snd_ak4xxx_adda        18487  2 snd_ice1712,snd_ice17xx_ak4xxx
microcode              23527  0
snd_usbmidi_lib        24845  1 snd_usb_audio
gspca_pac7302          17481  0
gspca_main             36226  1 gspca_pac7302
videodev              132348  2 gspca_main,gspca_pac7302
rt61pci                32326  0
rt2x00pci              13083  1 rt61pci
media                  20840  1 videodev
rt2x00mmio             13322  1 rt61pci
hid_dr                 12776  0
snd_mpu401_uart        13992  1 snd_ice1712
rt2x00lib              67108  3 rt61pci,rt2x00pci,rt2x00mmio
snd_rawmidi            29394  2 snd_usbmidi_lib,snd_mpu401_uart

La salida del comando lsmod se divide en tres columnas:

Module

Nombre del módulo.

Size

Cantidad de memoria RAM ocupada por el módulo, en bytes.

Used by

Módulos dependientes.

Algunos módulos requieren que otros módulos funcionen correctamente, como es el caso de los módulos para dispositivos de audio:

$ lsmod | fgrep -i snd_hda_intel
snd_hda_intel          42658  5
snd_hda_codec         155748  3 snd_hda_codec_hdmi,snd_hda_codec_via,snd_hda_intel
snd_pcm                81999  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_page_alloc         13852  2 snd_pcm,snd_hda_intel
snd                    59132  19 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_via,snd_pcm,snd_seq,snd_hda_codec,snd_hda_intel,snd_seq_device

La tercera columna, Used by, muestra los módulos que requieren que el módulo de la primera columna funcione correctamente. Muchos módulos de la arquitectura de sonido de Linux, con el prefijo snd, son interdependientes. Al buscar problemas durante el diagnóstico del sistema, puede ser útil descargar de la memoria módulos específicos actualmente cargados. El comando modprobe se puede usar tanto para cargar como para descargar módulos del núcleo del sistema operativo: para descargar un módulo y sus módulos relacionados, siempre que no estén siendo utilizados por un proceso en ejecución, se debe usar el comando modprobe -r. Por ejemplo, para descargar el módulo snd-hda-intel (el módulo para un dispositivo de audio Intel HDA) y otros módulos relacionados con el sistema de sonido:

# modprobe -r snd-hda-intel

Además de cargar y descargar módulos del núcleo del sistema operativo mientras el sistema se está ejecutando, es posible cambiar los parámetros del módulo cuando se está cargando el núcleo del sistema operativo, no muy diferente de pasar opciones a comandos. Cada módulo acepta parámetros específicos, pero la mayoría de las veces se recomiendan los valores predeterminados y no se necesitan parámetros adicionales. Sin embargo, en algunos casos es necesario usar parámetros para cambiar el comportamiento de un módulo para que funcione como se espera.

Usando el nombre del módulo como único argumento, el comando modinfo muestra una descripción, el archivo, el autor, la licencia, la identificación, las dependencias y los parámetros disponibles para el módulo dado. Los parámetros personalizados para un módulo pueden hacerse persistentes al incluirlos en el archivo /etc/modprobe.conf o en archivos individuales con la extensión .conf en el directorio /etc/modprobe.d/. La opción -p hará que el comando modinfo muestre todos los parámetros disponibles e ignore la otra información:

# modinfo -p nouveau
vram_pushbuf:Create DMA push buffers in VRAM (int)
tv_norm:Default TV norm.
                Supported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,
                        hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.
                Default: PAL
                NOTE Ignored for cards with external TV encoders. (charp)
nofbaccel:Disable fbcon acceleration (int)
fbcon_bpp:fbcon bits-per-pixel (default: auto) (int)
mst:Enable DisplayPort multi-stream (default: enabled) (int)
tv_disable:Disable TV-out detection (int)
ignorelid:Ignore ACPI lid status (int)
duallink:Allow dual-link TMDS (default: enabled) (int)
hdmimhz:Force a maximum HDMI pixel clock (in MHz) (int)
config:option string to pass to driver core (charp)
debug:debug string to pass to driver core (charp)
noaccel:disable kernel/abi16 acceleration (int)
modeset:enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)
atomic:Expose atomic ioctl (default: disabled) (int)
runpm:disable (0), force enable (1), optimus only default (-1) (int)

La salida muestra todos los parámetros disponibles para el módulo nouveau, un módulo de kernel proporcionado por Nouveau Project como alternativa a los controladores propietarios para tarjetas GPU NVIDIA. La opción modeset, por ejemplo, permite controlar si la resolución y la profundidad de la pantalla se establecerán en el espacio del kernel en lugar del espacio del usuario. Agregar options nouveau modeset=0 al archivo /etc/modprobe.d/nouveau.conf deshabilitará la función del kernel de modeset.

Si un módulo está causando problemas, el archivo /etc/modprobe.d/blacklist.conf puede usarse para bloquear la carga del módulo. Por ejemplo, para evitar la carga automática del módulo nouveau, la línea blacklist nouveau debe agregarse al archivo /etc/modprobe.d/blacklist.conf. Esta acción es necesaria cuando el módulo propietario nvidia está instalado y el módulo predeterminado nouveau debe ignorarse.

Note

Puede modificar el archivo /etc/modprobe.d/blacklist.conf que ya existe en el sistema de forma predeterminada. Sin embargo, el método mas adecuado es crear un archivo de configuración separado, /etc/modprobe.d/<module_name>.conf, que contendrá configuraciones específicas solo para el módulo del núcleo dado.

Archivos de información y archivos de dispositivo

Los comandos lspci,lsusb y lsmod actúan como interfaz para leer la información del dispositivo almacenada por el sistema operativo. Este tipo de información se guarda en archivos especiales en los directorios /proc y /sys. Estos directorios son puntos de montaje para sistemas de archivos que no están presentes en una partición de dispositivo, sino solo en el espacio RAM utilizado por el núcleo del sistema operativo para almacenar la configuración en tiempo de ejecución y la información sobre los procesos en ejecución. Dichos sistemas de archivos no están destinados al almacenamiento convencional de archivos, por lo que se denominan pseudo-sistemas de archivos y solo existen mientras el sistema se está ejecutando. El directorio /proc contiene archivos con información sobre procesos en ejecución y recursos de hardware. Algunos de los archivos importantes en /proc para inspeccionar el hardware son:

/proc/cpuinfo

Enumera información detallada sobre las CPU encontradas por el sistema operativo.

/proc/interrupts

Una lista de números de las interrupciones por dispositivo de entrada/salida para cada CPU.

/proc/ioports

Enumera los puertos de entrada/salida registrados actualmente en uso.

/proc/dma

Enumera los canales DMA (acceso directo a memoria) registrados en uso.

Los archivos dentro del directorio /sys tienen roles similares a los de /proc. Sin embargo, el directorio /sys tiene el propósito específico de almacenar información del dispositivo y datos del kernel relacionados con el hardware, mientras que /proc también contiene información sobre varias estructuras de datos del kernel, incluidos los procesos en ejecución y la configuración.

Otro directorio directamente relacionado con dispositivos en un sistema Linux estándar es /dev. Cada archivo dentro de /dev está asociado con un dispositivo del sistema, particularmente dispositivos de almacenamiento. Un disco duro IDE heredado (cada vez son menos pero podríamos encontrarlo en sistemas antiguos que siguen dando un servicio útil) conectado al primer canal IDE de la placa base, está representado por el archivo /dev/hda. Cada partición en este disco será identificada por /dev/hda1,/dev/hda2 hasta la última partición encontrada.

Los dispositivos extraíbles son manejados por el subsistema udev, que crea los dispositivos correspondientes en /dev. El núcleo de Linux captura el evento de detección de hardware y lo pasa al proceso udev, que luego identifica el dispositivo y crea dinámicamente los archivos correspondientes en /dev, utilizando reglas predefinidas.

En las distribuciones actuales de Linux, udev es responsable de la identificación y configuración de los dispositivos que ya están presentes durante el encendido de la máquina (coldplug detection) y los dispositivos identificados mientras el sistema está en funcionamiento (hotplug detection). Udev se basa en SysFS, el pseudo sistema de archivos para la información relacionada con los dispositivos montados en /sys.

Note

Hotplug es el término utilizado para referirse a la detección y configuración de un dispositivo mientras el sistema está en funcionamiento, como cuando se inserta un dispositivo USB. El núcleo de Linux ha admitido funciones de conexión en caliente desde la versión 2.6, lo que permite que la mayoría de los buses del sistema (PCI, USB, etc.) activen eventos de conexión en caliente cuando un dispositivo está conectado o desconectado.

A medida que se detectan nuevos dispositivos, udev busca una regla coincidente en las reglas predefinidas almacenadas en el directorio /etc/udev/rules.d/. La distribución GNU/Linux proporciona las reglas más importantes, pero se pueden agregar nuevas para casos específicos. Las reglas son instrucciones que el administrador proporciona a udev para evitar que realice su trabajo con directrices por defecto. Se graban en ficheros de texto en el directorio /etc/udev/rules.d/. En la página de manual de udev puedes obtener información al respecto.

Dispositivos de Almacenamiento

En Linux, los dispositivos de almacenamiento se denominan genéricamente dispositivos de bloque, porque los datos se leen desde y hacia estos dispositivos en bloques de datos almacenados en búfer con diferentes tamaños y posiciones. Cada dispositivo de bloque se identifica mediante un archivo en el directorio /dev, con el nombre del archivo según el tipo de dispositivo (IDE, SATA, SCSI, etc.) y sus particiones. Los dispositivos de CD/DVD y disquetes, por ejemplo, recibirán sus nombres correspondientes en /dev: una unidad de CD/DVD conectada como master al segundo puerto IDE se identificará como /dev/hdc (/dev/hda y /dev/hdb están reservados para los dispositivos maestro y esclavo en el primer puerto IDE) y una unidad de disquete antigua se identificará como /dev/fdO, /dev/fd1, etc.

Desde la versión 2.4 del kernel de Linux en adelante, la mayoría de los dispositivos de almacenamiento ahora se identifican como si fueran dispositivos SCSI, independientemente de su tipo de hardware. Los dispositivos de bloque IDE, SATA y USB tendrán el prefijo sd. Se utilizará el prefijo sd, y se eligirá la letra dependiendo de la conexión física que tengan en los conectores de una u otra tecnología disponibles en la placa base. El primer dispositivo de bloques identificado por el kernel recibirá el nombre  sda, el segundo sdb y así sucesivamente y las particiones en cada uno de ellos se listan numéricamente (/dev/sda1, /dev/sda2, /dev/sdb1, /dev/sdb2, etc.). La excepción a este patrón ocurre con las tarjetas de memoria (tarjetas SD) y los dispositivos NVMe (SSD conectados al bus PCI Express). Para las tarjetas SD, las rutas /dev/mmcblk0p1, /dev/mmcblk0p2, etc. se utilizan para la primera y segunda partición del dispositivo identificado primero y /dev/mmcblk1p1, /dev/mmcblk1p2, etc. utilizado para identificar la primera y la segunda partición del dispositivo identificado en segundo lugar. Los dispositivos NVMe reciben el prefijo nvme, como en /dev/nvme0n1p1 y /dev/nvme0n1p2.

Ejercicios Guiados

  1. Supongamos que un sistema operativo no puede iniciarse después de agregar un segundo disco SATA al sistema. Sabiendo que ninguno de los dispositivos está defectuoso, ¿cuál podría ser la posible causa de este error?


  2. Suponga que desea asegurarse de que la tarjeta de video externa conectada al bus PCI de su computadora de escritorio recién adquirida realmente sea la anunciada por el fabricante, pero al abrir el cajón de la computadora anularía la garantía. ¿Qué comando podría usarse para enumerar los detalles de la tarjeta de video, tal como fueron detectados por el sistema operativo?


  3. La siguiente línea es parte de la salida generada por el comando lspci:

    03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)

    ¿Qué comando debe ejecutar para identificar el módulo del núcleo del sistema operativo en uso para este dispositivo específico?


  4. Un administrador del sistema quiere probar diferentes parámetros para el módulo del kernel bluetooth sin reiniciar el sistema. Sin embargo, cualquier intento de descargar el módulo con modprobe -r bluetooth da como resultado el siguiente error:

    modprobe: FATAL: Module bluetooth is in use.

    ¿Cuál es la posible causa de este error?


Ejercicios Exploratorios

  1. No es raro encontrar máquinas desactualizadas, obsoletas o mejor conocidas como legacy en entornos de producción, como cuando algunos equipos utilizan una conexión obsoleta para comunicarse con la computadora de control, por lo que es necesario prestar especial atención a algunas peculiaridades de estas máquinas más antiguas. Algunos servidores x86 con firmware BIOS más antiguo, por ejemplo, no se iniciarán si no se detecta un teclado. ¿Cómo se puede evitar este problema en particular?


  2. Los sistemas operativos construidos alrededor del núcleo de Linux también están disponibles para una amplia variedad de arquitecturas de computadora que no sean x86, como en las computadoras de placa única basadas en la arquitectura ARM. Un usuario atento notará la ausencia del comando lspci en tales máquinas, como la Raspberry Pi. ¿Qué diferencia con las máquinas x86 justifica esa ausencia?


  3. Muchos enrutadores de red tienen un puerto USB que permite las conexiones de un dispositivo externo, como un disco duro USB. Dado que la mayoría de estos utilizan un sistema operativo basado en Linux, ¿cómo se nombrará un disco duro USB externo en el directorio /dev/, suponiendo que no haya otro dispositivo de bloque convencional en el enrutador?


  4. En 2018, se descubrió la vulnerabilidad de dispositivos conocida como Meltdown. Afecta a casi todos los procesadores de muchas arquitecturas. Las versiones recientes del núcleo de Linux pueden informar si el sistema actual es vulnerable. ¿Cómo se puede obtener esta información?


Resumen

Esta lección cubre los conceptos generales sobre cómo el núcleo de Linux maneja los recursos y dispositivos disponibles, principalmente en la arquitectura x86. La lección trata los siguientes temas:

  • La configuración definida en las utilidades de configuración BIOS o UEFI puede afectar la forma en que el sistema operativo interactúa con los dispositivos.

  • Cómo usar las herramientas proporcionadas por un sistema Linux estándar para obtener información sobre los dispositivos.

  • Cómo identificar dispositivos de almacenamiento permanentes y extraíbles en el sistema de archivos.

Los comandos y procedimientos abordados fueron:

  • Comandos para inspeccionar los dispositivos detectados: lspci y lsusb.

  • Comandos para administrar módulos del núcleo del sistema operativo: lsmod y modprobe.

  • Archivos especiales relacionados con los dispositivos, ya sean los archivos que se encuentran en el directorio /dev/ o en los pseudo-sistemas de archivos en /proc/ y /sys/.

Respuestas a los ejercicios guiados

  1. Supongamos que un sistema operativo no puede iniciarse después de agregar un segundo disco SATA al sistema. Sabiendo que ninguno de los dispositivos está defectuoso, ¿cuál podría ser la posible causa de este error?

    El orden del dispositivo de arranque debe configurarse en la utilidad de configuración del BIOS; de lo contrario, es posible que el BIOS no pueda ejecutar el cargador de arranque.

  2. Suponga que desea asegurarse de que la tarjeta de video externa conectada al bus PCI de su computadora de escritorio recién adquirida realmente sea la anunciada por el fabricante, pero al abrir el cajón de la computadora anularía la garantía. ¿Qué comando podría usarse para enumerar los detalles de la tarjeta de video, tal como fueron detectados por el sistema operativo?

    El comando lspci enumerará información detallada sobre todos los dispositivos actualmente conectados al bus PCI.

  3. La siguiente línea es parte de la salida generada por el comando lspci:

    03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)

    ¿Qué comando debe ejecutar para identificar el módulo del núcleo de sistema operatico en uso para este dispositivo específico?

    El comando lspci -s 03: 00.0 -v o lspci -s 03: 00.0 -k

  4. Un administrador del sistema quiere probar diferentes parámetros para el módulo del kernel bluetooth sin reiniciar el sistema. Sin embargo, cualquier intento de descargar el módulo con modprobe -r bluetooth da como resultado el siguiente error:

    modprobe: FATAL: Module bluetooth is in use.

    ¿Cuál es la posible causa de este error?

    El módulo bluetooth está siendo utilizado por un proceso en ejecución.

Respuestas a ejercicios exploratorios

  1. No es raro encontrar máquinas desactualizadas, obsoletas o mejor conocidas como legacy en entornos de producción, como cuando algunos equipos utilizan una conexión obsoleta para comunicarse con la computadora de control, por lo que es necesario prestar especial atención a algunas peculiaridades de estas máquinas más antiguas. Algunos servidores x86 con firmware BIOS más antiguo, por ejemplo, no se iniciarán si no se detecta un teclado. ¿Cómo se puede evitar este problema en particular?

    La utilidad de configuración del BIOS tiene una opción para desactivar el bloqueo de la computadora cuando no se encuentra un teclado.

  2. Los sistemas operativos construidos alrededor del núcleo de Linux también están disponibles para una amplia variedad de arquitecturas de computadora que no sean x86, como en las computadoras de placa única basadas en la arquitectura ARM. Un usuario atento notará la ausencia del comando lspci en tales máquinas, como la Raspberry Pi. ¿Qué diferencia con las máquinas x86 justifica esa ausencia?

    A diferencia de la mayoría de las máquinas x86, una computadora basada en ARM como la Raspberry Pi carece de un bus PCI, por lo que el comando lspci es inútil.

  3. Muchos enrutadores de red tienen un puerto USB que permite las conexiones de un dispositivo externo, como un disco duro USB. Dado que la mayoría de estos utilizan un sistema operativo basado en Linux, ¿cómo se nombrará un disco duro USB externo en el directorio /dev/, suponiendo que no haya otro dispositivo de bloque convencional en el enrutador?

    Los kernels modernos de Linux identifican los discos duros USB como dispositivos SATA, por lo que el archivo correspondiente será /dev/sda ya que no existe ningún otro dispositivo de bloque convencional en el sistema.

  4. En 2018, se descubrió la vulnerabilidad de dispositivos conocida como Meltdown. Afecta a casi todos los procesadores de muchas arquitecturas. Las versiones recientes del núcleo de Linux pueden informar si el sistema actual es vulnerable. ¿Cómo se puede obtener esta información?

    El archivo /proc/cpuinfo tiene una línea que muestra los errores conocidos de la CPU correspondiente, como bugs: cpu_meltdown.

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

101.2 Arranque del sistema (101.2 Lección 1)

Leer la próxima lección

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© Copyright 1999-2020 The Linux Professional Institute Inc. Todos los derechos reservados.