Liens symboliques udev - où pointe / dev / sda

2

Il est dit que udev crée des liens symboliques identifiant le périphérique réel et / dev / disk / by-uuid en est un exemple.

[root @ centos1 by-uuid] # pwd

/ dev / disk / by-uuid

[root @ centos1 by-uuid] # ls -l

total 0 lrwxrwxrwx 1 racine racine 10 juin 26 00:59 4cfc879d-1d4e-4289-856c-5f532a74bb2d -> ../../sda

Ce qui précède signifie-t-il que a) / dev / sda pointe vers l'uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d

ou

b) uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d pointe vers / dev / sda?

===============================================

Si la réponse est a, j'ai toujours pensé que ce lien était supposé être de gauche à droite? et comment quelqu'un va-t-il référencer l'uuid pour aller dans / dev / sda? Aussi, je pensais que / dev / sda est supposé être ajouté dynamiquement par udev et que sa dénomination est basée sur certaines règles.

Si la réponse est b, alors où pointe-t-on sda? On dit que le noyau ajoute des périphériques au dossier / dev / de manière dynamique et qu’avec udev nous pouvons conserver le nom des périphériques qu’il contient.

[root @ centos1 dev] # pwd

/ dev

[root @ centos1 dev] # ls -lt sda

brw-rw ---- 1 disque racine 8, 0 juin 26 00:59 sda

===============================================

J'ai essayé de trouver les règles dans /etc/udev/rules.d/ mais en vain. Je suis sur CentOS.

J'essaie de /lib/udev/rules.d/, mais je ne vois pas les règles qui ajoutent sda dans / dev /

S'il vous plaît donnez votre avis.

Noob
la source
S'il vous plaît voir mon Edit 2. Je pense que maintenant vous avez toutes les informations dont vous avez besoin.
MariusMatutiae le

Réponses:

4

Le lien est vers / dev / sda1. vous pouvez établir cela avec la commande de fichier : dans mon système, par exemple,

  # file *
  ff28e743-4409-41b3-99ea-f133cdcc86be: symbolic link to `../../sda1' 

Ainsi, votre option b est juste. / dev / sda n'est pas un lien, donc il ne pointe pas vers autre chose: c'est juste un fichier spécial (périphérique), voir par exemple cet article de Wikipedia .

Je n’utilise pas CentOS, mais dans mes systèmes Debian / Kubuntu, les règles de disque se trouvent dans /lib/udev/rules.d , sous

   # ls -lh 60-per*
     -rw-r--r-- 1 root root  616 apr 15 22:33 60-persistent-alsa.rules
     -rw-r--r-- 1 root root 2,5K apr 15 22:33 60-persistent-input.rules
     -rw-r--r-- 1 root root  947 apr 15 22:33 60-persistent-serial.rules
     -rw-r--r-- 1 root root  929 mag  4  2012 60-persistent-storage-dm.rules
     -rw-r--r-- 1 root root 5,6K apr 15 22:33 60-persistent-storage.rules
     -rw-r--r-- 1 root root 1,4K apr 15 22:33 60-persistent-storage-tape.rules
     -rw-r--r-- 1 root root  769 apr 15 22:33 60-persistent-v4l.rules

Le fichier en question est bien entendu 60-persistent-storage.rules . Si vous ne pouvez pas le localiser ici dans votre système, je vous suggère d'essayer:

    find / -type f -name '*persistent-storage*.rules'

Modifier:

est / sda ajouté dans / dev par udev alors?

Oui.

comment pouvons-nous nous assurer que "sda" restera toujours en tant que "sda"?

Nous ne faisons pas. La règle est automatiquement générée par udev au moment de l’installation. En fait, le fichier mentionné ci-dessus contient la règle suivante:

   # scsi devices
   KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"

EDIT 2

La chose la plus simple, étant donné que vous ne pouvez pas vous décider, est de définir vos propres règles. Supposons que vous ayez un périphérique, appelé maintenant sdd, mais que vous souhaitiez l'appeler sda lors du prochain redémarrage.

Vous devez d’abord trouver quelques paramètres:

   udevadm info -a -p $(udevadm info -q path -n /dev/sdd)

Cela va cracher beaucoup d'informations. Recherchez des lignes telles que celles-ci (les vôtres seront évidemment différentes):

  ATTRS{idVendor}=="18a5"
  ATTRS{idProduct}=="0302"
  ATTRS{serial}=="TT0E4E008XW3DT9H"

Vous pouvez maintenant utiliser ces paramètres pour créer votre propre règle, à insérer dans /etc/udev/rules.d/10-local.rules :

 ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0302", ATTRS{serial}=="TT0E4E008XW3DT9H", KERNEL=="sd?", NAME="sda", RUN+="/home/my_name/bin/my_program"

La dernière partie, RUN + = "/ home / mon_nom / bin / mon_programme" , est facultative: vous pouvez l'utiliser pour exécuter une commande, si vous le souhaitez, mais vous pouvez l'omettre complètement.

MariusMatutiae
la source
est / sda ajouté dans / dev par udev alors? comment pouvons-nous nous assurer que le disque référencé par "sda" restera toujours en tant que "sda"?
Noob
@ Noob Pls voir mon édition.
MariusMatutiae
merci pour votre explication claire. Je ne suis pas vraiment sûr de la syntaxe utilisée dans les règles - mais avec la règle présentée ci-dessus, s'assure-t-il que "sda" restera en tant que "sda"? Pourrait-il arriver qu'un jour, je sors le disque auquel est attribué "sda", et le rebranche un autre jour et que je reçoive un "sdb"?
Noob
pourquoi ne pas i @ MariusMatutiae?
Noob
@ Noob Parce que vous répondez à ma réponse, elle me parvient automatiquement
MariusMatutiae le