Capítulo A04: Dispositivos de hardware en GNU/Linux

Anuncio
INACAP
Universidad Tecnológica de Chile
Sede Santiago Centro
Taller de Sistemas Operativos I
Red Hat Academy
Sesión 04
Dispositivos de hardware en GNU/Linux
Dispositivos de Hardware en GNU/Linux
 Los dispositivos de hardware (o periféricos) son sistemas físicos que se
conectan al computador y permiten intercambiar datos desde o hacia la
CPU.
 Desde los comienzos de Unix, los dispositivos han tenido un tratamiento
especial, diferente al que se les da en sistemas operativos como
Windows, donde se les diferencia del sistema de archivos.
 Es bueno recordar que en Unix y GNU/Linux todo es un archivo,
filosofía que indica que tanto software como hardware pueden accederse
a través del mismo sistema de archivos.
 En Unix y en GNU/Linux, los dispositivos de hardware pueden ser
accedidos desde una serie de archivos presentes en el directorio /dev,
bajo la denominación especial de nodos de dispositivo (o device
nodes).
Page  2
Dispositivos de Hardware en GNU/Linux
 Los nodos de dispositivo pueden clasificarse en
• nodos de dispositivo de caracteres
• nodos de dispositivo de bloques
(ver la URL de Internet: http://www.lanana.org/docs/device-list/ )
de caracteres
de bloques
Aquellos que transmiten bytes
individuales desde o hacia el
computador
Aquellos que transmiten bytes
en grupos desde o hacia el
computador
• ratón
• discos duros
• teclado
• diskettes
• memoria RAM
• pendrives
• terminales de texto
• CD-ROMs
Page  3
Denominaciones de dispositivos en GNU/Linux
 Cada grupo de dispositivos adquiere un nombre especial dentro de
GNU/Linux, como por ejemplo:
Page  4
Terminales
Pseudo
terminales
Consolas
/dev/tty1
/dev/tty2
/dev/tty3
...
/dev/pts/1
/dev/pts/2
/dev/pts/3
...
/dev/vcs1
/dev/vcs2
/dev/vcs3
...
Puertos
Puertos
serie
serie
/dev/ttyS0
/dev/ttyS1
/dev/modem
...
Puertos
paralelos
Disketteras
Dispositivos
PATA/IDE
Dispositivos
SCSI
/dev/lp0
/dev/lp1
/dev/lp2
...
/dev/fd0
/dev/fd1
/dev/fd2
...
/dev/hda
/dev/hdb
/dev/hdc
...
/dev/sda
/dev/sdb
/dev/sdc
...
Denominaciones de dispositivos en GNU/Linux
 Otros nodos de dispositivos son:
Page  5
Cintas de
datos
Discos
RAID
/dev/st
/dev/nst
/dev/ht
/dev/nht
...
/dev/md0
/dev/md1
/dev/md2
...
Flujos
estándar
Dispositivos
de audio
Dispositivos
de memoria
/dev/stdin
/dev/stdout
/dev/stderr
...
/dev/dsp
/dev/midi00
/dev/mixer
...
/dev/mem
/dev/ram0
/dev/initrd
/dev/kmem
/dev/port
Especiales
/dev/root
/dev/cdrom
/dev/cdwriter
/dev/swap
/dev/loop
Dispositivos
de ratón y teclado
/dev/input/mice
/dev/psaux
/dev/mouse
/dev/kbd
Pseudodispositivos
/dev/null
/dev/zero
/dev/random
/dev/urandom
Dispositivos de Hardware en GNU/Linux
 Los nodos de dispositivo se conectan con algún driver de dispositivo
(driver de kernel de Linux), que realizan la traducción de mensajes y
traspaso de datos de bajo nivel hacia el hardware real de la máquina.
Nodo de carácter
echo “Mensaje” > /dev/tty1
/dev/tty1
Kernel
Linux
Comando
Driver
Hardware
 Además, los nodos de dispositivo tienen 3 atributos (a estudiarse en el
curso de administración de RHEL 5):
• tipo de nodo (de carácter, nodo o tubería)
• número mayor (categoría de dispositivo: disco, cinta, mouse, audio, etc.)
• número menor (subcategoría de dispositivo)
Page  6
Descripción de tipos de nodos de dispositivo
1) Nodos de dispositivo /dev/tty:
• Estos nodos representan las terminales virtuales de pantalla completa.
• El nombre viene de la abreviatura de “teletypewriter” (o teletipo, en inglés).
• Las terminales virtuales se nombran de la 1 hacia adelante, dependiendo de
si están asociadas a la tecla F1 (/dev/tty1), F2 (/dev/tty2), etc.
• La terminal virtual /dev/tty o /dev/tty0 hace referencia siempre a la terminal
virtual actual en la que se escriben comandos.
• Utilice el comando de consola tty para conocer el nombre de la
pseudoconsola donde está trabajando.
Page  7
Descripción de tipos de nodos de dispositivo
2) Nodos de dispositivo /dev/pts/N:
• Estos nodos representan las pseudoterminales creadas en la interfaz gráfica
(u otro dispositivo), pero que no son de pantalla completa ni asociadas a
dispositivos serie o terminales tty.
• El nombre viene de la abreviatura de “pseudoterminal”.
• Las terminales virtuales se nombran de la 1 hacia adelante, dependiendo del
orden de creación: la primera se llama /dev/pts/1, la segunda /dev/pts/2, y
así sucesivamente.
• Utilice el comando de consola tty para conocer el nombre de la
pseudoconsola donde está trabajando.
Page  8
Descripción de tipos de nodos de dispositivo
3) Nodos de dispositivo /dev/vcs:
• Estos nodos representan las consolas virtuales, o memoria asociada a cada
una de las terminales virtuales del sistema.
• El nombre viene de la abreviatura de “virtual console”.
• Las consolas virtuales se nombran de la 1 hacia adelante, dependiendo del
orden de creación: la primera se llama /dev/vcs1, la segunda /dev/vcs2, y
así sucesivamente. La consola donde se escribe texto actualmetne se
denomina /dev/vcs0 o /dev/vcs.
• Pueden utilizarse para hacer vaciados de pantalla (screenshots) y dar
soporte a hardware especial de lectura de pantalla.
Page  9
Descripción de tipos de nodos de dispositivo
4) Nodos de dispositivo /dev/ttyS:
• Estos nodos representan los puertos serie del sistema (actualmente en
desuso), a través de los que se pueden conectar módems, terminales
externas de comando o dispositivos portátiles (como Palms).
• Los puertos se nombran según su organización en la placa madre. De ahí se
tiene el primer puerto serie como /dev/ttyS0, el segundo como /dev/ttyS1, y
así sucesivamente.
• Si GNU/Linux detectó un módem conectado al puerto serie, es probable que
exista también el nodo /dev/modem enlazado al nodo del puerto serie
correspondiente. También otros dispositivos pueden estar enlazados al
puerto, según convenga.
Page  10
Descripción de tipos de nodos de dispositivo
5) Nodos de dispositivo /dev/lp o /dev/pp:
• Estos nodos representan los puertos paralelos del sistema (de tipo
Centronics).
• Se denominan según su organización en la placa madre, como /dev/lp0, el
segundo como /dev/lp1, etc. También se pueden denominar con el
nombre /dev/pp.
• La sigla lp proviene del término Line Printer (o impresora de línea), nombre
dado a las impresoras conectadas antiguamente al puerto paralelo de los
computadores. La sigla pp viene del término Parallel Port (o puerto
paralelo).
Page  11
Descripción de tipos de nodos de dispositivo
6) Nodos de dispositivo /dev/fd:
• Estos nodos representan las disketteras instaladas en el sistema, de forma
interna. Las disketteras externas USB normalmente reciben otro nombre de
dispositivo (tal como /dev/sda, /dev/sdb, etc.)
• Dependiendo de la densidad de datos soportada por la unidad (densidad
simple, doble o alta - SD, DD o HD) pueden recibir nombres variados. Los
ejemplos siguientes son recurrentes:
» /dev/fd0 : primera diskettera autodetectada.
» /dev/fd1 : segunda diskettera detectada.
» /dev/fd0d360 : primera diskettera de 5' 25'' pulgadas, de 360 kiB.
» /dev/fd0u720 : primera diskettera de 3' 5'' pulgadas, de 720 kiB.
» /dev/fd0u1440: primera diskettera de 3' 5'' pulgadas, de 1440 kiB.
etc...
Page  12
Descripción de tipos de nodos de dispositivo
7) Nodos de dispositivo /dev/hd:
• Estos nodos representan los discos duros de tipo IDE (ATA o Parallel ATA con conector de 40 pines) conectados al sistema.
• En GNU/Linux, estos dispositivos pueden tener hasta 63 particiones en total.
Recordar que estos discos soportan como máximo:
» 4 particiones primarias.
» 3 particiones primarias + 1 extendida + particiones lógicas.
• Los discos IDE reciben el nombre de nodo estándar /dev/hd más una letra,
para especificar el orden de disco y de puerto IDE en la placa madre. Si se
le agrega además un número entre 1 y 63 (ambos inclusive), el nodo hace
referencia a alguna partición dentro de dicho disco.
Page  13
Descripción de tipos de nodos de dispositivo
Puertos IDE de la placa madre:
Disco /dev/hda con 4 particiones primarias:
Maestro: /dev/hda
/dev/hda1
Puerto IDE0
Esclavo: /dev/hdb
/dev/hda2
Puerto IDE1
Maestro: /dev/hdc
/dev/hda3
Esclavo: /dev/hdd
/dev/hda4
NOTA: si existen más puertos IDE en la placa madre, los
siguientes dispositivos toman el nombre 'hd' seguido de la
letra e, f, g, etc., según corresponda.
Disco /dev/hdb con 2 particiones primarias, 1 extendida y 2 lógicas:
/dev/hdb1
/dev/hdb2
/dev/hda (el disco
completo)
/dev/hdb5
(part. lógica 1)
/dev/hdb4
(extendida)
Page  14
/dev/hdb (el disco
completo)
/dev/hdb6
(part. lógica 2)
Descripción de tipos de nodos de dispositivo
8) Nodos de dispositivo /dev/sd:
• Estos nodos representan los discos con interfaz SCSI generales, tales como
discos SATA, unidades de CD-ROM SATA, pendrives y otros.
• Todos estos dispositivos reciben los nombres /dev/sda, /dev/sdb, /dev/sdc,
etc., según el orden temporal de conexión con el sistema u orden temporal
de detección por parte del kernel Linux. Esto indica que si un dispositivo
tomó una identidad en algún momento, puede que tome otro nombre luego
de extraerlo y volver a conectarlo en un futuro.
• Los discos SATA, así como los pendrives pueden tomar también un número
adicional como parte del nombre, el que indicará alguna de las particiones
creadas dentro del dispositivo. Por ejemplo, /dev/sda3 indica la tercera
partición dentro del disco /dev/sda, mientras que /dev/sda indica el disco
completo (desde el sector de boot hasta el último sector de dicho disco).
Page  15
Descripción de tipos de nodos de dispositivo
9) Nodos de dispositivo /dev/st:
• Estos nodos representan unidades de cinta extraíbles (tape units).
• Se denominan como: /dev/ht, para unidades de cinta con interfaz IDE;
/dev/nht, para unidades decinta con interfaz IDE, no rebobinables; /dev/st,
para unidades de cinta con interfaz SCSI; y, /dev/nst, para unidades decinta
con interfaz SCSI, no rebobinables.
10) Nodos de dispositivo /dev/md:
• Estos nodos representan unidades de disco RAID (Redundant Array of
Indenpendent Disks).
Page  16
Descripción de tipos de nodos de dispositivo
11) Nodos de dispositivo especiales:
• Estos nodos representan dispositivos especiales del sistema y son
opcionales en su mayoría (a excepción de /dev/loop).
• Estos nodos especiales son los siguientes:
» /dev/root:
representa el punto de montaje del directorio /
» /dev/cdrom:
representa el nodo asociado al dispositivo de CD-ROM
» /dev/cdwriter: representa el nodo asociado al dispositivo de CD-RW
Page  17
» /dev/swap:
representa el nodo asociado a la partición de memoria
virtual en uso actualmente
» /dev/loop0:
representa el dispositivo de sistema de archivo virtual
para imágenes del tipo ISO
Descripción de tipos de nodos de dispositivo
12) Nodos de dispositivo para teclado y mouse:
• Estos nodos representan la interfaz directa de datos para teclado y mouse.
• Pueden recibir los siguientes nombres:
Page  18
» /dev/input/mice:
nodo unificado para todos los ratones
» /dev/psaux:
nodo vinculado al puerto PS/2 auxiliar (mouse)
» /dev/mouse:
nodo enlazado al puerto de ratón en uso
» /dev/kbd:
nodo enlazado al teclado de forma directa
(interfaz de bajo nivel de teclado)
Descripción de tipos de nodos de dispositivo
13) Nodos de dispositivo /dev/std:
• Estos nodos representan los dispositivos de entrada/salida básicos de datos
para cualquier aplicación de consola. Son utilizados de forma intensiva por
aplicaciones en el lenguaje C (y otros) y se consideran como nodos
obligatorios dentro de cualquier sistema GNU/Linux.
• Se caracterizan como sigue:
» /dev/stdin:
entrada estándar de datos (usualmente el teclado)
» /dev/stdout:
salida estándar de datos (usualmente la terminal)
» /dev/stderr:
salida estándar de error (usualmente la terminal)
• Su importancia radica en que pueden redireccionarse, es decir, que pueden
señalar hacia otros dispositivos diferentes al teclado y/o terminal, por lo que
pueden usarse para recibir datos de otros dispositivos, eliminar la salida de
mensajes de error por pantalla, etc.
Page  19
Descripción de tipos de nodos de dispositivo
14) Nodos de dispositivo /dev/dsp:
• Estos nodos representan dispositivos de audio del sistema, relacionados
normalmente con el sistema OSS (Open Sound System) de GNU/Linux. Hoy
en día, este sistema se reemplaza por ALSA (Advanced Linux Sound
Architecture).
• Si se dispone de ellos en el sistema, los nodos pueden significar lo siguiente:
Page  20
» /dev/dsp:
entrada/salida de sonido digital (micrófono y
parlantes, respectivamente)
» /dev/mixer:
control de mezcla de audio
» /dev/sequencer:
secuenciador de audio
» /dev/midi00:
primer puerto MIDI
» /dev/audio:
dispositivo de audio compatible con SUN audio
Descripción de tipos de nodos de dispositivo
15) Nodos de dispositivo de memoria RAM/ROM:
• Estos nodos representan los dispositivos de memoria RAM/ROM del
sistema. Se debe tener cuidado máximo al manipularlos, debido a que su
escritura puede ocasionar problemas de corrupción de datos de memoria.
• Los nodos característicos asociados son:
Page  21
» /dev/mem:
dispositivo de acceso físico a memoria del sistema
» /dev/ram:
dispositivo de acceso a la RAMdisk (sistema de archivos
virtual en memoria RAM) del sistema.
» /dev/initrd:
dispositivo RAMdisk con que GNU/Linux puede acceder
a los drivers del sistema en la etapa de booteo del
sistema operativo
» /dev/kmem:
dispositivo de memoria RAM del kernel
» /dev/port:
dispositivo que representa los puertos de E/S de datos
del sistema
Descripción de tipos de nodos de dispositivo
16) Nodos de pseudodispositivos de memoria:
• Estos nodos representan dispositivos no físicos, que proporcionan
capacidades adicionales al sistema.
• Entre ellos, se pueden enumerar los siguientes:
» /dev/null:
dispositivo que no entrega datos y que descarta todos
los datos que recibe
» /dev/zero:
dispositivo que entrega sólo ceros a la salida
» /dev/random: dispositivo que entrega datos al azar (generador nodeterminístico de datos aleatorios)
» /dev/urandom: dispositivo que entrega datos al azar (de menor
seguridad que /dev/random, pero más rápido)
Page  22
Ejemplos de uso de nodos de dispositivo
 Los siguientes son algunos ejemplos de lo que se puede hacer al juntar
