LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
Inicio desactivadoInicio desactivadoInicio desactivadoInicio desactivadoInicio desactivado
 

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 pcrear 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 cpara 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 bpara 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.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías