Quand je voulais créer un lien dur dans mon /home
Répertoire dans Mode root , Linux a montré le message d'erreur suivant:
ln: failed to create hard link ‘my_sdb’ => ‘/dev/sda1’: Invalid cross-device link
Le message d'erreur ci-dessus est affiché ci-dessous:
# cd /home/user/
# ln /dev/sda1 my_sdb
Mais je ne pouvais créer qu'un lien dur dans le /dev
répertoire, et ce n'était pas possible dans d'autres répertoires.
Maintenant, je veux savoir comment créer un lien dur à partir d'un fichier de périphérique existant (comme sdb1
) dans /home
répertoire (ou autres répertoires)?
Mais je ne pouvais créer qu'un lien dur dans le répertoire/dev et que ce n'était pas possible dans d'autres répertoires.
Comme indiqué par le message d'erreur, il n'est pas possible de créer une liaison matérielle dans différents systèmes de fichiers; Vous pouvez créer uniquement des liens doux (symboliques).
Par exemple, si votre /home
est dans une partition différente de votre partition racine, vous ne pourrez pas connaître le lien dur /tmp/foo
à /home/user/
.
Maintenant, comme @RichardNeumann a souligné, /dev
est généralement monté en tant que système de fichiers DEVTMPFS. Voir cet exemple:
[dr01@centos7 ~]$ 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 difficiles vers des fichiers dans /dev
dans /dev
.
Un lien dur ne peut pas être utilisé pour atteindre ce que vous voulez, car les liens difficiles ne fonctionnent pas entre les systèmes de fichiers.
Cependant, vous pouvez obtenir ce que vous voulez avec la commande mknod
.
Courir 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
1, 9
).mknod /path/to/destination c 1 9
(substituer les valeurs que vous voulez).Les fichiers de périphérique sont des liens effectivement durs vers un fichier abstrait mis en œuvre par les pilotes du noyau ou du noyau. Bien que vous ne puissiez pas créer de liens durs pour fichier des objets système à partir d'un autre système de fichiers, ceux-ci ne sont pas des objets de système de fichiers, ce qui ne correspond pas à leurs numéros de référence majeurs et mineurs, vous pouvez en créer une référence à partir de n'importe quel système de fichiers.
Liens durs Il suffit de créer une autre entrée dans un répertoire, pointant vers un fichier (où le fichier est un fichier comme une chose, telle qu'un répertoire). Par conséquent, les liens difficiles ne peuvent pas faire référence à un fichier dans un autre système de fichiers.
Les liens doux sont votre ami dans ce cas. Utilisation ln -s
. Les softlinks peuvent passer à travers des systèmes de fichiers et peuvent même indiquer quelque chose qui n'est pas là.