Trouver un identifiant unique pour les cartes SD

10

J'ai des dizaines de cartes SD dont je dois faire le suivi pour un projet. À l'heure actuelle, ils ont chacun un numéro écrit physiquement avec un marqueur permanent à l'extérieur. C'est OK, mais je veux voir s'il y a quelque chose d'unique qui est intégré dans chaque carte SD que je peux enregistrer. Jusqu'à présent, je suis au courant de:

  • Le CID de la carte SD, qui comprend généralement (pas toujours ???) un numéro de série unique. Je ne peux pas trouver un moyen simple de lire ceci sur une carte SD dans Fedora 21. Certaines pages disent qu'à moins d'avoir un lecteur de carte directement connecté au bus PCI (et non via USB), vous ne pouvez pas voir le CID.
  • Numéro de série du volume / partition. Cela peut fonctionner, mais je comprends que cela change à chaque fois que la carte est reformatée, ce que nous faisons de temps en temps. Ce n'est donc pas une bonne option.
  • Il suffit d'étiqueter le volume de la carte SD avec mon propre système de nommage unique. C'est trop facile à changer, et je pourrais aussi bien m'en tenir à écrire les chiffres à l'extérieur.

Donc, je suppose que mes questions sont:

  1. Existe-t-il un moyen de lire le CID de manière fiable sur mes cartes SD pour obtenir des numéros de série via un lecteur de carte USB dans Fedora 21 ou d'autres distributions GNU / Linux?
  2. Sinon, existe-t-il d'autres façons d'utiliser des identifiants uniques existants dans une carte SD ou un autre système pour identifier de manière unique les cartes SD?
hpy
la source
1
FYI: Vous n'êtes pas vraiment censé répondre à chaque réponse. Bien que vous votiez pour / contre eux et, si l'on résout votre problème, le choisir comme réponse acceptée est certainement apprécié.
derobert
@derobert Compris, merci pour l'info!
hpy

Réponses:

3

blkid (8) est probablement ce que vous recherchez. Il donnera l'UUID de chaque appareil.

Pour vfat, peut définir l'UUID à l'aide de l'application mtools mlabel (1).

Pour ext2, ext3 et ext4, e2label (8) peut être utilisé pour définir l'UUID.

Donc, si vous reformatez de temps en temps, définissez simplement l'UUID sur la même valeur qu'auparavant si nécessaire.

Je ne peux pas parler pour les autres lecteurs de carte, mais ceux que j'ai utilisés via un port USB passent par l'UUID de la carte SD.

JonathanS
la source
1
Cela semble prometteur, merci !! Et Fat32?
hpy
1
Oui, je crois que mlabel(1)prend également en charge fat32.
JonathanS
1
quoi que les blkidretours changent chaque fois que les données stockées sur la carte SD changent. Ceci est très différent du CID ou du numéro de série. Si vous avez fait un dd if=/dev/sdcard1 of=/dev/sdcard2 count=2, les changements sont très importants et blkid /dev/sdcard1seront identiques à blkid /dev/sdcard2. La dernière remarque de la réponse est également trompeuse: l'UUID est dérivé des données stockées sur la carte SD, et non de la carte, la plupart des lecteurs USB vous permettront clairement de lire le contenu de la carte SD. Ce qui n'est toujours pas possible, c'est d'accéder à CID.
humanityANDpeace
3

Sur la base du commentaire de @humanityAndpeace, la recherche CIDpourrait être une solution, mais il semble que vous ne puissiez pas l'obtenir à partir de toutes les cartes SD. C'est du moins le cas pour celui que j'ai testé. Voir plus de documentation ici .

L'idée est d'obtenir des informations de /sys/block/<yourBlockDevice>/device/cid

Remarque : vous pouvez lire <yourBlockDevice>depuis le sudo dmesgplug-in

Philippe Gachoud
la source