업데이트 날짜: 2017-01-25

업데이트 날짜: 2017-01-25

VMware에 Fedora 게스트 운영 체제가 있습니다. 파티션을 확장하고 싶어서 /boot가상 머신에 다른 가상 디스크를 추가하고 디스크를 복제해 봅니다.

이후 dd if=/dev/sda1 of=/dev/sdb1신고blkid/dev/sda1그리고/dev/sdb1동일한 UUID/GUID를 가집니다.

이상하게도 우주에는 두 개의 동일한 UUID가 있는데, 그 중 하나를 다른 UUID 값으로 어떻게 변경할 수 있습니까?


업데이트 날짜: 2017-01-25

주제가 변경되었습니다. 여기서 UUID는 파티션 UUID가 아닌 파일 시스템 UUID를 나타냅니다.

파일 시스템 UUID이므로 UUID를 변경하려면 파일 시스템별 유틸리티가 필요하거나 16진수 편집기를 사용하여 디스크의 원시 데이터를 수정해야 합니다(위험합니다. 자신이 무엇을 하고 있는지 모르면 권장하지 않습니다.).

답변1

임의의 새 UUID를 생성하려면 다음을 사용할 수 있습니다.

$ uuidgen

실제 UUID 변경은 파일 시스템에 따라 다릅니다.

확장 시리즈 파일 시스템을 가정

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

또는 uuidgen이 작동한다고 확신하는 경우:

# tune2fs -U $(uuidgen) /dev/sdb1

btrfs 파일 시스템 가정

# btrfstune -U $(uuidgen) /dev/sdb1

UUID는 슈퍼블록에 저장되므로 파일 시스템의 바이트 단위 복사본은 동일한 UUID를 갖게 됩니다.

답변2

ext2/ext3/ex4 및 xfs 외에도 다음 파일 시스템이나 블록 장치의 UUID 또는 GPT 파티션의 PARTUUID를 변경할 수도 있습니다.

교환

swaplabel -U $NEW_UUID

소프트웨어 RAID(md raid)

MD RAID의 경우 먼저 RAID를 중지한 다음 재조립 시 UUID를 업데이트해야 합니다. 따라서 RAID가 마운트되어 /있고 중지할 수 없는 경우 오프라인 모드에서 UUID를 업데이트해야 합니다. 이를 위해서는 Live CD/USB를 사용하십시오.

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

예:

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

UUID가 업데이트된 후 다음에 성공적으로 부팅할 수 있도록 grub.cfg( 명령줄 rd.md.uuid=$NEW_UUID에서 ) 및/또는 및/또는 및/또는 (Debian 시리즈) 및/또는 (Red Hat 시리즈) 를 업데이트해야 할 수 있습니다 .linux/linuxefi/linux16fstabmdadm.confupdate-initramfsdracut --force

LUKS(비밀번호 설정)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

예:

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

NTFS 파일 시스템

실용적입니다 ntfslabel(감사합니다NTFS-3G)은 NTFS 파일 시스템의 UUID를 변경합니다. 바라보다abchk1234의 답변.

대신 NTFS 파일 시스템의 전체 UUID를 변경하려면 --new-half-serial--new-serial옵션을 사용하십시오.

예:

ntfslabel --new-serial=1122334455667788 /dev/sda3

FAT/exFAT 파일 시스템

이건 또 다른 이야기인데,현재 이러한 파일 시스템의 파일 시스템 UUID를 수정하는 유틸리티는 없습니다.(바라보다라이히하르트의 답변--tool mlabel), 하지만 이를 수행하기 위해 디스크의 원시 데이터를 수정할 수 있습니다.

경고, 디스크의 원본 데이터를 수정하는 것은 위험하며 주의 깊게 수행하지 않으면 데이터가 손실될 수 있습니다.

