Comment changer l'UUID du système de files (2 mêmes UUID)?

J'ai un operating system invité fedora dans VMware. Je veux développer /boot partition de /boot , donc j'ajoute un autre disque virtuel à cette VM, et essaye de cloner le disque.

Après dd if=/dev/sda1 of=/dev/sdb1 , blkid signale que / dev / sda1 et / dev / sdb1 ont le même UUID / GUID.

C'est bizarre qu'il y ait 2 UUID identiques dans l'univers, comment changer l'un d'entre eux en une autre UUID?


Mise à jour 2017-01-25

Sujet modifié, UUID signifie UUID du système de files, pas partition UUID.

Comme il s'agit de l'UUID du système de files, les utilitaires spécifiques au système de files sont nécessaires pour modifier l'UUID ou utiliser hexeditor pour modifier datatables brutes sur le disque ( DANGEREUX, pas recommandé sauf si vous savez ce que vous faites ).

En supposant que c'est un système de files de la famille ext2:

 uuidgen tune2fs -U <output of uuidgen> /dev/sdb1 

Ou si vous êtes confiant, uuidgen va travailler:

 tune2fs -U `uuidgen` /dev/sdb1 

L'UUID est stocké dans le superbloc, donc une copy octet-pour-octet du système de files aura le même UUID.

Pour XFS, utilisez: xfs_admin -U <uuid> <device>

Utilisez xfs_admin -u <device> pour afficher un UUID (notez l'option minuscule à afficher, par opposition à l'option majuscule à définir). Un autre post sur U & L a souligné la command blkid pour voir tout ou partie des UUID sur le système.

Utilisation:

 tune2fs -U random /dev/sdb1 

si c'est un système de files ext , ou

 xfs_admin -U generate /dev/sdb1 

si c'est un système de files xfs .


La raison pour laquelle la seconde partition a le même UUID est parce que dd copy juste des données d'un file à un autre ( dd if=/dev/sda1 of=/dev/sdb1 = cat /dev/sda1 > /dev/sdb1 ); dd ne sait pas ce qu'est une partition, ni comment générer un UUID, alors il a simplement copié toutes datatables telles quelles, y compris l'UUID, qui est stocké dans le superblock filysystem près du début de la partition.


Au fait,
Je pense aussi que UUID (Universally Unique IDentifier) ​​est un nom bizarre. Il devrait être appelé PGUID (identificateur unique possible globalement), ou même mieux, juste ARLN (un nombre raisonnablement grand).

Outre ext2 / ext3 / ex4 et xfs, vous pouvez également changer UUID du système de files ou du périphérique suivant.

Échanger

swaplabel -U $ NEW_UUID

RAID logiciel (RAID md)

Pour MD RAID, vous devez d'abord arrêter le RAID, puis mettre à jour l'UUID lors du réassemblage. Donc, si votre RAID est monté sur / , vous devez mettre à jour l'UUID en mode déconnecté – utilisez un CD live pour le faire.

  1. mdadm --stop $ RAID_DEVICE
  2. mdadm --assemble $ RAID_DEVICE --update=uuid --uuid= $ NEW_UUID $ MEMBER_DEVICES …

Exemple:

  1. mdadm --stop /dev/md127
  2. mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2

Après la mise à jour de l'UUID, vous devrez peut-être mettre à jour grub.cfg ( rd.md.uuid= $ NEW_UUID dans la command line linux / linuxefi / linux16 ) et / ou fstab et / ou mdadm.conf pour redémarrer la prochaine fois.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid= $ NEW_UUID $ LUKS_DEVICE

Exemple:

cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop

FAT / NTFS / exFAT

Ceci est une autre histoire ici, actuellement il n'y a pas d'utilitaires pour modifier l'UUID du système de files de ces filesystems, mais nous pouvons modifier datatables brutes sur le disque pour le faire.

AVERTISSEMENT, il est dangereux de modifier datatables brutes sur le disque, et pourrait perdre des données sans un fonctionnement prudent.

Voici des étapes détaillées pour modifier datatables brutes sur le disque en utilisant hexedit .

  1. blkid , notez l'UUID du système de files sur papier, ou souvenez-vous de cela. La string UUID de FAT / exFAT ressemble à 1122-3344 , la string UUID de NTFS ressemble à 1122334455667788 .
  2. Ouvrir le périphérique de partition en utilisant hexedit

    hexedit <partition device such as /dev/sda1>

  3. Appuyez sur / , entrez l'UUID dans l'ordre inverse (si lsblk a signalé 1122-3344 , puis searchz 44332211 ) pour searchr datatables UUID sur le disque.
  4. Une fois l'UUID localisé, changez-le, appuyez sur F2 pour sauvegarder et quitter.
  5. blkid pour vérifier l'UUID.
  6. Une fois l'UUID modifié, vous devrez peut-être mettre à jour grub.cfg et / ou fstab pour pouvoir démarrer correctement la prochaine fois.