GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué no puedo crear un vínculo físico desde un archivo de dispositivo que no sea el directorio /dev?

Pero solo pude crear un enlace duro en el directorio /dev y no fue posible en otros directorios.

Como se muestra en el mensaje de error, no es posible crear un vínculo físico entre diferentes sistemas de archivos; solo puede crear enlaces blandos (simbólicos).

Por ejemplo, si su /home está en una partición diferente a su partición raíz, no podrá vincular /tmp/foo a /home/user/ .

Ahora, como señaló @RichardNeumann, /dev generalmente se monta como un sistema de archivos devtmpfs. Vea este ejemplo:

[[email protected] ~]$ df
Filesystem                      1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos_centos7-root  46110724 3792836  42317888   9% /
devtmpfs                          4063180       0   4063180   0% /dev
tmpfs                             4078924       0   4078924   0% /dev/shm
tmpfs                             4078924    9148   4069776   1% /run
tmpfs                             4078924       0   4078924   0% /sys/fs/cgroup
/dev/sda1                         1038336  202684    835652  20% /boot
tmpfs                              815788      28    815760   1% /run/user/1000

Por lo tanto, solo puede crear enlaces duros a archivos en /dev dentro de /dev .


No se puede utilizar un enlace duro para lograr lo que desea, porque los enlaces duros no funcionan entre sistemas de archivos.

Sin embargo, puedes lograr lo que quieras con el mknod comando.

  1. Ejecute ls -l /dev/devicefile . Debería ver una salida como esta:

    crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
    
  2. Tome nota del número en la columna de tamaño (1, 9 ).
  3. Ejecute el comando mknod /path/to/destination c 1 9 (sustituyendo los valores que desee).

¿Por qué funciona esto?

Los archivos de dispositivo son efectivamente enlaces duros a un archivo abstracto implementado por el kernel o los controladores del kernel. Si bien no puede crear enlaces duros a objetos del sistema de archivos desde otro sistema de archivos, estos no son objetos del sistema de archivos y, por lo tanto, al conocer sus números de referencia mayor y menor, puede crear una referencia a ellos desde cualquier sistema de archivos.


Los enlaces duros simplemente crean otra entrada en un directorio, apuntando a un archivo (donde archivo es algo parecido a un archivo, como un directorio). Por lo tanto, los enlaces físicos no pueden hacer referencia a un archivo en otro sistema de archivos.

Los enlaces blandos son tus amigos en este caso. Utilice ln -s . Los enlaces suaves pueden atravesar sistemas de archivos e incluso pueden apuntar a algo que no está allí.


Linux
  1. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  2. ¿Cómo crear un archivo en Linux desde la ventana de terminal?

  3. cp:no se puede crear el directorio:no existe tal archivo o directorio

  4. ¿Por qué no puedo crear archivos de más de 2 GB en Linux?

  5. ¿Por qué poner otras cosas que no sean /home en una partición separada?

DD de /dev/zero a /dev/null... lo que realmente sucede

/dev/sdb:No existe tal archivo o directorio (pero /dev/sdb1, etc. existe)

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

¿Está mal vincular /dev/random a /dev/urandom en Linux?

Crear un dispositivo de bloque virtual que escriba en /dev/null

Diferencias entre /dev/sda y /dev/sda1