¿Cómo se crean los archivos "/ dev" de Linux?

Pregunta:

Hay archivos especiales en Linux que en realidad no son archivos.

Los ejemplos más notables y claros de estos se encuentran en la carpeta dev , "archivos" como:

  • /dev/null : ignora todo lo que escriba en el archivo
  • /dev/random : genera datos aleatorios en lugar del contenido de un archivo
  • /dev/tcp : envía cualquier dato que escriba en este archivo a través de la red

En primer lugar, ¿cuál es el nombre de este tipo de "archivos" que en realidad son una especie de script o binario disfrazado?

En segundo lugar, ¿cómo se crean? ¿Estos archivos están integrados en el sistema a nivel de kernel, o hay alguna manera de crear un "archivo mágico" usted mismo (qué tal un /dev/rickroll )?

Respuesta:

/dev/zero es un ejemplo de un "archivo especial", en particular, un "nodo de dispositivo". Normalmente, estos se crean por el proceso de instalación de la distro, pero totalmente de ellos pueden crear usted mismo si lo desea.

Si le preguntas a ls sobre /dev/zero :

# ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5  Nov 5 09:34 /dev/zero

La "c" al principio le dice que se trata de un "dispositivo de carácter"; el otro tipo es "dispositivo de bloque" (impreso por ls como "b"). De manera muy aproximada, los dispositivos de acceso aleatorio como los discos duros tienden a ser dispositivos de bloque, mientras que los elementos secuenciales como unidades de cinta o su tarjeta de sonido tienden a ser dispositivos de caracteres.

La parte "1, 5" es el "número de dispositivo principal" y el "número de dispositivo secundario".

Con esta información, podemos usar el comando mknod para crear nuestro propio nodo de dispositivo:

# mknod foobar c 1 5

Esto crea un nuevo archivo llamado foobar , en la carpeta actual, que hace exactamente lo mismo que /dev/zero . (Por supuesto, puede establecer diferentes permisos si lo desea). Todo este "archivo" realmente contiene los tres elementos anteriores: tipo de dispositivo, número mayor, número menor. Puede usar ls para buscar los códigos de otros dispositivos y volver a crearlos también. Cuando se aburra, simplemente use rm para eliminar los nodos del dispositivo que acaba de crear.

Básicamente, el número mayor le dice al kernel de Linux con qué controlador de dispositivo hablar, y el número menor le dice al controlador de dispositivo de qué dispositivo estás hablando. (Por ejemplo, probablemente tenga un controlador SATA, pero tal vez varios discos duros conectados).

Si desea inventar nuevos dispositivos que hagan algo nuevo … bueno, deberá editar el código fuente del kernel de Linux y compilar su propio kernel personalizado. ¡Así que no hagamos eso! 🙂 Pero puedes agregar archivos de dispositivo que dupliquen los que ya tienes. Un sistema automatizado como udev básicamente solo está observando los eventos del dispositivo y llamando a mknod / rm automáticamente. Nada más mágico que eso.

Todavía hay otros tipos de archivos especiales:

  • Linux considera que un directorio es un tipo especial de archivo. (Por lo general, no puede abrir directamente un directorio, pero si pudiera, encontraría que es un archivo normal que contiene datos en un formato especial y le dice al kernel dónde encontrar todos los archivos en ese directorio).

  • Un enlace simbólico es un archivo especial. (Pero un enlace físico no lo es). Puede crear enlaces simbólicos usando el comando ln -s . (Busque en la página de manual).

  • También hay una cosa llamada "tubería con nombre" o "FIFO" (cola de primero en entrar, primero en salir). Puede crear uno con mkfifo . Un FIFO es un archivo mágico que se puede abrir con dos programas a la vez: una lectura y una escritura. Cuando esto sucede, funciona como una tubería de shell normal. Pero puede iniciar cada programa por separado …

Un archivo que no es "especial" de ninguna manera se denomina "archivo normal". Ocasionalmente verá una mención de esto en la documentación de Unix. Eso es lo que significa; un archivo que no es un nodo de dispositivo o un enlace simbólico o lo que sea. Solo un archivo normal, de todos los días, sin propiedades mágicas.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım