156 votes

Comment puis-je trouver l'UUID d'un système de fichiers?

Je suis en train d'exécuter Ubuntu, et je veux trouver l'UUID d'un système de fichiers particulier (pas une partition). Je sais que je peux utiliser e2label /dev/sda1 pour trouver le label du système de fichiers, mais il ne semble pas y avoir de façon similaire pour trouver l'UUID.

1 votes

Merci pour toutes les réponses, je suis sûr que je les utiliserai toutes dans des circonstances différentes.

2 votes

Notez que le titre utilisé était "Comment trouver l'UUID d'une partition". Cette question n'a de sens que lorsqu'on utilise une table de partition GPT. Voici une réponse à cette question.

0 votes

198voto

Android Eve Points 883

Une autre commande qui pourrait être disponible et qui fonctionne également très bien pour cela est 'blkid'. Cela fait partie du paquet e2fsprogs. Exemples d'utilisation :

Consultez les données sur /dev/sda1 :

topher@crucible:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"

Afficher les données UUID pour toutes les partitions :

topher@crucible:~$ sudo blkid

/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"

Afficher les données UUID pour toutes les partitions dans un format plus facile à lire : (Remarque : dans les versions plus récentes, blkid -L a une signification différente, et blkid -o list doit être utilisé à la place)

topher@crucible:~$ sudo blkid -L

device     fs_type label    mount point    UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3             /              727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc  ext3             /home          467c4aa9-963d-4467-8cd0-d58caaacaff4

Afficher uniquement l'UUID pour /dev/sda1 et rien d'autre :

topher@crucible:~$ sudo blkid -s UUID -o value /dev/sda1

727cac18-044b-4504-87f1-a5aefa774bda

1 votes

Sur mon ordinateur Ubuntu, je n'ai pas besoin d'utiliser sudo.

0 votes

En tapant simplement blkid, j'ai obtenu exactement ce que je voulais, mais pas tout à fait ce que j'ai demandé. (Je l'accepte quand même, car je suis sûr de l'utiliser souvent)

3 votes

Sur les nouvelles versions d'Ubuntu, la commande équivalente à blkid -L est maintenant blkid -o list ; l'option -L a été modifiée en -L label pour rechercher un périphérique qui utilise l'étiquette spécifiée.

12voto

John S Gruber Points 211

Pour les disques partitionnés GPT uniquement

Sur un disque formaté en GPT, chaque partition se voit attribuer un GUID, qui est une forme d'UUID, bien que probablement pas ce à quoi le posteur original faisait référence. Par conséquent, cette réponse est probablement moins utile pour la personne posant la question initiale. Néanmoins, je crois qu'il y a une distinction importante à remarquer.

Pour obtenir le GUID de la partition 1 sur le disque formaté en GPT /dev/sda, ainsi que son étiquette de partition, et ainsi de suite :

sudo sgdisk -i 1 /dev/sda

ou tout avec :

ls -l /dev/disk/by-partuuid

Pour démarrer avec la racine du système de fichiers étant sur une certaine partition, vous utiliseriez la syntaxe des paramètres du noyau Linux :

root=PARTUUID=87654321-4321-4321-abcd-123456789012

Dans ce cas, vous pouvez spécifier juste le début de l'UUID—suffisant pour être unique. Ce paramètre est plus primitif et peut être compris par le noyau plus tôt dans son processus de démarrage.


Il y a une différence sémantique entre ceux-ci :

Un disque contient des partitions, une partition contient un système de fichiers, un système de fichiers contient des répertoires et des fichiers. Pour certaines configurations et systèmes d'exploitation, il y a plus de couches.

Le GUID UUID et l'étiquette associée se rapportent à une partition, mais pas au contenu de la partition. Une nouvelle partition sur le même disque, ou une partition sur un nouveau disque aura un nouveau GUID UUID. La même partition pourrait contenir un système de fichiers un jour et un autre un jour différent. Il n'existe que pour les disques formatés en GPT, mais pas pour les disques partitionnés de manière héritée. Il n'y a généralement plus d'utilité ici que de spécifier root=/dev/sda1 ou root=8:1.

