Modulo 10
Modulo 10
Modulo 10
10.1 Introducción
Una de las muchas ventajas de tener tantas distribuciones distintas de Linux es que
algunos de ellas están diseñados para funcionar en plataformas de hardware específicas.
De hecho, hay una distribución de Linux diseñada para casi todas las plataformas de
hardware modernas.
Cada una de estas plataformas de hardware tiene una gran cantidad de variedad en los
componentes de hardware que están disponibles. Además de diferentes tipos de unidades
de disco duros, hay muchos diferentes monitores e impresoras. Con la popularidad de los
dispositivos USB, tales como dispositivos de almacenamiento USB, cámaras y teléfonos
celulares, el número de dispositivos disponibles llega a calcularse en miles.
En algunos casos, esto plantea problemas, ya que estos dispositivos típicamente
necesitan algún tipo de software (llamados controladores («drivers» en inglés) o módulos)
que les permite comunicarse con el sistema operativo instalado. Los fabricantes de
hardware a menudo proporcionan este software, pero típicamente para Microsoft Windows,
no para Linux. La mascota de Linux, Tux, sin embargo está empezando a aparecer más a
menudo en los productos de hardware, indicando el soporte de Linux.
Además del apoyo de los proveedores, hay una gran cantidad de apoyo de la comunidad
que se esfuerza por proporcionar controladores para los sistemas Linux. Aunque no todo el
hardware tiene los controladores necesarios, hay una buena cantidad que sí los tiene, lo
que supone un reto para los usuarios y administradores Linux para encontrar los
controladores correctos o elegir el hardware que tiene cierto nivel de soporte en Linux.
En este capítulo aprenderás acerca de los dispositivos de core hardware, incluyendo la
manera de utilizar los comandos de Linux para mostrar la información vital de hardware del
dispositivo.
10.2 Los Procesadores
La Unidad Central de Procesamiento (CPU, «Central Processing Unit» en inglés o
procesador) es uno de los componentes más importantes de hardware en una
computadora. Realiza la toma de decisiones, así como los cálculos que deben realizarse
para ejecutar correctamente un sistema operativo. El procesador es esencialmente un chip
de computadora.
El procesador está conectado con otro hardware a través de una placa base (o
«motherboard» en inglés), también conocida como la placa del sistema. Las placas base
están diseñadas para funcionar con determinados tipos de procesadores.
Si un sistema tiene más de un procesador, el sistema se denomina multiprocesador. Si se
combina más de un procesador en un único chip del procesador, entonces se llama multi-
core (o «multi-núcleo» en español).
Aunque el apoyo está disponible para más tipos de procesadores en Linux que en
cualquier otro sistema operativo, principalmente hay dos tipos de procesadores utilizados
en las computadoras de escritorio y en los servidores: x86 y x86_64. En un x86, el sistema
procesa los datos de 32 bits a la vez; en un x86_64 el sistema procesa datos de 64 bits a
la vez. Un sistema x86_64 también es capaz de procesar los datos de 32 bits a la vez en
un modo compatible con las versiones anteriores. Una de las ventajas principales de un
sistema de 64 bits es que el sistema es capaz de trabajar con más memoria.
La familia de procesadores de x86 fue creada por Intel en 1978 con el lanzamiento del
procesador 8086. Desde entonces, Intel ha producido muchos otros procesadores que son
las mejoras del 8086 original; se conocen genéricamente como los procesadores x86.
Estos procesadores incluyen el 80386 (también conocido como el i386), 80486 (i486),
Pentium (i586) y la serie del Pentium Pro (i686). Además de Intel, hay otras empresas
como AMD y Cyrix que también han producido procesadores compatibles con los x86. Si
bien Linux es capaz de soportar procesadores de la generación del i386, muchas
distribuciones limitan su soporte al i686 o posteriores.
La familia de los procesadores x86_64, incluyendo los procesadores de 64 bits de Intel y
AMD, ha estado en la producción desde alrededor del año 2000. Como resultado, la
mayoría de los procesadores modernos construidos hoy en día son de x86_64. Mientras
que el hardware ha estado disponible por más de una década hasta ahora, el software de
soporte para esta familia de procesadores se ha estado desarrollando mucho más lento.
Incluso en el 2013 ya había muchos paquetes de software que estaban disponibles para la
arquitectura x86, pero no para x86_64.
Puedes ver a qué familia pertenece tu CPU usando el comando arch:
sysadmin@localhost:~$ arch
x86_64
sysadmin@localhost:~$
Otro comando que puedes utilizar para identificar el tipo de CPU en el sistema es el
comando lscpu:
sysadmin@localhost:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2394.000
BogoMIPS: 4788.00
Virtualization: VT-x
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0-3
sysadmin@localhost:~$
La primera línea de esta salida muestra que se está utilizando la CPU en modo de 32 bits,
ya que la arquitectura reportada es x86_64. La segunda línea de la salida muestra que la
CPU es capaz de operar en modo ya sea de 32 o 64 bits, por lo tanto realmente es un
CPU de 64 bits.
La manera más detallada de obtener la información acerca de tu CPU es visualizando el
archivo /proc/cpuinfo con el comando cat:
Mientras que la gran parte de la salida del comando lscpu y del contenido del
archivo /proc/cpuinfo parece ser la misma, una de las ventajas de visualizar el
archivo /proc/cpuinfo es que aparecen flags (o «indicadores» en español) de la
CPU. Los flags de una CPU son un componentes muy importantes, ya que señalan qué
características soporta la CPU y las capacidades de la CPU.
Por ejemplo, la salida del ejemplo anterior contiene el flag lm (long mode, o «modo largo»
en español), indicando que esta CPU es de 64-bit. También hay flags que indican si la
CPU es capaz de soportar máquinas virtuales (la capacidad de tener varios sistemas
operativos en un único equipo)
10.3.1 dmidecode
La tarjeta madre de muchas computadoras contiene lo que se conoce como Basic Input
and Output System (BIOS) (o «BIOS de Administración del Sistema» en español). System
Management BIOS (SMBIOS) (o «El Sistema de Gestión o Administración de BIOS» en
español) es el estándar que define las estructuras de datos y cómo se comunica la
información acerca del hardware de la computadora. El comando dmidecode es capaz de
leer y mostrar la información del SMBIOS.
Un administrador puede utilizar el comando dmidecode para ver los dispositivos
conectados directamente a la tarjeta madre. Hay una gran cantidad de información
proporcionada por la salida de este comando.
Los ejemplos siguientes te proporcionan algunas ideas de lo que se puede saber de la
salida del comando dmidecode. Este comando no está disponible dentro del entorno de la
máquina virtual de este curso.
En el primer ejemplo, se puede ver que el BIOS soporta el arranque directamente desde el
CD-ROM. Esto es importante ya que los sistemas operativos a menudo se instalan
arrancando directamente desde el CD de instalación:
# dmidecode 2.11
SMBIOS 2.4 present.
364 structures occupying 16040 bytes.
Table at 0x000E0010
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: Phoenix Technologies LTD
Version: 6.00
Release Date: 06/22/2012
Address: 0xEA0C0
Runtime Size: 89920 bytes
ROM Size: 64 kB
Characteristics:
ISA is supported
PCI is supported
PC Card (PCMCIA) is supported
PNP is supported
APM is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
--More--
En el siguiente ejemplo puedes ver que un total de 2048 (aproximadamente 2GB) de RAM
está instalado en el sistema:
Bank Connections: None
Current Speed: Unknown
Type: EDO DIMM
Installed Size: 2048 MB (Single-bank Connection)
Enabled Size: 2048 MB (Single-bank Connection)
Error Status: OK
sysadmin@localhost:~$ free -m
total used free shared buffers c
ached
Mem: 1894 356 1537 0 25
177
-/+ buffers/cache: 153 1741
Swap: 4063 0 4063
sysadmin@localhost:~$
La salida al ejecutar este comando free muestra que el sistema fue ejecutado en un
sistema que tiene un total de 1.894 megabytes y está utilizando actualmente 356
megabytes.
La cantidad de swap aparece ser aproximadamente 4 gigabytes, aunque nada de esto
parece estar en uso. Esto tiene sentido porque la gran parte de la RAM física está libre, así
que en este momento no se necesita utilizar la RAM virtual.
sysadmin@localhost:~$ lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Hos
t bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP
bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev
01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interf
ace (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
03:00.0 Serial Attached SCSI controller: VMware PVSCSI SCSI Controller
(rev 02
0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 0
1)
Ejecutar el comando lspci con la opción -nn muestra un identificador numérico para cada
dispositivo, así como la descripción del texto original:
sysadmin@localhost:~$ lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
sysadmin@localhost:~$
La opción detallada, -v, del comando lsusb muestra una gran cantidad de detalles acerca
de cada dispositivo:
sysadmin@localhost:~$ lsusb -v
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Couldn’t open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 9 Hub
bDeviceSubClass 0 Unused
bDeviceProtocol 0 Full speed (or root) hub
bMaxPacketSize0 64
idVendor 0x1d6b Linux Foundation
idProduct 0x0001 1.1 Linux Foundation
bcDevice 2.06
iManufacturer 3
iProduct 2
iSerial 1
…
root@localhost:~$ ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc
root@localhost:~$
✔ Verdadero
✔ dmidecode
✔ partición
✔ Verdadero
✔ /dev/hda