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:
-
El dispositivo ha sido identificado.
-
Se cargó un módulo en el núcleo del sistema operativo.
-
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
|
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
-
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?
-
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?
-
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?
-
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 conmodprobe -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
-
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?
-
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?
-
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?
-
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
ylsusb
. -
Comandos para administrar módulos del núcleo del sistema operativo:
lsmod
ymodprobe
. -
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
-
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.
-
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. -
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
olspci -s 03: 00.0 -k
-
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 conmodprobe -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
-
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.
-
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. -
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. -
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, comobugs: cpu_meltdown
.