Cuando quería crear un enlace duro en mi /homedirectorio en modo raíz , Linux mostró el siguiente mensaje de error:
ln: failed to create hard link ‘my_sdb’ => ‘/dev/sda1’: Invalid cross-device link
El mensaje de error anterior se muestra a continuación:
# cd /home/user/
# ln /dev/sda1 my_sdb
Pero solo pude crear un enlace duro en el /devdirectorio, y no fue posible en otros directorios.
Ahora, quiero saber cómo crear un enlace duro desde un archivo de dispositivo existente (como sdb1) en el /homedirectorio (u otros directorios).

/devgeneralmente se monta como undevtmpfssistema de archivos. Por lo tanto, solo puede crear enlaces duros a archivos/devdentro/dev. Por ejemplo, ni siquiera puede crear enlaces/dev/nullinternos/dev/pts, ya que está montadodevptscomo un sistema de archivos diferente.Un enlace duro no se puede usar para lograr lo que desea, porque los enlaces duros no funcionan entre sistemas de archivos.
Sin embargo, puede lograr lo que desea con el
mknodcomando.Ejecutar
ls -l /dev/devicefile. Debería ver una salida como esta:1, 9).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 núcleo o los controladores del núcleo. 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 mayores y menores, puede crear una referencia a ellos desde cualquier sistema de archivos.
fuente
Los enlaces duros simplemente crean otra entrada en un directorio, apuntando a un archivo (donde el archivo es similar a un archivo, como un directorio). Por lo tanto, los enlaces duros no pueden hacer referencia a un archivo en otro sistema de archivos.
Soft-links eres tu amigo en este caso. Uso
ln -s. Los enlaces suaves pueden atravesar sistemas de archivos e incluso pueden apuntar a algo que no está allí.fuente