Mais je ne pouvais créer un lien physique que dans le répertoire /dev et ce n'était pas possible dans les autres répertoires.
Comme le montre le message d'erreur, il n'est pas possible de créer un lien physique entre différents systèmes de fichiers ; vous ne pouvez créer que des liens souples (symboliques).
Par exemple, si votre /home
se trouve dans une partition différente de votre partition racine, vous ne pourrez pas lier en dur /tmp/foo
à /home/user/
.
Maintenant, comme @RichardNeumann l'a souligné, /dev
est généralement monté en tant que système de fichiers devtmpfs. Voir cet exemple :
[[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
Par conséquent, vous ne pouvez créer que des liens physiques vers des fichiers en /dev
dans /dev
.
Un lien physique ne peut pas être utilisé pour obtenir ce que vous voulez, car les liens physiques ne fonctionnent pas entre les systèmes de fichiers.
Cependant, vous pouvez obtenir ce que vous voulez avec le mknod
commande.
-
Exécutez
ls -l /dev/devicefile
. Vous devriez voir une sortie comme celle-ci :crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
- Notez le nombre dans la colonne de taille (
1, 9
). - Exécutez la commande
mknod /path/to/destination c 1 9
(en remplaçant les valeurs souhaitées).
Pourquoi cela fonctionne-t-il ?
Les fichiers de périphérique sont en fait des liens physiques vers un fichier abstrait implémenté par le noyau ou les pilotes du noyau. Bien que vous ne puissiez pas créer de liens physiques vers des objets de système de fichiers à partir d'un autre système de fichiers, ce ne sont pas des objets de système de fichiers et donc, en connaissant leurs numéros de référence majeurs et mineurs, vous pouvez créer une référence à partir de n'importe quel système de fichiers.
Les liens physiques créent simplement une autre entrée dans un répertoire, pointant vers un fichier (où fichier est un fichier semblable à un fichier, tel qu'un répertoire). Par conséquent, les liens physiques ne peuvent pas référencer un fichier dans un autre système de fichiers.
Les liens souples sont votre ami dans ce cas. Utilisez ln -s
. Les liens symboliques peuvent traverser les systèmes de fichiers et peuvent même pointer vers quelque chose qui n'existe pas.