Pro vygenerování náhodného nového UUID lze použít:
$ uuidgen
Skutečná změna UUID závisí na systému souborů.
Za předpokladu souborového systému ext-family
# tune2fs -U <output of uuidgen> /dev/sdb1
Nebo pokud jste si jisti, že uuidgen bude fungovat:
# tune2fs -U $(uuidgen) /dev/sdb1
Za předpokladu souborového systému btrfs
# btrfstune -U $(uuidgen) /dev/sdb1
UUID je uloženo v superbloku, takže kopie souborového systému bajt po bajtu bude mít stejné UUID.
Použijte:
tune2fs -U random /dev/sdb1
pokud se jedná o ext souborový systém nebo
xfs_admin -U generate /dev/sdb1
pokud se jedná o xfs souborový systém.
Důvod, proč má druhý oddíl stejné UUID, je dd
pouze zkopíruje data z jednoho souboru do druhého (dd if=/dev/sda1 of=/dev/sdb1
=cat /dev/sda1 > /dev/sdb1
); dd
neví, co je oddíl nebo jak vygenerovat UUID, takže prostě zkopíroval všechna data tak, jak jsou, včetně UUID, které je uloženo v superbloku filysystem poblíž začátku oddílu.
Mimochodem,
Také si myslím, že UUID (Universally Unique IDentifier) je zvláštní název. Mělo by se jmenovat PGUID (možná celosvětově jedinečný identifikátor), nebo ještě lépe jen ARLN (přiměřeně velké číslo).
Kromě ext2 /ext3 / ex4 a xfs můžete také změnit UUID následujícího souborového systému nebo blokového zařízení nebo PARTUUID oddílu GPT.
Vyměnit
swaplabel -U $NEW_UUID
Softwarový RAID (md raid)
U MD RAID musíte nejprve zastavit RAID a poté aktualizovat UUID při opětovném sestavení. Pokud je tedy váš RAID připojen k /
, nemůžete to zastavit, musíte aktualizovat UUID v režimu offline -- použijte k tomu živé CD/USB.
mdadm --stop $RAID_DEVICE
mdadm --assemble $RAID_DEVICE --update=uuid --uuid=$NEW_UUID $MEMBER_DEVICES...
Příklad:
mdadm --stop /dev/md127
mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2
Po aktualizaci UUID možná budete muset aktualizovat grub.cfg
(rd.md.uuid=$NEW_UUID
v linux/linuxefi/linux16
příkazový řádek) a/nebo fstab
a/nebo mdadm.conf
a/nebo update-initramfs
(rodina Debian) a/nebo dracut --force
(rodina Red Hat), abyste mohli příště úspěšně zavést systém.
LUKS (cryptsetup)
cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE
Příklad:
cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop
Souborový systém NTFS
Je tam ntfslabel
utility (díky ntfs-3g) pro změnu UUID souborového systému NTFS. Viz odpověď abchk1234.
V případě, že chcete změnit celé UUID souborového systému NTFS namísto --new-half-serial
, použijte --new-serial
možnost.
Příklad:
ntfslabel --new-serial=1122334455667788 /dev/sda3
Souborový systém FAT / exFAT
Toto je jiný příběh, v současné době neexistují žádné nástroje pro úpravu UUID souborového systému těchto souborových systémů (Viz odpověď Reichharta -- mlabel
nástroj), ale můžeme k tomu upravit nezpracovaná data na disku.
UPOZORNĚNÍ, je nebezpečné upravovat nezpracovaná data na disku a bez pečlivé operace by mohlo dojít ke ztrátě dat.
Zde jsou podrobné kroky k úpravě nezpracovaných dat na disku pomocí hexedit
.
-
blkid
, zapište si UUID souborového systému na papír nebo si jej zapamatujte. Řetězec UUID FAT / exFAT vypadá jako1122-3344
, UUID řetězec NTFS vypadá jako1122334455667788
. -
Otevřete zařízení oddílu pomocí hexedit
hexedit <partition device such as /dev/sda1>
-
Stiskněte / , zadejte UUID v opačném pořadí (pokud
blkid
hlášeno1234-ABCD
a poté vyhledejteCDAB3412
) pro vyhledání dat UUID na disku. -
Jakmile najdete UUID, změňte je a stiskněte F2 uložit a ukončit.
-
blkid
pro ověření UUID. -
Jakmile je UUID upraveno, možná budete muset aktualizovat
grub.cfg
a/nebofstab
abyste mohli příště úspěšně zavést. -
Spusťte
fsck <partition device such as /dev/sda1>
a podívejte se na „Mezi spouštěcím sektorem a jeho zálohou jsou rozdíly“ zpráva. Chcete-li to vyřešit, vyberte "1) Kopírovat originál do zálohy" a pokud se zobrazí dotaz "Provést změny? (y/n)" stisknete y .
PARTUUID oddílu GPT
Krátký příběh :Nikdy jsem si nemyslel, že se budu muset dotknout PARTUUID oddílu GPT, až teď, když se pokouším migrovat Windows z malého disku na velký disk, Windows se nepodařilo spustit na velkém disku a nelze jej ani automaticky opravit. Důvodem je, že pro Windows + UEFI nestačí změnit UUID souborového systému NTFS na původní, ale je potřeba změnit i PARTUUID oddílu GPT - na PARTUUID záleží. (Po změně PARTUUID na původní se systém Windows úspěšně zavedl z velkého disku.)
Zde na askubuntu.com již existuje odpověď, která ukazuje, jak změnit PARTUUID oddílu GPT pomocí gdisk
utility.
Aktuální verze fdisk
(2.35.2 v repozitářích Fedory 32 v době úprav) z util-linux to umí také v expertním režimu, ve skutečnosti, počínaje util-linux v2.23, fdisk má povoleno GPT.
Zde je příklad změny PARTUUID pomocí util-linux fdisk
nástroj:
# truncate -s 200M /tmp/file-as-a.disk
# LANG=en_US.UTF-8 fdisk /tmp/file-as-a.disk
Welcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xc0fc8503.
Command (m for help): g
Created a new GPT disklabel (GUID: 4CD23B97-80C5-BD42-8466-1B9476653A92).
Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-409566, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-409566, default 409566):
Created a new partition 1 of type 'Linux filesystem' and of size 199 MiB.
Command (m for help): i
Selected partition 1
Device: /tmp/file-as-a.disk1
Start: 2048
End: 409566
Sectors: 407519
Size: 199M
Type: Linux filesystem
Type-UUID: 0FC63DAF-8483-4772-8E79-3D69D8477DE4
UUID: 7265D7C3-6277-DE4B-956C-41E3BFFF8E0D
Command (m for help): w
The partition table has been altered.
Syncing disks.
# LANG=en_US.UTF-8 fdisk /tmp/file-as-a.disk
Welcome to fdisk (util-linux 2.35.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): x
Expert command (m for help): m
Help (expert commands):
GPT
i change disk GUID
n change partition name
u change partition UUID
l change table length
M enter protective/hybrid MBR
A toggle the legacy BIOS bootable flag
B toggle the no block IO protocol flag
R toggle the required partition flag
S toggle the GUID specific bits
Generic
p print the partition table
v verify the partition table
d print the raw data of the first sector from the device
D print the raw data of the disklabel from the device
f fix partitions order
m print this menu
Save & Exit
q quit without saving changes
r return to main menu
Expert command (m for help): u
Selected partition 1
New UUID (in 8-4-4-4-12 format): 11223344-5566-7788-9900-AABBCCDDEEFF
Partition UUID changed from 7265D7C3-6277-DE4B-956C-41E3BFFF8E0D to 11223344-5566-7788-9900-AABBCCDDEEFF.
Expert command (m for help): w
w: unknown command
Expert command (m for help): r
Command (m for help): w
The partition table has been altered.
Syncing disks.
# losetup --partscan /dev/loop101 /tmp/file-as-a.disk
# blkid /dev/loop101*
/dev/loop101: PTUUID="4cd23b97-80c5-bd42-8466-1b9476653a92" PTTYPE="gpt"
/dev/loop101p1: PARTUUID="11223344-5566-7788-9900-aabbccddeeff"