blkid gibt mehr Informationen zurück als erwartet

blkid gibt mehr Informationen zurück als erwartet

Ich folge einem Rezept, das ich vor ein paar Jahren erstellt habe und bei dem ich an einer Stelle blkideine Dateisystem-UUID abrufen muss.

Ich habe mir diesen Befehl zusammen mit einem erwarteten Beispielrückgabewert notiert:

blkid -o export -s UUID /dev/mapper/thathost_crypt_md3
UUID=JNbF5T-vhSD-3aVv-intG-1Tk2-IEOZ-ABWXYZ

Die Zeiten haben sich jedoch geändert und ich verwende nicht mehr Debian „wheezy“, sondern „jessie“. Ich sehe, dass ich bei dieser neueren Version von Debian jetzt einen anderen Rückgabewert für denselben Befehl habe:

blkid -o export -s UUID /dev/mapper/thishost_crypt_sdb
DEVNAME=/dev/mapper/thishost_crypt_sdb
UUID=bddac63e-3510-4d24-a6fb-4d0a89abcdef

Auf der Manpage für blkid steht anscheinend, dass -s UUIDnur Werte eingeschlossen werden sollten, die diesem Schlüssel entsprechen, aber da steht DEVNAMEauch dieser überflüssige Zusatz drin.

Ich habe einen Workaround, da ich dies in beiden Fällen schreiben kann, aber es scheint seltsam, dass sich die Ausgabestruktur geändert haben sollte:

echo "UUID=$(blkid -o value -s UUID /path/to/device)"
UUID=bddac63e-3510-4d24-a6fb-4d0a89abcdef

Die Paketversionen util-linuxsind 2.20.1-5.3 bzw. 2.25.2-6.

Fragen

  1. Warum ändert sich die UUID-Form und ist das wichtig?
  2. Warum die Änderung des Ausgabeformats?

Antwort1

DEVNAME ist der Alias ​​des Gerätes siehePersistenter Gerätename mittels Alias

Darüber hinaus scheint es gemäß internationalen Standards jetzt erforderlich zu sein, UUIDs in Kleinbuchstaben zu schreiben.

AusVon UUID generierter Zeichentyp

Zur Klarstellung: Eine UUID ist eigentlich ein 128-Bit-Wert, kein Text oder Ziffern. Man kann sie sich als vorzeichenlose 128-Bit-Ganzzahlen vorstellen.

In der neuesten internationalen Spezifikation von 2008-08 heißt es (Hervorhebung von mir):

6.5.4 Software, die die hexadezimale Darstellung einer UUID generiert, darf keine Großbuchstaben verwenden. HINWEIS – Es wird empfohlen, die in allen menschenlesbaren Formaten verwendete hexadezimale Darstellung auf Kleinbuchstaben zu beschränken. Software, die diese Darstellung verarbeitet, muss jedoch sowohl Groß- als auch Kleinbuchstaben akzeptieren, wie in 6.5.2 angegeben.

Zum Drucken der UUID und des Alias/DEVNAME

Aus util-linux/blkid.c ist ersichtlich, dass DEVNAME ausgegeben wird, da Sie den-o export

} else if (ctl->output & OUTPUT_EXPORT_LIST) {
        if (num == 1 && devname)
            printf("DEVNAME=%s\n", devname); 

Daher vermutete ich, dass ohne -o exportdiese Option nur die UUID gedruckt würde, und zwar:

$blkid -s UUID /dev/sda2
/dev/sda2: UUID="67169dd7-f319-4402-a9b2-cebcf2f3657a"
$ blkid -o export -s UUID /dev/sda2
DEVNAME=/dev/sda2
UUID=67169dd7-f319-4402-a9b2-cebcf2f3657a

verwandte Informationen