ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[uuid_et_label]]

Piste: » uuid_et_label


UUID et label

Qu'est-ce que l'UUID ?

UUID : Universal Unique IDentifier (identifiant universel unique)

  • Le paquet "volume_id" est désormais nécessaire au système de fichiers RAM initial (initramfs-tools) ainsi qu'aux programmes Grub et Udev. Notre Ubuntu est évidemment concerné par cette évolution (depuis Edgy).

Dans ce cadre, l'attribut le plus caractéristique est sans doute l'UUID.

Il s'agit d'une suite plus ou moins longue de caractères alpha-numériques qui permet d'identifier de façon absolument sûre toute partition ou tout type de périphérique de stockage ("device") physique ou virtuel pouvant être raccordé au système de fichiers. L'utilisation de l'UUID est généralisée. La plupart des systèmes de fichiers que vous rencontrerez reconnaissent les UUID. Citons notamment, ext2, ext3, reiserfs pour Linux, FAT16 ou 32 et NTFS pour Windows ainsi que les disques RAID. Vous trouverez une liste détaillée dans /usr/share/doc/libvolume-id0/README. Le chiffre de l'UUID est calculé automatiquement au moyen d'un algorithme intégrant notamment certaines données de l'ordinateur hôte. Ce mode de calcul ne présente aucun risque de sécurité crédible.

L'utilisation de l'UUID constitue à la fois un progrès et une contrainte.

Un progrès

L'UUID vous garantit contre tout duplicata et évite ainsi tout blocage en cas de changement de désignation de périphérique.

Une contrainte

Vous devrez apprendre à tenir compte de l'UUID sous peine de risquer de rendre impossible le montage de certains volumes ou partitions.

Comment connaître l'UUID ?

Il y a pléthore de solutions. Choisissez celle qui vous convient le mieux parmi les méthodes citées ci-dessous.

Graphiquement

Depuis le menu Système → Administration → Gestionnaires des périphériques. (Sous Feisty, Système → Préférences → informations sur le matériel.)

Sélectionner sur la partie gauche le périphérique qui vous intéresse et dans la partie droite, cliquez sur l'onglet Avancés puis déroulez toutes les clefs (« keys »). La clé volume.uuid est la dernière de la liste et contient l'UUID tant recherché.

En ligne de commande

Votre choix va dépendre de ce que vous cherchez :

UUID d'une partition