la redirección y los nodos de dispositivo ya estudiados:
a) echo “mensaje” > /dev/tty1
Se imprime la palabra mensaje en la consola virtual /dev/tty1.
b) cat /dev/sda
Se visualizan en la consola todos los datos del disco duro SATA
/dev/sda, desde el sector de booteo hasta el último sector (detenga la
visualización, utilizando las teclas CTRL+C).
c) cat /dev/sda1 > /dev/sda2
(NOTA: comando peligroso)
Realiza una copia espejo de la partición /dev/sda1 en la partición
/dev/sda2. La copia destruye el contenido anterior de /dev/sda2.
Page  23
Descripción de tipos de nodos de dispositivo
d) cat /dev/cdrom > respaldo.iso
Crea un archivo tipo ISO9660, cuyo contenido es idéntico al del CDROM, sector por sector. Este puede luego grabarse a un CD-RW,
utilizando el comando cdrecord (en RHEL) o un grabador estándar de
CD-RW, como brasero o K3B.
e) cat /dev/dsp > miaudio.snd
Crea un archivo de audio miaudio.snd, que contiene los datos leídos
desde el micrófono conectado a la tarjeta de audio del sistema.
f) cat miaudio.snd > /dev/dsp
Envía los datos del archivo miaudio.snd a la tarjeta de audio del
sistema, de forma que se pueda escuchar el audio por los parlantes del
equipo.
Page  24
Montaje de sistemas de archivo
 Una de las aplicaciones más comunes del uso de los nodos de
