5.0 Archivos de Dispositivos

En este captulo se presenta un resumen que le explica que es un archivo de 
dispositivo y de como crearlo. Tambin se listan algunos de los archivos de 
dispositivos ms importantes. El listado cannico de los archivos de 
dispositivos se encuentra en /usr/src/linux/Documentation/devices.txt, siempre 
y cuando el cdigo fuente del kernel Linux se encuentre instalado en el 
sistema. El listado de dispositivos que se presenta en este captulo 
corresponde a los archivos de dispositivos de la versin 2.2.17 del kernel 
Linux.



5.1 El Script MAKEDEV

Despus de haber instalado tu sistema GNU/Linux, la mayora de los archivos 
de dispositivos ya se encuentran creados y listos para ser utilizados. Si por 
alguna razn necesita crear un archivo de dispositivo, entonces debe intentar 
utilizar en primer lugar el Script MAKEDEV. Este script se encuentra ubicado 
generalmente en /dev/MAKEDEV, tambin puede llegar a existir una copia (o un 
enlace simblico) en /sbin/MAKEDEV. Si alguna o ambas rutas son correctas y no 
se encuentran definida en tu variable de entorno PATH, entonces debers 
especificar la ruta completa explcitamente.

En general el comando es utilizado como:

#/dev/MAKEDEV -v ttyS0
create ttyS0 c 4 64 root:dialout 0660

El comando anterior crear el archivo de dispositivo /dev/ttyS0 como un 
dispositivos de caracteres, con un valor de 4 para el nodo mayor y con un 
valor de 64 para el nodo menor; tendr como permisos de acceso 0660 y su dueo 
y grupo sern root:dialout.

ttyS0 es un puerto serial. Los nmeros de nodo mayor y menor son entendidos 
por el kernel. El kernel utiliza nmeros para referirse a dispositivos de 
hardware, esta forma de referenciar un dispositivo puede que llegue a ser muy 
difcil de recordar, por lo que utilizamos nombres de archivos. Los permisos 
de acceso 0660 significa permisos de lectura y escritura para su dueo (en 
este caso root) y permisos de lectura y escritura para los miembros del grupo 
al que pertenece este archivo (en este caso dialout), y ningn permiso para el 
resto del mundo. 


5.2 El comando mknod

MAKEDEV es la manera preferida de crear archivos de dispositivos 
que no se encuentren presentes. No obstante, algunas veces el script MAKEDEV 
no tiene informacin referente al archivo de dispositivo que desea crear, por 
lo que no ser posible crear el archivo de dispositivo con MAKEDEV. 
Aqu es cuando debe emplear el comando mknod. Para utilizar el comando mknod 
necesita conocer los valores numricos de los nodos mayor y menor del archivo 
de dispositivo a crear. El archivo devices.txt es la fuente cannica para 
obtener esta informacin, dicho archivo viene con la documentacin del kernel.

Como ejemplo, suponga que la versin instalada del script MAKEDEV no conoce 
como crear el archivo de dispositivo /dev/ttyS0. Entonces, necesita utilizar 
el comando mknod para crearlo. Al observar el archivo devices.txt, conoce que 
ttyS0 es un archivo de dispositivo de caracteres con nmero mayor 4 y nmero 
menor 64. Con estos datos ya cuenta con toda la informacin necesaria para 
crear el archivo.

# mknod /dev/ttyS0 c 4 64
# chown root.dialout /dev/ttyS0
# chmod 0644 /dev/ttyS0
# ls -l /dev/ttyS0
crw-rw----   1 root dialout    4,   64 Oct 23 18:23 /dev/ttyS0

Como podr observar, se necesitan muchos ms pasos (sin MAKEDEV) para poder 
crear el archivo. En este ejemplo, puede contemplar todo el proceso requerido. 
Es improbable de que el archivo ttyS0 no pueda ser creado por el script 
MAKEDEV, pero es suficiente para ilustrar el ejemplo.



5.3 Listado de dispositivos

El listado siguiente no tiene la intencin de ser exhaustivo o detallado como 
debera. Muchos de estos archivos de dispositivos necesitan soporte compilado 
dentro del kernel. Lea la documentacin del kernel para obtener los detalles 
de cada archivo en particular.

Si piensa que existen otros archivos de dispositivos que deben estar en este 
listado, hgamelo saber. Intentar inclurlos en la prxima revisin.

