Linux Essentials - Capítulo 10
Linux Essentials - Capítulo 10
Linux Essentials - Capítulo 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.
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.
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.
Otro comando que puedes utilizar para identificar el tipo de CPU en el sistema es el comando lscpu:
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).
La tarjeta madre o «motherboard» en inglés, es el tablero principal del hardware en la computadora a través de la
cual se conectan la CPU, la Memoria de Acceso Aleatorio (RAM) y otros componentes. Algunos dispositivos se
conectan directamente a la tarjeta madre, mientras que otros dispositivos se conectan a la tarjeta madre mediante
un bus.
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.
En el siguiente ejemplo puedes ver que un total de 2048 (aproximadamente 2GB) de RAM está instalado en el
sistema:
La tarjeta madre normalmente tiene ranuras donde la Memoria de Acceso Aleatorio (RAM o «Random Access
Memory» en inglés) puede conectarse al sistema. Los sistemas de arquitectura de 32 bits pueden utilizar hasta 4
gigabytes (GB) de RAM, mientras que las arquitecturas de 64 bits son capaces de abordar y usar mucha más RAM.
En algunos casos, la RAM que tiene tu sistema podría no ser suficiente para manejar todos los requisitos del sistema
operativo. Cada programa necesita almacenar datos en la RAM y los programas mismos se cargan en la RAM cuando
se ejecutan.
Para evitar que el sistema falle por falta de RAM, se utiliza una RAM virtual (o espacio de intercambio «swap space»
en inglés). La RAM virtual es un espacio en el disco duro que se utiliza para almacenar temporalmente los datos de
RAM cuando el sistema se está quedando sin la RAM. Los datos que se almacenan en la RAM y que no se han
utilizado recientemente se copian al disco duro los programas utilizados recientemente puedan utilizar la RAM. Si es
necesario, los datos intercambiados pueden almacenarse en la RAM en un momento posterior.
Para ver la cantidad de la RAM en tu sistema, incluyendo la RAM virtual, ejecuta el comando free. El comando free
tiene la opción -m para forzar la salida a ser redondeada al megabyte más cercano y una opción -g para forzar la
salida a ser redondeada al gigabyte más cercano:
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.
La tarjeta madre tiene buses que permiten conectar múltiples dispositivos al sistema, incluyendo la Interconexión de
los Componentes Periféricos (PCI) y Bus Serie Universal (USB). La tarjeta madre tiene también conectores para
monitores, teclados y ratones.
Para ver todos los dispositivos conectados por un bus PCI ejecuta el comando lspci. El siguiente ejemplo muestra una
salida de este comando. Como se puede ver a continuación en las secciones destacadas, este sistema tiene un
controlador VGA (conector de un monitor), un controlador de almacenamiento SCSI (un tipo de disco duro) y un
controlador de Ethernet (un conector de red):
Los gráficos a continuación ofrecen ejemplos de uso del comando lspci. Este
comando no está disponible dentro del entorno de la máquina virtual de este
curso.
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:
La selección resaltada, [15ad:07b0], se refiere a la sección [vendor:device] (o «vendedor:dispositivo» en español).
Utilizar la información [vendor:device] puede ser útil para mostrar la información detallada acerca de un dispositivo
específico. Utilizar al la opción -d vendor:device, puedes seleccionar ver la información sobre un sólo dispositivo.
También puedes ver información más detallada mediante cualquiera de las dos opciones, la -v, -vv o la -vvv. Cuántos
más caracteres v, más detallada será la salida. Por ejemplo:
El comando lspci muestra información detallada sobre los dispositivos conectados al sistema a través del bus PCI.
Esta información puede ser útil para determinar si el dispositivo es compatible con el sistema, tal como se indica por
un Kernel driver o un Kernel module en uso, como se muestra en el último par de líneas de la salida anterior.
Mientras que el bus PCI se utiliza para muchos dispositivos internos tales como las tarjetas de sonido y red, muchos
dispositivos externos (o periféricos) están conectados a la computadora vía USB. Los dispositivos conectados
internamente son generalmente de cold-plug (o «conectables en frío» en español), lo que significa que el sistema
debe ser apagado para conectar o desconectar un dispositivo. Los dispositivos USB son hot-plug (o «conectables en
caliente» en español), lo que significa se conectan o desconectan mientras el sistema está funcionando.
Nota: Los gráficos a continuación ofrecen ejemplos de uso del comando lsusb. Este
comando no está disponible dentro del entorno de la máquina virtual de este curso.
Para mostrar los dispositivos conectados al sistema vía USB, ejecuta el comando lsusb:
La opción detallada, -v, del comando lsusb muestra una gran cantidad de detalles acerca de cada dispositivo:
HAL o «Hardware Abstraction Layer» en inglés, es la Capa de Abstracción de Hardware. El demonio o programa
vigilante (o «daemon» en inglés) de la HAL es hald, un proceso que recoge información sobre todos los dispositivos
conectados al sistema. Cuando se producen eventos que cambian el estado de los dispositivos conectados, tales
como un dispositivo USB es conectado al sistema, el hald emite esta nueva información a los procesos que se hayan
registrado para ser notificados sobre nuevos eventos.
Nota: El gráfico siguiente proporciona un ejemplo de uso del comando lshal. Este comando no
está disponible dentro del entorno de la máquina virtual de este curso.
El comando
lshal te permite ver los dispositivos detectados por HAL. Este comando produce una gran cantidad de salidas; a
continuación, se ofrece una pequeña muestra:
10.5 Los Dispositivos de Disco
Los Dispositivos de Disco (también conocidos como discos duros) se pueden conectar al sistema de varias maneras;
el controlador puede integrarse a la tarjeta madre, a una tarjeta PCI (Interconexión de Componente Periférico) o a
un dispositivo USB.
Los discos duros se dividen en particiones. Una partición es una división lógica de un disco duro, diseñada para tomar
una gran cantidad de espacio de almacenamiento disponible y dividirlo en «trozos» más pequeños. Si bien en
Microsoft Windows es común tener una única partición para cada disco duro, en las distribuciones de Linux lo común
es tener varias particiones por disco duro.
Algunos discos duros hacen uso de una partición llamada Registro de Arranque Maestro (MBR o «Master Boot
Record» en inglés), mientras que otros hacen uso de un tipo de partición llamada Tabla de Particiones GUID (GPT o
«GUID Partitioning Table» en inglés). El tipo MBR de la partición se ha utilizado desde los días tempranos de la
computadora personal (PC o Personal Computer) y el tipo GPT ha estado disponible desde el año 2000.
Un viejo término usado para describir un disco duro interno es «disco fijo», ya que el disco es fijo (no extraíble). Este
término dio lugar a varios nombres de comando: los comandos fdisk, cfdisk y sfdisk son herramientas para trabajar
con las particiones discos MBR.
Los discos GPT usan un tipo de particionado más nuevo, que permite al usuario dividir el disco en más particiones de
lo que soporta una MBR. La GPT también permite tener particiones que pueden ser más grandes que dos terabytes
(MBR no lo permite). Las herramientas para gestionar los discos GPT se llaman de manera similar a las contrapartes
de fdisk: gdisk, cgdisk y sgdisk.
También existe una familia de herramientas que intenta apoyar ambos tipos de disco MBR y GPT. Este conjunto de
herramientas incluye al comando parted y la herramienta gráfica gparted.
Las unidades de disco duro están asociadas a los nombres de archivos (llamados archivos de dispositivo) que se
almacenan en el directorio /dev. Diferentes tipos de unidades de disco duros reciben nombres ligeramente
diferentes: hd para los discos duros IDE (Intelligent Drive Electronics o «Unidad Electrónica Inteligente» en español) y
sd para USB, SATA (Serial Advanced Technology Attachment o «Aditamento de Tecnología Serial Avanzada» en
español) y los discos duros SCSI (Small Computer System Interface o «Interfaz Estándar de Equipos Pequeños» en
español).
A cada disco se le asigna una letra, por ejemplo, el primer disco duro IDE tendría un nombre de archivo de
dispositivo /dev/hda y el segundo disco duro IDE se asociaría al archivo de dispositivo /dev/hdb.
Las particiones reciben números únicos para cada dispositivo. Por ejemplo, si un disco duro USB tenía dos
particiones, éstas pueden asociarse a los archivos de dispositivo /dev/sda1 y /dev/sda2.
En la salida siguiente puedes ver que este sistema tiene tres dispositivos sd: /dev/sda, /dev/sdb y /dev/sdc. También
puedes ver que hay dos particiones en el primer dispositivo (como lo demuestran los archivos /dev/sda1 y
/dev/sda2) y una partición en el segundo dispositivo (según lo visualiza el archivo /dev/sdb1):
En el ejemplo siguiente se utiliza el comando fdisk para mostrar la información de la partición en el primer
dispositivo de sd.
Los discos ópticos, referidos a menudo como CD-ROM, DVD o Blue-Ray son medios de almacenamiento extraíbles.
Mientras que algunos dispositivos usados con discos ópticos son de sólo lectura, otros pueden ser grabados
(escritos), cuando se utiliza un tipo de disco grabable. Hay varios estándares para los discos grabables y regrabables,
como CD-R, CD+R, DVD+RW y DVD-RW. Estos estándares de soporte físico van más allá del alcance del plan de
estudios.
La ubicación de estos discos extraíbles en el sistema de archivos es una consideración importante para un
administrador de Linux. Las distribuciones modernas a menudo montan los discos bajo la carpeta /media, mientras
que las distribuciones antiguas suelen montarlos en la carpeta /mnt.
Al insertar los discos, la mayoría de las interfaces GUI piden al usuario que tome una acción, así como abrir el
contenido del disco en un explorador de archivos o iniciar un programa de multimedia. Cuando el usuario termina de
usar el disco, conviene expulsarlo mediante el menú o con el comando eject (o «expulsar» en español). Mientras que
presionar el botón de expulsar se abrirá la bandeja de disco, algunos programas no se darán cuenta que el disco ya
no está en el sistema de archivos.
Lamentablemente, desde los primeros días de la PC, los principales proveedores no han aprobado estándares de
video, por lo que cada dispositivo de visualización de video generalmente requiere un controlador propietario
suministrado por el proveedor. Los drivers o controladores son programas de software que permiten al sistema
operativo comunicarse con el dispositivo.
Los drivers deben estar escritos para el sistema operativo específico, algo que se hace comúnmente para Microsoft
Windows, pero no siempre para Linux. Afortunadamente, los tres proveedores de visualización de video más grande
ahora proporcionan al menos cierto nivel de soporte para Linux.
Hay dos tipos de cables de vídeo de uso general: el cable analógico de 15 pines Video Graphics Array (VGA) y el de
29 pines Digital Visual Interface (DVI).
Para que los monitores trabajen correctamente con las tarjetas de video, deben ser capaces de soportar la misma
resolución que la tarjeta de video. Normalmente, el software de la tarjeta de video (comúnmente el servidor X.org)
normalmente será capaz de detectar automáticamente la máxima resolución que la tarjeta de vídeo y el monitor
pueden soportar y establecer la resolución de pantalla a ese valor.
Las herramientas gráficas normalmente sirven para cambiar tu resolución, así como el número máximo de colores
que se pueden mostrar (conocido como la profundidad de color) con tu distribución de Linux. Para las distribuciones
que utilizan el servidor X.org, se puede utilizar el archivo /etc/X11/xorg.conf para cambiar la resolución, profundidad
de color y otros ajustes.
Para poder utilizar un dispositivo en Linux puede haber varios tipos de software que se requieren. El primero es el
software de driver. El driver puede compilarse como parte del kernel de Linux, cargado al kernel como un módulo o
cargado por un comando de usuario o una aplicación. La mayoría de los dispositivos tienen el driver incorporado en
el kernel o lo tienen cargado al kernel, ya que el driver puede requerir una clase de acceso de nivel bajo que tiene el
kernel con los dispositivos.
Los dispositivos externos, como las impresoras y los escáneres normalmente tienen sus drivers cargados por una
aplicación y estos drivers a su vez se comunican a través del dispositivo vía el kernel por una interfaz como USB.
Para activar los dispositivos en Linux con éxito, es mejor consultar la distribución de Linux para ver si el dispositivo
está certificado para trabajar con esa distribución. Las distribuciones comerciales como Red Hat y SUSE tienen
páginas web con una lista de hardware certificado o aprobado para trabajar con su software.
Consejos adicionales para conectar tus dispositivos de manera exitosa: evitar dispositivos nuevos o altamente
especializados y consultar con el proveedor del dispositivo para ver si soportan Linux antes de hacer cualquier
compra.
Las fuentes de poder son los dispositivos que convierten la corriente alterna (120v, 240v) a corriente directa la cual
la computadora utiliza en varios voltajes (3.3v, 5v, 12v, etc.). Las fuentes de poder generalmente no son
programables, sin embargo, su funcionamiento tiene un impacto importante en el resto del sistema.
Aunque no son supresores de picos, estos dispositivos a menudo protegen la computadora de las fluctuaciones en el
voltaje que provienen del origen. Es aconsejable que el administrador de red elija una fuente de poder basada en la
calidad más que en el precio, ya que una falla de la fuente de poder puede resultar en la destrucción de la
computadora.