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