dispositivos está relacionada con la utilización de discos duros extraíbles
y pendrives.
 Cada vez que se inserta un dispositivo de almacenamiento de datos
externo, es necesario vincular su sistema de archivos con el de
GNU/Linux, proceso que se denomina en la jerga técnica como montaje
de un sistema de archivos.
 La idea se basa en vincular un directorio (ojalá vacío) de GNU/Linux con
el directorio raíz del pendrive o disco externo, permitiendo así que el
sistema de archivos externo pueda ser accedido a través de los
comandos convencionales del entorno.
 Este proceso actualmente es automático, a través del uso de un sistema
denominado udev, al igual como sucede en sistemas operativos como
Microsoft Windows.
Page  25
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (1)
GNU/Linux
Concepto nuevo:
/
Todo dispositivo de
almacenamiento posee
un directorio raíz en
cada una de sus
particiones.
boot
root
Problema:
usr
home
Page  26
musica
ebooks
a.txt
mnt
/
me
Se desea acceder a
los archivos de la
partición del pendrive.
on
t
s
en
e
u
Q
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (2)
GNU/Linux
Problema:
/
Se desea acceder a
los archivos de la
partición del pendrive.
boot
musica
root
ebooks
a.txt
mnt
usr
home
Page  27
/
Paso Nº 1:
me
Averiguar el nombre
del nodo de dispositivo
asociado al pendrive.
on
t
s
en
e
u
Q
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (3)
Solución:
Insertar el pendrive y ejecutar en la consola el comando dmesg. Luego,
ver el nombre del nodo de dispositivo asociado al pendrive.
Page  28
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (4)
GNU/Linux
Paso Nº 2:
/
Montar el pendrive en
un directorio vacío
(normalmente, en /mnt).
boot
/
musica
mount /dev/sdb1 /mnt
root
a.txt
ebooks
me
mnt
usr
home
Page  29
on
t
s
en
e
u
Q
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (5)
GNU/Linux
/
/
boot
musica
root
ebooks
a.txt
¡El comando mount
hizo que se asociara el
directorio /mnt con los
archivos del pendrive!
mnt
musica
ebooks
Page  30
me
Ahora los archivos se
pueden acceder desde
el directorio /mnt.
me
on
t
s
en
e
u
Q
Montaje de sistemas de archivo
 Modelo del proceso de montaje de discos (6)
Si ya se montó un pendrive o un disco externo, utilizando el comando
mount sin parámetros, se puede ver la lista de dispositivos ya vinculados al sistema
GNU/Linux.
Paso 3:
Para sacar el pendrive de manera segura, es necesario desmontar el
dispositivo. Para ello, escribir el comando umount /dev/sdb1 ó umount /mnt, desde
fuera del directorio /mnt.
Luego, al ejecutar el comando mount sin parámetros, se podrá observar
que el dispositivo ya no está en la lista de sistemas montados.
Page  31
Fin
Fin de la sesión 04
Próxima sesión: Estudio de los procesos en GNU/Linux
Page  32
Descargar