Está en la página 1de 8

Explicaciones acerca de /dev

/dev (dispositivos de Linux)


Para los que llevan poco tiempo utilizando Linux, y por qu no, para los que llevan su rato, ac va un
pequeo listado explicativo de qu significan las cosas que puedes encontrar en el rbol de directorios
/dev.
Para aquellos que no lo saben, "/dev" es una parte del rbol de directorios de Linux compuesta por un
sistema de archivos virtual, llamado devfs, que dinmicamente crea directorios y archivos para presentar
una estructura jerarquizada de accesos a diversas caractersticas del sistema, como por ejemplo los discos
duros, la memoria o la pantalla. Cada uno de estos archivos y directorios cuple una funcin particular y
debido a esta funcin requieren privilegios especiales para ser operados, siendo la mayora de estos
archivos propiedad de root y chmod'eados a 0660.

Tabla de contenidos
1 Accesos Virtuales ms Comunes
1.1 /dev/null
1.2 /dev/zero
1.3 /dev/full
2 Acceso a Dispositivos de Disco
2.1 /dev/hd*
2.2 /dev/sd*
2.3 /dev/sr*
2.4 /dev/fd*
3 Acceso a Componentes del Sistema
3.1 /dev/audio
3.2 /dev/sound
3.3 /dev/random y /dev/urandom
3.4 /dev/input/*
3.5 /dev/mem
3.6 /dev/rtc y /dev/hpet
3.7 /dev/tty* y /dev/pty*
3.8 /dev/xconsole
4 Acceso a Utilidades del Kernel
4.1 /dev/core, /dev/kmem, /dev/kmsg
4.2 /dev/fd (enlace simblico)
4.3 /dev/net/*
4.4 /dev/shm
5 Utilidades Varias
5.1 /dev/fuse
5.2 /dev/nvidia
5.3 /dev/usb/*
5.4 /dev/disk/*
5.5 /dev/kqemu y /dev/vboxvdrv
6 Ms Archivos
7 Autores de este Resumen
8 Leer ms

Accesos Virtuales ms Comunes


/dev/null
Todos hemos escuchado los chistes y referencias a /dev/null. En esencia, es un "hoyo negro" que se
traga sin chistar todo lo que escribas en l, y del cual no es posible leer nada.
En resumen:
Leer desde /dev/null siempre devuelve un error de lectura.
Escribir a /dev/null no sucede nada (se realiza el proceso de lectura desde la fuente, pero no se
realiza ningun proceso de escritura).
Las mecnicas de /dev/null se pueden explicar con comandos sencillos como los siguientes:
dd if=/dev/cdrom of=/dev/null

Este comando copia todo el contenido del CD a /dev/null. Como el archivo /dev/null es un hoyo negro, en
realidad la informacin no va a parar a ninguna parte, aunque igual el programa har el esfuerzo de leerla.
tail -f /dev/null

Este comando no va a hacer nada. Se queda esperando que haya algo que mostrar desde /dev/null, pero
como no es posible leer algo desde ese archivo, y se ha especificado la opcin "-f" para dejar a "tail"
corriendo continuamente, el programa nunca terminar. Presiona CONTROL+C para abortar.

/dev/zero
Este archivo es similar a /dev/null, pero con a diferencia que "contiene", en cierta forma, un nmero
infinito de caracteres ASCII 0. En resumen:
Leer desde /dev/zero siempre devuelve un caracter ASCII 0 (el nulo o 0x00, no el nmero cero).
Escribir a /dev/zero no sucede nada (se realiza el proceso de lectura desde la fuente, pero no se
realiza ningun proceso de escritura).
Prueba a ejecutar el mismo comando de antes:
tail -f /dev/zero

Al igual que antes, nada aparecer en pantalla, pero vers que el uso de tu CPU se va a las nubes, porque
el sistema hace el esfuerzo de leer ms y ms y ms.... ASCIIS nulo.
Prueba este comando para que veas lo que hay en earchivo (presiona CONTROL+C cuando te hayas
convencido que slo hay nulos)
od -vx /dev/zero

POR HACER: ejemplos de uso de /dev/zero

/dev/full
Este archivo es similar a los dos anteriores, pero se comporta como si existiera en un medio que est
siempre lleno, algo as como tratar de escribir a un CD cerrado.
En resumen:
Leer desde /dev/full siempre falla.
Escribir a /dev/full siempre devuelve un error del tipo "no hay suficiente espacio en disco".
Como ves, til para pruebas.

Acceso a Dispositivos de Disco


/dev/hd*
En estricto rigor, /dev/hdXNN donde X puede ser (a, b, c, d) y NN, si existe, es un nmero.
Estos archivos corresponden a las particiones de las unidades de disco duro. Los primeros cuatro, sin
nmeros, son:

hda para el disco Primario Maestro, o IDE 0


hdb para el disco Primario Esclavo, o IDE 1
hdc para el disco Secundario Maestro, o IDE 2
hdd para el disco Secundario Esclavo, o IDE 3

Estos archivos representan la totalidad del disco duro como si fueran un solo archivo, contiguo,
secuencial, por tanto escribir o leer directo de estos archivos es escribir o leer directo del disco duro.
Importante entonces tener cuidado al pasar por aqu.
Los archivos numerados corresponden a las particiones de cada disco duro, siendo, por ejemplo, hda1 la
primera particin del primer disco duro, y hdb18 la dcimooctava particin del segundo disco duro.
Estas numeraciones no son necesariamente contiguas, estn basadas en tres reglas sencillas:
Los nmeros 1 a 4 representan las cuatro particiones estndar IDE, es decir las particiones primarias.
Posterior a esto, los nmeros 5 a 63 (en discos de menos de 32Gb) o 255 (ms de 32Gb) se considera las
particiones lgicas que existen dentro de la particin extendida (que es una de las primarias configuradas
para ese efecto). Por ejemplo, hdb5 es la primera particin lgica del segundo disco duro.
Si hay un espacio no particionado en el disco, sea primario o lgico, se considera como una particin
numerada que no existe, es decir, si hay dos particiones lgicas separadas por un "hueco" de 8Gb, veremos
los archivos para las particiones como hda5 y hda7. El archivo hda6 no existe porque no hay particin en
ese lugar.

Con estas sencillas reglas es fcil entender el particionado con programas en modo texto, como fdisk y
parted. Aunque las interfaces como gparted o qtparted hacen esto ms fcil poque lo hacen visual.

/dev/sd*
Es lo mismo que con los discos IDE, pero el prefijo "sd" es para discos conectados por una interfaz SCSI
o, en general, una interfaz no IDE, aunque existen distribuciones linux que actualmente estn tratando
tanto los discos IDE, SATA, SCSI como sd*. Por ejemplo, discos SATA o pendrives. El primer pendrive
que conectemos a nuestro computador aparecer como sda si no tenemos discos SATA o SCSI, y como
sdc si tenemos dos discos SATA o SCSI, dado que el primer disco ser sda y el segundo sdb.
Las mismas reglas de numeracin anteriores aplican aunque con la salvedad que no existe la limitante de
cuatro discos, por lo que los fanticos de Robotech que se esfuercen lo suficiente podrn montar ms y
ms pendrives hasta recibir el mensaje que ha aparecido el dispositivo /dev/sdf1.

/dev/sr*
Este prefijo es para algunas clases especiales de conexiones SCSI, como por ejemplo, los grabadores de
DVD. Aplica la misma propiedad anterior en cuanto a que si tenemos una interna, la numeracin de las
externas cambia.

/dev/fd*
Estos archivos corresponden a las disqueteras (Floppy Disc) conectadas en el equipo. La primera
disquetera, la configurada al cable IDE FLOPPY 0 o la que bootea el sistema, corresponde a fd0, y la
segunda disquetera, a fd1.

Acceso a Componentes del Sistema


/dev/audio
Este archivo es un acceso al secuenciador de audio del sistema. Si le mandas un archivo de audio "nativo"
a este archivo por medio de echo (por ejemplo, un AIFF), lo ms probable es que lo escuches por los
parlantes del sistema:
echo /media/mi_disco/campana.aiff > /dev/audio

Aplicaciones que hacen uso: no recuerdo ninguna que accese directamente al archivo.

/dev/sound
Esencialmente lo mismo que el anterior. Estoy en proceso de determinar las diferencias.

/dev/random y /dev/urandom
Estos archivos corresponden al generador de nmeros pseudoaleatorio integrado en el kernel Linux.
Este generador es una herramienta que lee y acumula seales de diversos disopsitivos, como el
movimiento del mouse o la tasa de paquetes de red, y por medio de un algoritmo los procesa y los
convierte en informacin que parece como si fuera generada al azar: por eso, "pseudoaleatorio".
La pila de entropa que usan estos dispositivos lee informacin desde varios eventos, como por ejemplo:
los ms comunes son las pulsaciones de teclado y movimiento del mouse como fuente.
algunas mquinas pueden configurarse para leer un sensor de hardware (como la temperatura de la
CPU) y usar el valor como fuente.
los eventos generados por dispositivoc de Interface Humana (HID) conectados va USB pueden
usarse como fuente.
en caso de existir la conexin, la tasa de transferencia de paquetes (no los paquetes mismos)
pueden usarse como fuente.
La diferencia entre random y urandom es que del primero se puede leer mientras haya informacin en la
pila de eventos del sistema, despus de eso se bloquea hasta que suceda algo que genere ms informacin
al azar (por ejemplo, hasta que muevas el mouse). El segundo, urandom, recompila y regenera los eventos
para seguir produciendo nmeros por cuanto tiempo sea necesario, aunque eso lo hace algo menos
prdecible y algo menos seguro.
Aplicaciones que hacen uso: cualquier aplicacin criptogrfica como ssh-keygen, truecrypt,
Blowfish, SSL, etc.

/dev/input/*
Estos archivos con manejadores de Linux para recibir e interpretar los eventos de los dispositivos de
entrada, como: teclado, mouse, joystick, tableta grfica, Wiimote, etc...
Cada archivo corresponde aun dispositivo, para saber qu dispositivo es y en qu estado se encuentra se
usa el programa lsdev (Gestor de Paquetes buscar bajo "procinfo" o similar), o puede buscar los enlaces
simblicos de la forma input/by-path/event-XXX donde XXX es la abreviatura de un dispositivo
como por ejemplo "kbd" (teclado), "usb1" (quiz un joystick USB), etc.
Aplicaciones que hacen uso: el kernel de Linux y algunos demonios y servicios como gpm (mouse en
consola), egd (cargador de entropa del sistema), ppp (manejador de conexiones de modem), etc.

/dev/mem
A que no adivinas? S, es la memoria RAM del sistema. Mucho cuidado por aqu.

/dev/rtc y /dev/hpet
Este archivo es un acceso por BIOS al "reloj de tiempo real" que tiene integrado el computador. Ms
sobre esto en el futuro.
Aplicaciones que hacen uso: cualquiera que requiera temporizacin en procesos hasta milisegundos, por
ejemplo: emuladores, debuggers, etc.

/dev/tty* y /dev/pty*
Estos archivos corresponden a las terminales del sistema.
tty* corresponde a las "terminales reales" o consolas del sistema, es decir, aquellas que pueden
alcanzarse usualmente con las combinaciones CTRL+ALT+F1... CTRL+ALT+F9.
pty* corresponde a las terminales virtuales o ventanas de consola que son lanzadas por
manejadores de consola como xterm, Konsole, GnomeTerminal, xfterm, aterm, rxvt, y un largo
etctera, adems de las consolas virtuales sin "representacin grfica" en las cuales estn corriendo
scripts del sistema, etc.
Aplicaciones que hacen uso: el shell principal de Linux, las shell remotas (usualmente ssh),as como la
miriada de aplicaciones antes mencionadas.

/dev/xconsole
Consola virtual que utiliza el superusuario del sistema para almacenar y mostrar los mensajes de los
demonios (daemon) que se encargan del logging del sistema: en las distribuciones ms recientes, syslogd
o similar.
Si quieres ver este dispositivo en accin solamente invoca el programa "xconsole" desde una termina, lo
cual mostrar los avisos del sistema a medida que se vayan generando.
Aplicaciones que hacen uso: syslogd, el manejador de ACPI, DBUS, HAL, inetd, etc...

Acceso a Utilidades del Kernel


/dev/core, /dev/kmem, /dev/kmsg
Accesos de muy bajo nivel (bajo como en profundo) a las utilidades y contenidos de la memoria usada
por el kernel Linux.

/dev/fd (enlace simblico)


Este enlace simblico siempre apunta al descriptor de archivo (en /proc) del proceso que lo est tratando
de ver. Con esto quiero decir que si entras a este enlace simblico desde dos terminales distintas (ej.: dos
ventanas distintas de GnomeTerminal), acabars en dos lugares distintos de la estructura de gestin de
procesos en /proc.

/dev/net/*
Las interfaces virtuales de red y algunas caractersticas avanzadas de red en Linux opera por medio de la
interface TUN/TAP que se accede desde los archivos en este directorio, los cuales pueden ser, por
ejemplo, "tun" o "tap".
Aplicaciones que hacen uso: tunctl, Xen, algunos emuladores de PC, y herramientas de testeo de red.

/dev/shm
Este archivo provee acceso a la Memoria Compartida de Linux, es decir, memoria reservada por
aplicaciones en modo contiguo. Ms sobre esto ms adelante.
Aplicaciones que hacen uso: cualquier aplicacin que quiera evitar el swapping de sus pginas, como:
emuladores, sistemas de autora multimedia, o lectores de sensores.
POR HACER: ejemplo de cmo reservar memoria virtual.

Utilidades Varias
/dev/fuse
Si tienes instalado FUSE (Filesystems in Userspace), este archivo provee a las utilidades de FUSE el
acceso a llamadas del sistema necesarias para que puedan montar y leer, con privilegios de usuario,
discos, archivos de imagen o dispositivos del sistema.
Aplicaciones que hacen uso: todo lo que diga "fuse-algo" o "xxx sistema de archivos en userspace",
como: ntfs-3g, sshfs, fuse-iso, fuse-cram, etc.

/dev/nvidia
Los usuarios de tarjeta grfica NVidia con los drivers instalados, ven este archivo que corresponde al
acceso por BIOS a las especificaciones y funciones PCI de la tarjeta. El acceso a la aceleracion de
hardware se hace por medio del archivo "parecido pero no igual", /dev/nvidia0.
Aplicaciones que hacen uso: bueno.... cualquier aplicacin 3D si ests usando aceleracin grfica con tu
tarjeta NVidia.
A los usuarios de ATI: an no averiguo cul es el dispositivo asociado.

/dev/usb/*
Si existe este directorio, cada dispositivo USB reconocido es alcanzado por un archivo en este directorio,
cuyo nombre sigue la numeracin del dispositivo y del concentrador USB al que est asociado, por
ejemplo, usb1 es el primer concentrador (usualmente uno de los puertos traseros de las placas madre) y
usbdev_1_1 el primer dispositivo conectado a ese concentrador (p.ej.: el primer pendrive conectado a
un minihub en ese puerto).

/dev/disk/*
Los kernel ms recientes incorporan el directorio "/dev/disk" el cual contiene enlaces simblicos a cada
una de las entradas de las particiones de los discos duros (hda1, hdb69, hdc6 o sda1) basadas en un
criterio especial que es capaz de determinar el manejador o "driver" de cada sistema de archivos
detectado. Estos criterior y directorios son:
disk/by-label: enlaces simblicos de acuerdo a la Etiqueta de Volumen de la particin.
Particularmente til con particiones ext2 y FAT32.
disk/by-uuid: enlaces simblicos de acuerdo a la ordenacin de los Identificadores nicos de
Disco que proveen algunos sistemas de archivo como ext2/3 y XFS.
disk/by-path: enlaces simblicos de acuerdo a la ordenacin de a qu conector (ya sea IDE, SCSI,
SATA, USB, etc) est conectado el dispositivo, y en qu orden est la particin dentro de los
elementos integrados a ese conector en particular.
Aplicaciones que hacen uso: las herramientas para particionado en las versiones ms recientes de Linux,
como el instalador de Ubuntu 7.10.

/dev/kqemu y /dev/vboxvdrv
Los que estn usando los softwares de emulacin Qemu (con el acelerador KQEMU) y/o VirtualBox
vern estos archivos que corresponden a accesos de nivel privilegiado a las operaciones del sistema. Son
estos "accesos" los que permiten a los emuladores alcanzar las velocidades casi-nativas.

Aplicaciones que hacen uso: bueno.... Qemu y Virtualbox.