LinuxParty
En Linux, todo es un archivo, incluso los dispositivos físicos como unidades de disco, CD/DVD ROM y disquetes se representan mediante archivos. Sin embargo, estos archivos no son archivos de datos regulares. En cambio, estos archivos especiales se denominan archivos de dispositivo y pueden generar o recibir los datos.
Por lo general, todos los archivos especiales están presentes en el directorio /dev. Algunos de los ejemplos comunes de archivos especiales son /dev/null, /dev/zero, /dev/full y /dev/sr0.
Los archivos especiales pueden ser del tipo carácter o bloque. Como sugiere el nombre, los archivos de caracteres procesan un carácter a la vez, mientras que los archivos de bloque procesan varios caracteres a la vez.
En esta guía avanzada, discutiremos cómo crear un archivo de dispositivo usando el comando mknod. Después de seguir esta guía, los usuarios de Linux podrán trabajar con confianza con diferentes tipos de archivos de dispositivos.
Tabla de contenido
- Sintaxis del comando mknod
- 1. Crear tubería sin nombre en Linux
- 2. Crear una tubería con nombre en Linux
- 3. Cree un archivo de dispositivo de caracteres en Linux
- 4. Cree un archivo de dispositivo de bloque en Linux
- 5. Crear un archivo de dispositivo con permisos
Sintaxis del comando mknod
La sintaxis del comando mknod es ligeramente diferente a la de otros comandos de Linux. La principal diferencia es que necesitamos especificar los números mayores y menores mientras creamos un personaje y bloqueamos los archivos del dispositivo:
$ mknod [OPCIONES] [MAYOR] [MENOR]...
En la sintaxis anterior, los corchetes ([])
representan los argumentos opcionales mientras que los corchetes angulares (<>)
representan los argumentos obligatorios.
En Linux, el número principal se usa para especificar el controlador de dispositivo que debe usarse. Este número se asigna al registrar un controlador de dispositivo.
De manera similar, el número menor se usa para especificar el dispositivo real. Podemos encontrar los números mayor y menor reservados en la documentación del kernel de Linux.
1. Crear tubería sin nombre en Linux
En Linux, usamos tuberías para permitir la comunicación entre procesos. En Shell, la tubería se representa mediante la línea vertical (|)
. Lee la salida del proceso anterior y la envía como entrada al siguiente proceso.
Entendamos esto con un ejemplo simple:
$ echo "linuxparty.es" | wc -c
En este ejemplo, estamos usando la canalización para leer la salida del comando echo y enviarla como entrada al comando wc para su posterior procesamiento.
Aquí, hemos usado la línea vertical (|)
para crear una tubería. Sin embargo, esto crea una tubería sin nombre y su alcance se limita solo al comando actual. En el siguiente ejemplo, veremos cómo crear una tubería con nombre.
2. Crear una tubería con nombre en Linux
Podemos usar el comando mknod para crear una tubería con nombre. La canalización con nombre reside en el sistema de archivos como cualquier otro archivo normal. Sin embargo, su objetivo principal es permitir la comunicación entre procesos entre procesos no relacionados.
Primero, especifiquemos el tipo de dispositivo para p
crear una tubería con nombre:
$ mknod /tmp/named-pipe p $ ls -l /tmp/named-pipe
Ahora, intentemos leer el archivo:
$ cat /tmp/tubería con nombre
Aquí, podemos ver que el comando cat está esperando infinitamente:
Leer archivo de canalización con nombre
A continuación, abramos otra terminal y escribamos algunos datos en el archivo /tmp/named-pipe:
$ echo "linuxparty.es" > /tmp/tubería con nombre
Finalmente, dirígete a la primera terminal para ver el resultado:
Ver archivo de canalización con nombre
Aquí, podemos ver que los comandos echo y cat pueden comunicarse usando la canalización con nombre.
3. Cree un archivo de dispositivo de caracteres en Linux
De manera similar, podemos usar el tipo de dispositivo como c
para crear un dispositivo de caracteres. Sin embargo, debemos tener que usar los números mayores y menores al crear un dispositivo de carácter.
Usemos el comando ls para encontrar los números mayor y menor del dispositivo /dev/full:
$ ls -l /dev/full
Buscar número de archivo mayor y menor
En el resultado anterior, el par de números separados por comas, es decir, 1, 7 representan los números mayor y menor respectivamente.
En Linux, el dispositivo /dev/full siempre devuelve el error No space left on the device. Para entender esto, escribamos algunos datos en este dispositivo:
$ echo "linuxparty.es" > /dev/completo
Escribir datos en el archivo del dispositivo
Ahora, usemos el comando mknod para crear un nuevo dispositivo que se comporte igual que /dev/full device:
$ sudo mknod /tmp/full c 1 7
A continuación, cambiemos los permisos del archivo:
$ sudo chmod 666 /tmp/full $ ls -l /tmp/full
Finalmente, escriba algunos datos en el dispositivo recién creado:
$ echo "linuxparty" > /tmp/full
Crear nuevo archivo de dispositivo
Es importante tener en cuenta que el dispositivo de caracteres recién creado se comporta como el dispositivo /dev/full debido a los mismos números mayores y menores.
4. Cree un archivo de dispositivo de bloque en Linux
Además de esto, podemos especificar el tipo de dispositivo como b
para crear un dispositivo de bloque. Para crear un dispositivo de bloques debemos tener que usar los números mayores y menores.
En Linux, /dev/sr0 representa el dispositivo de CD/DVD ROM. Ahora, creemos un nuevo dispositivo de bloque que se comporte igual que /dev/sr0.
Primero, averigüemos los números mayor y menor de /dev/sr0:
$ ls -l /dev/sr0
Verifique los números mayores y menores del archivo del dispositivo
En el resultado anterior, podemos ver que sus números mayor y menor son 11 y 0 respectivamente.
Ahora, creemos un nuevo dispositivo de bloques con los mismos números mayores y menores:
$ sudo mknod /tmp/dvd-rom b 11 0 $ ls -l /tmp/dvd-rom
A continuación, montemos la imagen ISO del CD/DVD ROM en el directorio /mnt y verifiquemos que la operación de montaje se realice correctamente:
$ sudo mount /tmp/dvd-rom /mnt/ $ ls -1 /mnt/
Si no se puede montar, es debido al entorno de seguridad SELinux.
Montar nuevo dispositivo de bloque
En este ejemplo, podemos ver que el dispositivo de bloque /tmp/dvd-rom puede acceder a la imagen ISO desde el CD/DVD ROM.
5. Crear un archivo de dispositivo con permisos
A veces, necesitamos modificar el permiso de acceso del archivo del dispositivo antes de usarlo. En tales casos, tenemos que usar el comando chmod. Sin embargo, podemos lograr el mismo resultado usando el comando mknod en lugar de usar dos comandos separados.
Para entender esto, usemos la opción -m
para establecer permisos de acceso mientras creamos una canalización con nombre:
$ sudo mknod -m 444 /tmp/pipe-with-permissions p
Ahora, verifiquemos que los permisos se hayan configurado correctamente:
$ ls -l /tmp/pipe-with-permissions
Crear archivo de dispositivo con permisos
En este ejemplo, usamos la opción -m
con la canalización con nombre. Sin embargo, también podemos usarlo con el personaje y los dispositivos de bloque.
¿ Conoces algún otro mejor ejemplo del comando mknod en Linux? Háganos saber sus puntos de vista en los comentarios a continuación.
-
Linux
- Predicciones de Linux para 2025
- Elementary OS 8: una distribución de Linux para usuarios de Windows y macOS
- Renombrar multiples archivos masivamente en Linux (quitar espacios, cambiar mayúsculas) a la vez en Linux
- He utilizado Linux durante 30 años. Aquí hay 5 razones por las que nunca cambiaré a Windows o MacOS
- Montar un directorio remoto, vía NFS, en Linux
- Mis predicciones sobre Linux para 2025: será un buen año
- ¿Por qué Torvalds eliminó a los encargados rusos del mantenimiento del núcleo de Linux?
- 10 cosas que siempre hago después de instalar Linux (y por qué tú también deberías hacerlo)
- 7 cosas que nunca hago después de instalar Linux (y por qué tú tampoco deberías)
- Detección de Intrusos: Snort, Base, MySQL, y Apache2 en Ubuntu Linux 7.10
- ¿Por qué no más personas usan Linux en el escritorio? Tengo una teoría que quizás no te guste.
- Los países occidentales ricos lideran la expansión mundial del petróleo y el gas
- Systemd 256.1 aborda la queja de que 'systemd-tmpfiles' podría eliminar inesperadamente su directorio /home
- Por qué un kernel Linux de distribución 'congelada' no es la mejor opción para la seguridad
- RebornOS es una versión hermosa y fácil de usar de Arch Linux con abundantes opciones de escritorio