Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:linux:hardware

¡Esta es una revisión vieja del documento!


Hardware en Linux

Herramientas

lspci

Muestra información sobre los buses PCI y los dispositivos que tienen conectados.

Tarjeta de red, tarjeta gráfica, etc.

lspci

Ejemplo de salida:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:06.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation C204 Chipset Family LPC Controller (rev 05)
00:1f.2 RAID bus controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA RAID Controller (rev 05)
01:00.0 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Slave Instrumentation & System Support (rev 05)
01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH
01:00.2 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Management Processor Support and Messaging (rev 05)
01:00.4 USB controller: Hewlett-Packard Company Integrated Lights-Out Standard Virtual USB Controller (rev 02)
02:00.0 Memory controller: Hewlett Packard Enterprise Device 005f
03:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

El primer par de dígitos hace referencia al bus (00 suele ser integrado en placa)

Más información sobre los dispositivos

lspci -v

Más detalles:

lspci -vv

Si queremos mostrar información solo de cierto dispositivo:

lspci -s <bus:dispositivo>

lsusb

Muestra info sobre los buses y dispositivos usb conectados

lsusb

Para más información:

lsusb -v

El descriptor bDeviceSubClass indica si se está usando el puerto USB

Más detalles todavía:

lsusb -vv

Información sobre determinado dispositivo:

lsusb -s <bus:device>

Si queremos ver información en árbol y la velocidad del puerto USB:

lsusb -t

Ejemplo de salida:

/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/2p, 480M
            |__ Port 1: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 5: Dev 3, If 0, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 5: Dev 3, If 1, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 5: Dev 3, If 2, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 5: Dev 3, If 3, Class=Application Specific Interface, Driver=, 12M

USB soporta muchos dispositivos en un mismo bus

  • USB 1.1 velocidad de lectura hasta 12 Mb/s (1,5 MB/s)
  • USB 2.0 velocidad de lectura hasta 480 Mb/s (60 MB/s)
  • USB 3.0 velocidad de lectura hasta 5000 Mb/s (600 MB/s)

Interrupciones

Para ver las interrupciones asociadas: /proc/interrupts

Las interrupciones son señales hardware que se envían a la CPU para que gestione alguna petición.

Si un dispositivo hardware dispone de DMA, podrá acceder a bloques de memoria sin intervención de la CPU. La información respecto a canales DMA se puede consultar en /proc/dma

Para consultar las direcciones de memoria de los procesos de entrada/salida, se consulta en /proc/ioports

/sys

Sistema de ficheros virtual que contiene información sobre el hardware.

Ver los dispositivos por clases, en el directorio /sys/class/

Si queremos ver información de las interfaces: /sys/class/net/

$ ls -l
total 0
lrwxrwxrwx 1 root root 0 oct 15 21:40 enp0s25 -> ../../devices/pci0000:00/0000:00:19.0/net/enp0s25
lrwxrwxrwx 1 root root 0 oct 15 21:40 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 oct 15 21:40 wlp2s0 -> ../../devices/pci0000:00/0000:00:1c.2/0000:02:00.0/net/wlp2s0

Dirección MAC de una tarjeta de red:

cat /sys/class/net/wlp2s0/address

/dev

Todo lo que hace referencia a algún dispositivo. Está menos organizado que /sys (/sys es una mejora de /dev) y se utiliza básicamente para poder referenciar los dispositivos y poder utilizarlo.

El contenido de este directorio varía en función de los dispositivos que se tenga conectados.

Útil por ejemplo para la identificación de los discos:

ls -l /dev/disk/by-uuid

Cuando conectamos un pendrive USB, aparecerán nuevos elementos:

ls /dev/sd*

También podríamos verlo desde /sys/class/block/, donde habrá diferentes enlaces a la información del hardware.

Módulos del kernel

Los módulos son partes del kernel que podemos activar o desactivar para añadir o quitar funcionalidades. Tiene una relación muy estrecha con los drivers.

Son archivos terminados con la extensión .ko y se suelen almacenar en /lib/modules/version_kernel/kernel/

lsmod

Muestra los módulos cargados en el sistema

Module                  Size  Used by
softdog                16384  0
veth                   20480  0
xt_nat                 16384  86
xt_tcpudp              16384  106
xt_conntrack           16384  8
ipt_MASQUERADE         16384  18
nf_conntrack_netlink    49152  0
nfnetlink              16384  2 nf_conntrack_netlink
xfrm_user              45056  1
xfrm_algo              16384  1 xfrm_user
xt_addrtype            16384  2
iptable_filter         16384  1
iptable_nat            16384  20
nf_nat_ipv4            16384  2 ipt_MASQUERADE,iptable_nat
  • Nombre de los módulos
  • Tamaño
  • Cuántas veces se ha utilizado
  • Quién lo ha usado