Les autres réponses actuelles se réfèrent à l'UUID d'un système de fichiers dans une partition contenant. Si le système de fichiers est copié, dans son intégralité, vers une autre partition ou disque dur, cette valeur reste la même. Cet UUID est utile pour trouver un système de fichiers déplacé. Par conséquent, ceci est probablement plus pertinent pour la plupart des gens. Le paramètre du noyau Linux root=UUID=87654321-4321-4321-a567-123456789012 se réfère à ceci.

Je crois que root=LABEL= et root=UUID= sont implémentés par l'espace utilisateur précoce, le code d'initialisation que j'ai vu l'autre jour sur mon système traduisait ces paramètres en /dev/disk/by-uuid et /dev/disk/by-label (liens je crois créés par udev dans l'espace utilisateur sur mon système).

[1] _devt_from_devname()_

0 votes

Il semble que l'usage correct soit -i1 ou -i 1, au lieu de -i:1, avec sgdisk 1.0.1.

0 votes

@CharlesDuffy merci d'avoir trouvé cette erreur. J'ai édité la réponse pour la corriger.

10voto

Tom Hale Points 877

La manière la plus propre de faire cela avec un script qui fonctionne sur n'importe quel type de système de fichiers est la suivante :

lsblk -no UUID 

Ou, en spécifiant le point de montage (ou n'importe quel fichier à l'intérieur) :

lsblk -no UUID $(df -P  | awk 'END{print $1}')

La sortie est l'UUID, l'UUID complet, et rien que l'UUID.

1 votes

C'est mieux que blkid dans la réponse de @christopher-cashell, car vous n'avez pas besoin de devenir root. Pour un point de montage ou un fichier, il vaut mieux faire: lsblk -no UUID $(findmnt -n -o SOURCE --target ).

0 votes

@marcz Cela échoue sur les sous-volumes btrfs : findmnt -n -o SOURCE --target ~ donne : /dev/mapper/vg_svelte-home[/@home]

0 votes

À droite @tom-hale, lsblk -no UUID $(findmnt -n -o SOURCE --target | cut -d[ -f1) devrait se débarrasser du sous-volume lorsque présent.

6voto

Eddie Points 11262

La manière la plus simple de faire cela pour ext2/ext3/ext4 est :

/sbin/tune2fs -l /dev/sda1

4 votes

Cela fonctionnera à condition que votre système de fichiers soit formaté en ext2, ext3 ou ext4. La plupart des systèmes de fichiers sont l'un de ces trois, mais pas tous. Cela ne fonctionnera pas non plus pour les partitions swap. Consultez ma réponse pour une méthode universelle.

1 votes

Cela se traduit dans mon cas par Aucun superbloc de système de fichiers valide trouvé.

3voto

Hamish Downer Points 9012

La façon recommandée de faire cela est de faire

sudo vol_id -u /dev/sda2

Pour en savoir plus sur l'utilisation des UUID, consultez cet article (de l'aide d'Ubuntu, mais cela devrait fonctionner pour toute distribution Linux utilisant des UUID).

Comme indiqué dans les commentaires de cette question, vol_id peut ne pas être dans votre chemin d'accès. Sur Ubuntu, il se trouve dans /sbin, donc la commande ci-dessus fonctionnera.

Pour Fedora, il semble avoir besoin de :

sudo /lib/udev/vol_id -u /dev/sda2

1 votes

Cela ne fonctionne pas sur mon ordinateur portable Fedora 10.

0 votes

Ceci est une solution bien meilleure que la mienne. Eddie, vol_id se trouve dans /lib/udev. mish, pourrais-tu éditer ta réponse pour ajouter le chemin complet devant vol_id? /lib/udev n'est pas dans le chemin par défaut de root sur aucune distribution que je connais.

0 votes

"/lib/udev/vol_id /dev/sda2" semble fonctionner. Peu de gens auront /lib/udev dans leur chemin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X