디스크의 원본 데이터를 수정하는 데 사용하는 자세한 단계는 다음과 같습니다 hexedit.

  1. blkid, 파일 시스템의 UUID를 종이에 적거나 기억해 두십시오. FAT/exFAT의 UUID 문자열은 과 같고 1122-3344, NTFS의 UUID 문자열은 과 같습니다 1122334455667788.

  2. hexedit를 사용하여 파티션 장치 열기

    hexedit <partition device such as /dev/sda1>

  3. 를 누르고 /UUID를 역순으로 입력( blkid보고된 경우 1234-ABCD검색 CDAB3412)하여 디스크에서 UUID 데이터를 검색합니다.

  4. UUID를 찾으면 변경하고 F2저장 및 종료를 누릅니다.

  5. blkidUUID를 확인하세요.

  6. UUID가 수정되면 이를 업데이트 grub.cfg하거나 fstab다음에 성공적으로 부팅할 수 있도록 해야 할 수도 있습니다.

  7. 실행 fsck <partition device such as /dev/sda1>하고"부트 섹터와 백업에는 차이가 있습니다"정보. 이 문제를 해결하려면 다음을 선택하십시오."1) 원본 파일을 백업에 복사하세요", 묻는다면"변경을 수행하시겠습니까? (y/n)"을 누르세요 y.


GPT 파티션의 PARTUUID

작은 이야기: 지금까지 GPT 파티션의 PARTUUID를 건드려야 한다고는 생각도 못했습니다. 지금까지 Windows를 작은 디스크에서 큰 디스크로 마이그레이션하려고 하면 Windows가 큰 디스크에서 부팅되지 않고 심지어 부팅도 되지 않습니다. 자동으로 수정하세요. 그 이유는 Windows + UEFI의 경우 NTFS 파일 시스템의 UUID를 원래 UUID로 변경하는 것만으로는 충분하지 않고 GPT 파티션의 PARTUUID도 변경해야 하기 때문입니다. PARTUUID가 중요합니다. (PARTUUID를 원본으로 변경한 후 대용량 디스크에서 Windows가 성공적으로 부팅되었습니다.)

이미 가지고 있다답변은 askubuntu.com에 있습니다.gdisk유틸리티를 사용하여 GPT 파티션의 PARTUUID를 변경하는 방법을 보여줍니다 .

util-linux의 현재 버전 fdisk(편집 당시 Fedora 32 저장소의 2.35.2)은 실제로 다음과 같은 전문가 모드에서도 이 작업을 수행할 수 있습니다.유틸리티Linux v2.23, fdisk에는 GPT가 활성화되어 있습니다.

다음은 util-linux 유틸리티를 사용하여 PARTUUID를 변경하는 예입니다 fdisk.

# 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"

답변3

사용:

tune2fs -U random /dev/sdb1

만약 그것이라면확대파일 시스템 또는

xfs_admin -U generate /dev/sdb1

만약 그것이라면xfs파일 시스템.


두 번째 파티션이 동일한 UUID를 갖는 이유는 dd한 파일에서 다른 파일로 데이터를 복사하기 때문입니다( dd if=/dev/sda1 of=/dev/sdb1= cat /dev/sda1 > /dev/sdb1). dd파티션이 무엇인지 또는 UUID를 생성하는 방법을 모르기 때문에 모든 데이터를 다음과 같이 복사합니다. 이는 파티션 시작 부분 근처의 파일 시스템 슈퍼 블록에 저장되어 있는 UUID를 포함합니다.


그런데
UUID(Universally Unique Identifier)라는 이름도 이상한 것 같아요. PGUID(아마도 전역 고유 식별자)라고 부르거나 ARLN(합리적으로 큰 숫자)이라고 부르는 것이 더 좋습니다.

답변4

XFS의 경우 다음을 사용합니다.xfs_admin -U <uuid> <device>

UUID를 보는 데 사용됩니다 xfs_admin -u <device>(보려면 소문자 옵션, 설정하려면 대문자 옵션에 유의하세요). U&L의 또 다른 기사에서는 blkid시스템의 UUID 전체 또는 일부를 보기 위한 명령을 지적합니다 .

관련 정보