ランダムな新しい UUID を生成するには、以下を使用できます:
$ uuidgen
実際に UUID を変更するには、ファイル システムに依存します。
ext-family ファイルシステムを想定
# tune2fs -U <output of uuidgen> /dev/sdb1
または、uuidgen が機能すると確信している場合:
# tune2fs -U $(uuidgen) /dev/sdb1
btrfs ファイルシステムを想定
# btrfstune -U $(uuidgen) /dev/sdb1
UUID はスーパーブロックに保存されるため、ファイルシステムのバイトごとのコピーは同じ UUID を持つことになります。
用途:
tune2fs -U random /dev/sdb1
内線の場合 ファイルシステム、または
xfs_admin -U generate /dev/sdb1
xfs の場合 ファイルシステム。
2 番目のパーティションが同じ UUID を持つ理由は、dd
のためです。 あるファイルから別のファイルにデータをコピーするだけです (dd if=/dev/sda1 of=/dev/sdb1
=cat /dev/sda1 > /dev/sdb1
); dd
パーティションが何であるか、または UUID を生成する方法がわからないため、UUID を含むすべてのデータをそのままコピーしただけで、パーティションの開始近くにある filesystem スーパーブロックに格納されています。
ところで、
また、UUID (Universally Unique IDentifier) も変な名前だと思います。これは、PGUID (おそらくグローバルに一意の識別子) と呼ばれるか、単に ARLN (合理的に大きな数) と呼ばれる必要があります。
ext2 /ext3 / ex4 と xfs のほかに、次のファイル システムまたはブロック デバイスの UUID または GPT パーティションの PARTUUID を変更することもできます。
スワップ
swaplabel -U $NEW_UUID
ソフトウェア RAID (MD RAID)
MD RAID の場合、最初に RAID を停止してから、再組み立て時に UUID を更新する必要があります。したがって、RAID が /
にマウントされている場合 、停止できません。オフライン モードで UUID を更新する必要があります -- ライブ CD/USB を使用してください。
mdadm --stop $RAID_DEVICE
mdadm --assemble $RAID_DEVICE --update=uuid --uuid=$NEW_UUID $MEMBER_DEVICES...
例:
<オール>mdadm --stop /dev/md127
mdadm --assemble /dev/md127 --update=uuid --uuid=2A1D2A1D-2A1D-2A1D-2A1D-2A1D2A1D2A1D /dev/sda2 /dev/sdb2
UUID の更新後、grub.cfg
の更新が必要になる場合があります (rd.md.uuid=$NEW_UUID
linux/linuxefi/linux16
で コマンドライン) および/または fstab
および/または mdadm.conf
および/または update-initramfs
(Debian ファミリー) および/または dracut --force
(Red Hat ファミリ) を使用して、次回正常に起動できるようにします。
LUKS (cryptsetup)
cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE
例:
cryptsetup luksUUID --uuid=e0c0e0c0-e0c0-e0c0-e0c0-e0c0e0c0e0c0 ~/encrypted-LUKS.loop
NTFS ファイル システム
ntfslabel
があります NTFSファイルシステムのUUIDを変更するユーティリティ(ntfs-3gに感謝)。 abchk1234 の回答を参照してください。
--new-half-serial
の代わりに NTFS ファイル システムの UUID 全体を変更したい場合 、--new-serial
を使用します オプション。
例:
ntfslabel --new-serial=1122334455667788 /dev/sda3
FAT / exFAT ファイル システム
これは別の話です。現在、これらのファイルシステムのファイルシステム UUID を変更するユーティリティはありません (reichhart の回答を参照 -- mlabel
ツール) ですが、これを行うためにディスク上の生データを変更できます。
警告、ディスク上の生データを変更することは危険です。慎重に操作しないとデータが失われる可能性があります。
hexedit
を使用してディスク上の生データを変更する詳細な手順は次のとおりです。 .
blkid
、ファイルシステムのUUIDを紙に書き留めるか、覚えておいてください。 FAT / exFAT の UUID 文字列は 1122-3344
のようになります 、NTFS の UUID 文字列は 1122334455667788
のようになります .
hexedit を使用してパーティション デバイスを開きます
hexedit <partition device such as /dev/sda1>
/ を押します 、UUID を逆の順序で入力します (blkid
の場合) 報告された 1234-ABCD
、次に CDAB3412
を検索します ) でディスク上の UUID データを検索します。
UUID が見つかったら、それらを変更し、F2 を押します 保存して終了します。
blkid
UUID を確認します。
UUID を変更したら、grub.cfg
を更新する必要がある場合があります および/または fstab
次回正常に起動できるようにします。
fsck <partition device such as /dev/sda1>
を実行 「ブート セクタとそのバックアップには違いがあります」を参照してください。 メッセージ。それを解決するには、「1) オリジナルをバックアップにコピー」を選択します 、「変更を行いますか? (y/n)」と尋ねられた場合 y を押します .
GPT パーティションの PARTUUID
短編 :GPT パーティションの PARTUUID に触れる必要があるとは思いもしませんでした。今まで、Windows を小さなディスクから大きなディスクに移行しようとすると、Windows は大きなディスクで起動できず、自動的に修復することさえできませんでした。その理由は、NTFS ファイル システムの UUID を元の UUID に変更するだけでは、Windows + UEFI では十分ではなく、GPT パーティションの PARTUUID も変更する必要があるためです - PARTUUID の問題。 (PARTUUID を元のものに変更した後、Windows は大容量ディスクから正常に起動しました。)
gdisk
を使用して GPT パーティションの PARTUUID を変更する方法を示すため、askubuntu.com には既に回答があります。
fdisk
の現在のバージョン (編集時の Fedora 32 リポジトリでは 2.35.2) from util-linux もエキスパート モードで実行できます。実際、util-linux v2.23 以降では、fdisk は GPT 対応になっています。
util-linux fdisk
を使用して PARTUUID を変更する例を次に示します。 ユーティリティ:
# 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"