¡Esta es una revisión vieja del documento!
Tabla de Contenidos
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
- BIOS
- MBR (si tenemos UEFI, nos saltamos este paso)
- GRUB (gestor de arranque)
- Kernel: es iniciado por el gestor de arranque
- Initramfs (initial ram file system). Es el sistema de archivos ram inicial (ramdisk). Archivo comprimido que contiene un pequeño sistema de archivos que se cargará en la memoria RAM en el proceso de arranque del núcleo. El kernel lo necesita para completar tareas relacionadas con módulos y controladores de dispositivos para poder arrancar el verdadero sistema de archivos raíz instalado en el disco duro e invocar al proceso init. En el fichero de configuración del GRUB lo vemos en una línea como
initrd /boot/initramfs-linux.img. - 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.
Al arrancar Llinux se muestran mensajes según se van cargando controladores o funciones del sistema. Para revisarlos se utiliza el comando dmesg que acepta las siguientes opciones recomendadas:
-T: muestra las marcas de tiempo en forma de fecha y hora-k: muestra solo los mensajes del kernel.-H: salida coloreada y paginada.-l: filtra por niveles (warn,err, etc).
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.
Comandos del sistema
Desde el terminal podemos enviar comandos para la parada o reinicio del sistema.
shutdown: apaga el sistema de forma planificada.halt: apaga el sistema sin enviar señal ACPI de apagado de alimentación eléctrica (tendríamos que apagarlo físicamente)poweroff: apaga el sistema con señal ACPIreboot: reinicia el sistema.
Si queremos reiniciar en 5 minutos avisando a los usuarios que estén en consola:
shutdown +5 "El sistema se apagará en 5 minutos"
Si quisiéramos cancelar el apagado programado:
shutdown -c
Se pueden utilizar varios comandos para reiniciar:
rebootshutdown -rhalt –reboot
Se pueden utilizar varios comandos para cerrar el sistema:
haltshutdown -Hreboot –halt
Y para apagar:
poweroffshutdown -Phalt -p
