Lorsque je voulais créer un lien dur dans mon /home
répertoire en mode racine , Linux a affiché 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 le /home
répertoire (ou d'autres répertoires)?
/dev
est généralement monté en tant quedevtmpfs
système de fichiers. Ainsi, vous ne pouvez créer que des liens physiques vers des fichiers/dev
internes/dev
. Par exemple, vous ne pouvez même pas créer de liens physiques vers l'/dev/null
intérieur/dev/pts
, car il est monté avecdevpts
un système de fichiers différent.Un lien dur ne peut pas être utilisé pour obtenir ce que vous voulez, car les liens durs ne fonctionnent pas entre les systèmes de fichiers.
Cependant, vous pouvez réaliser ce que vous voulez avec la
mknod
commande.Courez
ls -l /dev/devicefile
. Vous devriez voir une sortie comme celle-ci:1, 9
).mknod /path/to/destination c 1 9
(en remplaçant les valeurs souhaitées).Pourquoi ça marche?
Les fichiers de périphérique sont en fait des liens durs 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 du système de fichiers à partir d'un autre système de fichiers, ce ne sont pas des objets du 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 à eux à partir de n'importe quel système de fichiers.
la source
Les liens matériels 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). Les liens physiques ne peuvent donc pas référencer un fichier dans un autre système de fichiers.
Les liens logiciels sont vos amis dans ce cas. Utilisez
ln -s
. Les liens logiciels peuvent traverser les systèmes de fichiers et peuvent même pointer vers quelque chose qui n'est pas là.la source