(même si elle n'est pas montée)

Par exemple :

sudo vol_id -u /dev/sda1

vous renvoie quelque chose du type :

c47ddf20-05de-44f5-b79e-c463992ffd3f

La commande vol_id permet de connaître le type du système de fichiers, l'UUID et l'étiquette des volumes ou des partitions. Vous pourrez trouver toutes les informations sur cette comande dans la page de manuel (man vol_id)

Liste des UUID des partitions

Vous permet de connaître les droits d'accès, le propriétaire, la date et l'heure de création et, enfin, l'UUID.

Par exemple :

ls -l /dev/disk/by-uuid/

vous renvoie quelque chose du type :

total 0
lrwxrwxrwx 1 root root 10 2007-06-03 17:16 1124d9e8-6266-4bcf-8035-37a02ba75c69 -> ../../hda3
lrwxrwxrwx 1 root root 10 2007-06-03 17:16 b7bf2c3f-75ab-41cd-a740-d983f6fb340f -> ../../hda1
lrwxrwxrwx 1 root root 10 2007-06-03 23:53 c47ddf20-05de-44f5-b79e-c463992ffd3f -> ../../sda1
lrwxrwxrwx 1 root root 10 2007-06-03 17:16 c6b5add9-0193-447a-a15d-6ba6db1db0b0 -> ../../hda2
lrwxrwxrwx 1 root root 10 2007-06-05 02:04 D021-90E9 -> ../../sdb1

Liste des UUID des partitions et volumes logiques

La commande blkid (ou /sbin/blkid), rattachée à la famille des E2fsprogs, vous permet de trouver les attributs UUID, LABEL et TYPE.

Par exemple :

blkid

vous renvoie quelque chose du type :

/dev/hda1: UUID="b7bf2c3f-75ab-41cd-a740-d983f6fb340f" TYPE="swap" 
/dev/hda2: UUID="c6b5add9-0193-447a-a15d-6ba6db1db0b0" SEC_TYPE="ext2" TYPE="ext3" 
/dev/hda3: UUID="1124d9e8-6266-4bcf-8035-37a02ba75c69" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda1: LABEL="Externe" UUID="c47ddf20-05de-44f5-b79e-c463992ffd3f" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sdb1: LABEL="KINGSTON" UUID="D021-90E9" TYPE="vfat" 

Le fichier de configuration généré par blkid est /etc/blkid.tab.

Attention : le résultat de la commande peut être différent selon que vous exécutez la commande en tant que root ou non root. En effet, un utilisateur non root ne peut pas modifier la table, donc le résultat sera celui de la dernière exécution par root. Si vous avez ajouté ou supprimé des partitions, il faut exécuter la commande avec un sudo pour mettre à jour la table.

si vous voulez modifier l'UUID, vous pouvez utiliser la commande uuidgen pour en créer un nouveau (voir la page de manuel de uuidgen).

À quoi va me servir l'UUID ?

Depuis Edgy, lors de l'installation (ou lors de la mise à jour depuis Dapper), vous trouverez notamment des UUID dans les deux fichiers de configuration importants que sont /boot/grub/menu.lst et /etc/fstab.

Au fil du temps, il est possible, voire probable, que l'organisation de votre système de fichiers change : sans parler des périphériques de stockage, vous allez créer des partitions, modifier leur taille ou leur système de fichiers. A chacune de ces modifications, les partitions modifiées ou créées seront gratifiées automatiquement d'un nouvel UUID.

Au cas où vous auriez plusieurs distributions, les UUID ne sont pas nécessairement les mêmes pour une même partition. Ce genre de choses arrive...
Dans les fichiers de configuration, vous trouverez les UUID écrits de la façon suivante : UUID=0c22e844-4ecb-48d4-a3c3-f083ddb1df3b. Veillez à la respecter.

Que dois-je faire ?

En bref, veiller à la cohérence des UUID.

En attendant la mise en place possible dans le futur d'un système automatique, il vous faut désormais veiller à ce que les deux fichiers de configuration cités plus haut soient mis à jour lors de la création de nouveaux UUID.

Procédure à suivre:

  1. Relever l'UUID de la ou des partitions modifiées. (voir plus haut)
  2. S'il s'agit d'une partition bootable*, mettre à jour le fichier /boot/grub/menu.lst
  • Soit manuellement en éditant le fichier (voir la page sur Grub pour en savoir plus).
  • Soit automatiquement avec la commande
    sudo update-grub

Il y a en effet désormais une ligne dans update-grub qui prescrit d'écrire l'UUID dans le menu.lst en lieu et place du classique /dev/sdX.

La liste des partitions contenue dans le menu de Grub ne concerne que les partitions « bootables », c'est à dire celles qui supportent un système d'exploitation.

La partition de boot nécessite une occurrence d'UUID par noyau installé. Le même UUID devra donc être répété plusieurs fois.

Si vous avez mis à jour de Dapper vers Edgy, le fichier fstab sous son ancienne forme a été sauvegardé dans le fichier /etc/fstab.pre-uuid

Dans /boot/grub/menu.lst, le paragraphe "DefOptions" doit ressembler à ceci:

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=6c1eb35e-ae0c-4e51-ab79-27b78ce97299 ro

Remarquez que la ligne (# kopt...) contenant l'identification de l'UUID n'est commentée (#) qu'une seule fois. C'est normal. Si d'autres lignes "kopt" sont également commentées une seule fois, cela peut induire des erreurs.

Pour monter une partition après modification de l'UUID

Exemple :

/dev/hda1 contenait une partition FAT32 et son UUID valait 3DBA-FCCF.

Après avoir démonté la partition :

sudo umount /media/hda1

Et créé et vérifié le système de fichier :

sudo mkfs.ext2 -T small -cc -L SysRescCD -m 0 -v /dev/hda1
Attention : Cette commande formate et détruit toutes les données de la partition /dev/hda1 !

Je lance la commande suivante pour obtenir son nouvel UUID :

blkid /dev/hda1

Ce qui renvoie :

/dev/hda1: LABEL="SysRescCD" UUID="f1ca2fca-895f-4066-91c4-8a33197e1284" TYPE="ext2"

Je veux que cette partition soit montée dans le répertoire /media/SysRescCD, je le crée donc d'abord :

sudo mkdir /media/SysRescCD

Puis j'édite le fichier /etc/fstab pour ajouter la ligne :

UUID=f1ca2fca-895f-4066-91c4-8a33197e1284 /media/SysRescCD ext2 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1

J'enregistre ce fichier, et je tente de monter la partition fraîchement formatée :

sudo mount /media/SysRescCD
mount: périphérique spécial /dev/disk/by-uuid/f1ca2fca-895f-4066-91c4-8a33197e1284 n'existe pas

En fait, comme le système nous le dit, le répertoire /dev/disk/by-uuid/ qui recense les disques par UUID n'a jamais entendu parler du nouvel UUID.

Ce répertoire contient les UUID qui sont des liens vers les fichiers de périphériques (du type /dev/hdaX).

La commande suivante :

ls -l /dev/disk/by-uuid/ | grep hda1

renvoie :

0 lrwxrwxrwx 1 root root 10  mer 09/05/2007 09:57:22 3DBA-FCCF -> ../../hda1

C'est toujours l'ancien UUID qui référence /dev/hda1 !

La commande pour remettre ce répertoire à jour est :

sudo udevtrigger

Cette commande est lancée lors d'un démarrage.

Mais le plus simple est de recréer le lien avec les commandes :

cd /dev/disk/by-uuid/
sudo ln -s /dev/disk/hda1 f1ca2fca-895f-4066-91c4-8a33197e1284

Et finalement monter la partition :

sudo mount /media/SysRescCD

PS: Cette partition est destinée à recevoir un SystemRescueCD (système de secours). Comme ça plus besoin du CD. Petit conseil : faîtes-le, en suivant cette doc.

UUID, swap et hibernation

Lors de l'upgrade de Dapper vers Edgy, certains ont pu avoir un problème de swap lors de la mise en hibernation.

Dans ce cas, appliquez la technique suivante :

  • Déterminez votre partition swap.
 sudo fdisk -l
  • Regénérez votre partition swap.
 sudo swapoff -a
 sudo mkswap </dev/partition_swap>
 sudo swapon -a

(bien sûr, remplacez </dev/partition_swap> par votre partition)

Gardez l'UUID de sortie de cette commande.

  • Éditez le fichier de configuration /etc/initramfs-tools/conf.d/resume et corrigez l'UUID en le remplaçant par celui que vous venez d'obtenir :
RESUME=UUID=<uuid>

en remplaçant <uuid> par la valeur adéquate...

  • Éditez le fichier de configuration /etc/fstab et corrigez l'UUID et si besoin le /dev/partition_swap à la ligne concernant la partition swap.
  • Mettez à jour initramfs
sudo update-initramfs -u -k $(uname -r)
  • Redémarer avant de tester l'hibernation

Pour plus d'information, voir les page_de_manuel de :

  • mkinitramfs
  • initramfs.conf
  • initramfs-tools
  • update-initramfs

Différencier deux périphériques USB

L'UUID peut vous servir aussi à différencier deux périphériques USB.

(source : Planet Ubuntu-fr - The Glu 19/03/07)

Si vous êtes l'heureux possesseur d'un DD externe et d'une clé USB, il peut arriver que ces périphériques soient identifiés aléatoirement au montage tantôt comme /dev/sda1 tantôt comme /dev/sdb1. Ceci peut occasionner quelques problèmes, par exemple dans le cas ou un script (sauvegarde, vérification etc..) doit s'exécuter sur l'un mais pas sur l'autre.

Vous pouvez forcer le système à les monter sur un point de montage précis en les différenciant tout simplement par leur UUID.

Voici par exemple, comment forcer le fstab à monter un périphérique sur /media/sos en y ajoutant cette ligne :

UUID=f0343b8c-1226-4f66-8b41-6a5c02c028dd /media/sos ext3 defaults 0 1

Ainsi, ce périphérique sera TOUJOURS monté sur /media/sos, et vous n'aurez plus aucun conflit et plus de besoin de vous soucier de quel périphérique a été branché avant ou après l'autre.

Quelques commandes utiles

Aucune des commandes ci-dessous ne vous donnera d'UUID. Par contre, elles présentent l'avantage de vous présenter de façon claire vos volumes et vos partitions.

En mode graphique

Depuis le menu Système → Administration → Éditeur de partitions

Pour KDE préférez qtparted (menu KDE → système)
FIXME : Sous Hardy, l'editeur de partitions n'est plus accessible par défaut. (et sous Gutsy?)

En mode console

cat /etc/fstab
sudo fdisk -l

Pour connaître les informations des partitions montées (type de partition et étiquette) utilisez la commande :

mount -l

les étiquettes, c'est mieux non ?

Les étiquettes (ou Label) sont un mode de désignation convivial qui convient plus particulièrement à une utilisation locale. Les étiquettes ne remplacent absolument pas les UUID car elles n'offrent ni leur unicité ni leur sécurité. Considérez-les comme un aide-mémoire et donc plutôt comme une valeur ajoutée qui vous permettra d'identifier une partition montée rapidement.

Les étiquettes font partie des attributs distinctifs des partitions et autres périphériques de stockage. Elles doivent être attribuées manuellement. Veillez à ne pas donner à votre étiquette un nom de plus de 16 caractères, sinon votre entrée sera tronquée.

Vérification et changement en mode graphique

Comme pour l'UUID, vous pouvez vérifier l'étiquette en mode graphique via le gestionnaire de périphériques, onglet « avancés », sous la clé « volume.label ».

FIXME : Sous Hardy, le gestionnaire de périphériques n'est plus accessible par défaut.

Étiquetage des partions ext3

Les étiquettes des partitions ext2 ou ext3 de votre disque dur peuvent être ajoutées à l'aide du programme e2label inclu dans la distribution. N'oubliez pas de démonter la partition à renommer avant d'exécuter cette commande.

Si vous n'avez pas e2label il vous faut installer le paquet e2tools

Par exemple :

sudo e2label /dev/sda5 vmplayer-roger

Vérifiez :

sudo vol_id /dev/sda5
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=53c87c41-24b8-401d-b765-06955cc93f74
ID_FS_LABEL=vmplayer-roger
ID_FS_LABEL_SAFE=vmplayer-roger

Étiquetage des partions ReiserFS

Donner un label à une partition ReiserFS :

sudo reiserfstune -l sys_root /dev/hda2
sudo /etc/init.d/dbus restart

N'oubliez pas de démonter la partition à renommer avant d'exécuter cette commande.

Sachez qu'il existe aussi des programmes spécifiques pour étiqueter les partitions Windows (comme mlabel du paquet mtools).

Forcer un UUID pour une partition

Il se peut que vous ayez besoin de forcer l'utilisation d'un UUID sur une partition. Pour celà il suffit d'utiliser la commande tune2fs :

sudo tune2fs -U <l'UUID desirée> /dev/<votre partition>

ou dans le cas d'une partition formatée en reiserfs, avec la commande reiserfstune :

sudo reiserfstune -u <l'UUID desirée> /dev/<votre partition> 

Contributeurs : roger64, Id2ndR, manatlan, Hugo2504


uuid_et_label.txt · Dernière modification: Le 13/05/2008, à 19:50 par 90.47.130.65, 213.95.41.13
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL