Ma potevo solo creare un hard link nella directory /dev e non era possibile in altre directory.
Come mostrato dal messaggio di errore, non è possibile creare un hard link tra diversi filesystem; puoi creare solo soft link (simbolici).
Ad esempio, se il tuo /home
si trova in una partizione diversa da quella di root, non sarai in grado di collegare /tmp/foo
a /home/user/
.
Ora, come ha sottolineato @RichardNeumann, /dev
di solito è montato come filesystem devtmpfs. Vedi questo esempio:
[[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
Pertanto puoi creare collegamenti reali solo ai file in /dev
entro /dev
.
Un hard link non può essere utilizzato per ottenere ciò che desideri, perché gli hard link non funzionano tra i file system.
Tuttavia, puoi ottenere ciò che desideri con il mknod
comando.
-
Esegui
ls -l /dev/devicefile
. Dovresti vedere un output come questo:crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
- Prendi nota del numero nella colonna della taglia (
1, 9
). - Esegui il comando
mknod /path/to/destination c 1 9
(sostituendo i valori desiderati).
Perché funziona?
I file di dispositivo sono effettivamente collegamenti fisici a un file astratto implementato dal kernel o dai driver del kernel. Sebbene non sia possibile creare collegamenti fisici agli oggetti del file system da un altro file system, questi non sono oggetti del file system e quindi, conoscendo i loro numeri di riferimento principali e secondari, puoi creare un riferimento ad essi da qualsiasi file system.
Gli hard link creano semplicemente un'altra voce in una directory, puntando a un file (dove file è una cosa simile a un file, come una directory). Pertanto i collegamenti fisici non possono fare riferimento a un file in un altro file system.
I soft-link sono tuoi amici in questo caso. Usa ln -s
. I softlink possono passare attraverso i filesystem e possono persino puntare a qualcosa che non c'è.