modinfo

Amplía información de un módulo

$ modinfo bluetooth

filename:       /lib/modules/4.19.0-0.bpo.9-amd64/kernel/net/bluetooth/bluetooth.ko
alias:          net-pf-31
license:        GPL
version:        2.22
description:    Bluetooth Core ver 2.22
author:         Marcel Holtmann <marcel@holtmann.org>
srcversion:     333F9F6A8EDC24E53008B30
depends:        rfkill,ecdh_generic,crc16
retpoline:      Y
intree:         Y
name:           bluetooth
vermagic:       4.19.0-0.bpo.9-amd64 SMP mod_unload modversions
signat:         PKCS#7
signer:
sig_key:
sig_hashalgo:   md4
parm:           disable_esco:Disable eSCO connection creation (bool)
parm:           disable_ertm:Disable enhanced retransmission mode (bool)

insmod

Carga un fichero .ko en el sistema.

Para cargar el módulo, debemos indicar la ruta al mismo:

insmod /lib/modules/4.19.0-0.bpo.9-amd64/kernel/drivers/block/floppy.ko

rmmod

Quita el módulo del sistema.

Con la opción -w indicamos que espera a que deje de utilizarse para que se quite del sistema.

modprobe

Carga o borra módulos y resuelve las dependencias entre estos.

Es más recomendable usar este comando en lugar de insmod y rmmod

  • -f: fuerza la carga del módulo aunque la versión del kernel no coincida con la esperada.
  • -r: elimina el módulo.
  • -v: muestra información adicional de lo que realiza.
  • -n: hace una simulación pero no inserta el módulo

Almacenamiento

Si queremos ver particiones e información sobre ellas, podemos usar parted:

$ sudo parted -l

[tempwin@zeta ~]$ sudo parted -l
[sudo] password for tempwin: 
Model: ATA KINGSTON SUV500M (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Numero  Inicio  Fin     Tamaño  Sistema de ficheros  Nombre                Banderas
 1      1049kB  538MB   537MB   fat32                EFI System Partition  arranque, esp
 2      538MB   22,0GB  21,5GB  ext4
 3      22,0GB  65,0GB  42,9GB  ext4                 arch
 4      65,0GB  240GB   175GB   ext4                 data

Arranque

  1. BIOS
  2. MBR (si tenemos UEFI, nos saltamos este paso)
  3. GRUB (gestor de arranque)
  4. Kernel: es iniciado por el gestor de arranque
  5. El kernel llama al primer programa del SO que se encargará de configurar todos los servicios, demonios y cargar las particiones para poner el sistema en funcionamiento. Este programa se llama init, suele tener el identificador de proceso número 1 y es el padre del resto de procesos que empiezan a arrancar la máquina.

Procesos de inicio

Podemos encontrar 3 tipos de procesos encargados de iniciar y gestionar los servicios o demonios de entornos Linux

SysVinit

Utiliza scripts y niveles de ejecución para controlar el inicio, apagado y gestión de los procesos del sistema.

La configuración básica está en /etc/inittab.

Niveles de ejecución (pueden variar según la distribución de Linux):

  • 0: Parar
  • 1: Monousuario
  • 2: Multiusuario
  • 3: Multiusuario con soporte de red
  • 4: Igual que el 3
  • 5: Multiusuario gráfico (X11)
  • 6: Reiniciar.

Systemd

Agrupa los servicios en “target” en lugar de niveles de ejecución (runlevel) estableciendo en ellos dependencias y el orden de ejecución de los procesos.

Aprovecha características de los kernel más modernos e intentar que el arranque sea más rápido, lanzar procesos de forma paralela, etc.

Se ejecuta un único programa que utilizará ficheros de configuración para cada servicio a gestionar.

Utiliza unidades que pueden ser de diversos tipos: automount, device, mount, path, service, snapshot, socket y target.

Cada unidad se define en un fichero con el nombre de dicha unidad y en la extensión se indica el tipo de unidad, por ejemplo, ssh.service. Estos ficheros pueden estar en distintos directorios:

  • /usr/lib/systemd/system
  • /lib/systemd/system
  • /etc/systemd/system

Upstart

Utiliza eventos para gestionar el arranque o parada de los procesos.

informatica/sistemas_operativos/linux/hardware.1602939022.txt.gz · Última modificación: por tempwin