/dev/dsp
Procesador de Seal Digital. Bsicamente forma la interface entre el software 
que produce sonido con tu tarjeta de sonido. Es un dispositivo de caracteres 
con nodo mayor 14 y menor 3.
/dev/fd0
La primera unidad de disquete. Si tiene la suerte suficiente de contar con 
varias unidades, entonces estarn numeradas secuencialmente. Este es un 
dispositivo de caracteres con nodo mayor 2 y menor 0.
/dev/fb0
El primer dispositivo framebuffer. El framebuffer es una capa abstracta entre 
el software y el hardware de video. De esta manera las aplicaciones no 
necesitan conocer el tipo de hardware existente, aunque si es necesario que 
conozcan como comunicarse con la API (Interface de Programacin de Aplicacin) 
del controlador del framebuffer, que se encuentra bien definida y 
estandarizada. El framebuffer es un dispositivo de caracteres con nodo mayor 
29 y nodo menor 0.
/dev/hda
/dev/hda es el dispositivo IDE maestro que se encuentra adjunto al controlador 
IDE primario. /dev/hdb es el dispositivo IDE esclavo sobre el controlador 
primario. /dev/hdc y /dev/hdd son los dispositivos maestro y esclavo 
respectivamente sobre el controlador secundario. Cada disco se encuentra 
dividido en particiones. Las particiones 1-4 son particiones primarias y las 
particiones 5 en adelante son particiones lgicas que se encuentran dentro de 
particiones extendidas. De esta manera los nombre de los archivos de 
dispositivos que referencian a cada una de las particiones estn formados de 
varias partes. Por ejemplo /dev/hdc9 es el archivo de dispositivo que 
referencia a la particin 9 (una particin lgica dentro de un tipo de 
particin extendida) sobre el dispositivo IDE maestro que se encuentra adjunto 
al controlador IDE secundario. Los nmeros de los nodos mayor y menor son algo 
ms complejos. Para el primer controlador IDE todas las particiones son 
dispositivos de bloques con nodo mayor 3. El dispositivo maestro hda tiene 
nmero de nodo menor 0 y el dispositivo esclavo hdb tiene un valor para el 
nodo menor 64. Por cada particin dentro de la unidad el valor para el nodo 
menor se obtiene de sumar el valor del nodo menor para la unidad ms el nmero 
de particin. Por ejemplo /dev/hdb5 tiene un valor para el nodo mayor 3 y para 
el nodo menor 69 (64 + 5 = 69). Para las unidades adjuntas a la interface 
secundaria los valores para los nodos son obtenidos de la misma manera, pero 
con valor para el nodo mayor 22.
/dev/ht0
La primera unidad de cinta IDE. Las unidades subsiguientes son numeradas ht1, 
ht2, etc. Son dispositivos de caracteres con valor para el nodo mayor 27 e 
inician con valor de 0 para el nodo menor para ht0, nodo mayor 1 para ht1, etc.
/dev/js0
El primer joystick anlogo. Los joysticks subsiguientes tienen los nombres 
js1, js2, etc. Los joysticks digitales tienen los nombres djs0, djs1, etc. Son 
dispositivos de caracteres con valor para el nodo mayor 15. Los valores para 
el nodo menor en los joysticks anlogos comienzan en 0 y llega a  127 (ms que 
suficiente hasta para el ms fantico de los jugadores). Los valores para el 
nodo menor para joysticks digitales comienzan desde 128 en adelante.
/dev/lp0
El primer dispositivo para impresoras con puerto paralelo. Las archivos de 
dispositivos para puertos paralelos para impresoras subsiguientes tienen los 
nombres lp1, lp2, etc. Son dispositivos de caracteres con valor para el nodo 
mayor 6 y valor para el nodo menor 0 para lp0 y numerados secuencialmente para 
el resto de los archivos de dispositivos lp.
/dev/loop0
El primer dispositivo loopback. Los dispositivos Loopback son utilizados para 
montar sistemas de archivos que no se encuentren localizados en dispositivos 
de bloques tales como los discos. Por ejemplo, si necesita montar una imagen 
CD ROM iso9660 sin "quemarla" en un CD entonces necesita utilizar un 
dispositivo loopback. Usualmente esta manera de trabajar es transparente para 
el usuario y es manejado por el comando mount. Dirjase a las pginas de 
manual para mount y losetup. Los dispositivos loopback son dispositivos de 
bloques con valor de 7 para el nodo mayor y valores para los nodos menores 
iniciando en 0 y numerados secuencialmente.
/dev/md0
Primer grupo de metadiscos. Los metadiscos estn relacionados a los 
dispositivos RAID (Arreglo Redundante para Discos Independientes). Lea los 
COMOS (HOWTOs) relacionados con RAID existentes en LDP para conocer ms 
detalles. Los dispositivos metadiscos son dispositivos de bloques con valor de 
9 para el nodo mayor y valores para el nodo menor comenzando en 0 y numerados 
secuencialmente.
/dev/mixer
Este archivo de dispositivo es parte del controlador OSS (Sistema de Sonido 
Abierto). Dirjase a la documentacin de OSS http://www.opensound.com para 
conocer ms detalles. /dev/mixer es un dispositivo de caracteres con valor de 
14 para el nodo mayor y 0 para el nodo menor.
/dev/null
El bit bucket. Un hoyo negro en donde puede enviar datos que nunca ms volver 
a ver. Todo lo que se enve a /dev/null desaparece. Puede ser utilizado, por 
ejemplo, para ejecutar un comando y no ver en la terminal la salida estndar 
(debe redirigir la salida estndar a /dev/null). Es un dispositivo de 
caracteres con valor de 1 para el nodo mayor y 3 para el nodo menor.
/dev/psaux
El puerto para el mouse PS/2. Este es un dispositivo de caracteres con valor 
de 10 para el nodo mayor y 1 para el nodo menor.
/dev/pda
Discos IDE adjuntos al puerto paralelo. Los nombres para estos discos son 
similares a los utilizados para los discos internos adjuntos a los 
controladores IDE (/dev/hd*). Son dispositivos de bloques con un valor de 45 
para el nodo mayor. Los valores para los nodos menores necesitan un poco de 
explicacin. El primer dispositivo /dev/pda tiene un valor de 0 para el nodo 
menor. Por cada particin dentro de la unidad el valor para el nodo menor se 
obtiene de sumar el valor del nodo menor para la unidad ms el nmero de 
particin. Cada dispositivo tienen un lmite de 15 particiones como mximo en 
vez de las 63 que tienen los discos IDE internos. /dev/pdb tiene un valor de 
16 para el nodo menor, /dev/pdc 32 y /dev/pdd 48. Por ejemplo, el valor del 
nodo menor para el dispositivo /dev/pdc6 debe ser 38 (32 + 6 = 38). Este 
esquema tiene un lmite de 4 discos paralelos con 15 particiones cada uno como 
mximo.
/dev/pcd0
Unidades CD ROM adjuntos al puerto paralelo. Los nombres para estos 
dispositivos estn numerados secuencialmente /dev/pcd0, /dev/pcd1, etc. Son 
dispositivos de bloques con un valor de 16 para el nodo mayor. /dev/pcd0 
tiene un valor de 0 para el nodo menor, las dems unidades tienen valores 
secuenciales para el nodo menor 1, 2, etc.
/dev/pt0
Dispositivos de cintas adjuntos al puerto paralelo. Las cintas no tienen 
particiones por lo tanto los nombres para estos dispositivos estn numerados 
secuencialmente /dev/pt0, /dev/pt1, etc. Son dispositivos de caracteres con un 
valor de 96 para el nodo mayor. Los valores para el nodo menor comienzan con 0 
para /dev/pt0, 1 para /dev/pt1, etc.
/dev/parport0
Los puertos paralelos. La mayora de los dispositivos adjuntos a los puertos 
paralelos tienen su propios controladores. Este es un disposito que permite 
acceder al puerto paralelo directamente. Es un dispositivo de caracteres con 
un valor de 99 para el nodo mayor y con un valor de 0 para el nodo menor. Los 
dispositivos subsiguientes tienen como valores secuenciales para el nodo menor.
/dev/random o /dev/urandom
Estos son generadores de nmeros aleatorios para el kernel. /dev/random es un 
generador no-determinstico, lo que significa que el valor del prximo nmero 
aleatorio no puede ser obtenido utilizando el nmero anterior. Para generar 
los nmeros utiliza el entropy del hardware del sistema. Cuando no existan mas 
entropy se debe esperar hasta que se coleccionen ms para leer un nuevo 
nmero. /dev/urandom trabaja de manera similar. Inicialmente utiliza el 
entropy del hardware del sistema, cuando no existan mas entropy contina 
retornando nmeros que se elaboran a partir de una frmula generadora de 
nmeros pseudo aleatorios. Utilizar este dispositivo es menos seguro para 
propsitos crticos como la generacin de una clave criptogrfica. Si la 
seguridad es el factor importante debe utilizar /dev/random, en cambio si lo 
que necesita es velocidad el dispositivo /dev/urandom puede trabajar mejor. 
Ambos son dispositivos de caracteres con un valor de 1 para el nodo mayor, los 
valores para el nodo menor son 8 y 9 para /dev/random y /dev/urandom 
respectivamente.
/dev/zero
Este es un dispositivo que puede utilizar de manera simple para obtener ceros. 
Cada vez que lea el dispositivo obtiene como respuesta un cero. Puede ser 
til, por ejemplo, para crear un archivo de tamao fijo sin que le importe su 
contenido. /dev/zero es un dispositivo de caracteres con un valor de 1 para el 
nodo mayor y 5 para el nodo menor.




