GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengubah UUID sistem file (2 UUID yang sama)?

Untuk menghasilkan UUID baru secara acak, seseorang dapat menggunakan:

$ uuidgen

Untuk benar-benar mengubah UUID bergantung pada sistem file.

Dengan asumsi sistem file ext-family

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

Atau jika Anda yakin uuidgen akan berhasil:

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

Dengan asumsi sistem file btrfs

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

UUID disimpan di superblok, jadi salinan byte-per-byte dari sistem file akan memiliki UUID yang sama.


Gunakan:

tune2fs -U random /dev/sdb1

jika itu adalah ext sistem file, atau

xfs_admin -U generate /dev/sdb1

jika itu adalah xfs sistem file.

Alasan partisi kedua memiliki UUID yang sama adalah karena dd cukup salin data dari satu file ke file lainnya (dd if=/dev/sda1 of=/dev/sdb1 =cat /dev/sda1 > /dev/sdb1 ); dd tidak tahu apa itu partisi, atau cara membuat UUID, jadi ia hanya menyalin semua data apa adanya, termasuk UUID, yang disimpan di superblok filysystem di dekat bagian awal partisi.

Ngomong-ngomong,
Saya juga berpikir UUID (Pengidentifikasi Unik Universal) adalah nama yang aneh. Itu harus disebut PGUID (Mungkin Pengidentifikasi Unik Secara Global), atau bahkan lebih baik, hanya ARLN (Nomor yang Cukup Besar).


Selain ext2 /ext3 / ex4 dan xfs, Anda juga dapat mengubah UUID dari sistem file berikut atau memblokir perangkat atau PARTUUID dari partisi GPT.

Tukar

swaplabel -U $NEW_UUID

RAID Perangkat Lunak (serangan md)

Untuk MD RAID, Anda harus menghentikan RAID terlebih dahulu, lalu memperbarui UUID saat melakukan perakitan ulang. Jadi, jika RAID Anda dipasang ke / , Anda tidak dapat menghentikannya, Anda perlu memperbarui UUID dalam mode offline -- gunakan live CD/USB untuk melakukannya.

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

Contoh:

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

Setelah UUID diperbarui, Anda mungkin perlu memperbarui grub.cfg (rd.md.uuid=$NEW_UUID di linux/linuxefi/linux16 baris perintah) dan/atau fstab dan/atau mdadm.conf dan/atau update-initramfs (keluarga Debian) dan/atau dracut --force (Keluarga Red Hat) sehingga Anda dapat melakukan booting dengan sukses di lain waktu.

LUKS (cryptsetup)

cryptsetup luksUUID --uuid=$NEW_UUID $LUKS_DEVICE

Contoh:

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

Sistem file NTFS

Ada ntfslabel utilitas (terima kasih kepada ntfs-3g) untuk mengubah UUID sistem file NTFS. Lihat jawaban abchk1234.

Jika Anda ingin mengubah seluruh UUID sistem file NTFS, bukan --new-half-serial , gunakan --new-serial opsi.

Contoh:

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

Sistem file FAT / exFAT

Ini adalah cerita lain di sini, saat ini tidak ada utilitas untuk mengubah UUID sistem file dari sistem file ini (Lihat jawaban reichhart -- mlabel alat), tetapi kita dapat memodifikasi data mentah pada disk untuk melakukan ini.

PERINGATAN, mengubah data mentah pada disk berbahaya, dan dapat kehilangan data tanpa pengoperasian yang hati-hati.

Berikut detail langkah-langkah memodifikasi raw data pada disk menggunakan hexedit .

  1. blkid , tuliskan UUID sistem file ke kertas, atau ingatlah. String UUID dari FAT / exFAT terlihat seperti 1122-3344 , UUID string NTFS terlihat seperti 1122334455667788 .

  2. Buka perangkat partisi menggunakan hexedit

    hexedit <partition device such as /dev/sda1>

  3. Tekan / , masukkan UUID dalam urutan terbalik (jika blkid melaporkan 1234-ABCD , lalu cari CDAB3412 ) untuk menelusuri data UUID pada disk.

  4. Setelah UUID ditemukan, ubah, tekan F2 untuk menyimpan dan keluar.

  5. blkid untuk memverifikasi UUID.

  6. Setelah UUID diubah, Anda mungkin perlu memperbarui grub.cfg dan/atau fstab sehingga Anda dapat melakukan booting dengan sukses di lain waktu.

  7. Jalankan fsck <partition device such as /dev/sda1> dan lihat "Ada perbedaan antara sektor boot dan cadangannya" pesan. Untuk mengatasinya, pilih "1) Salin yang asli ke cadangan" , dan jika Anda ditanya "Lakukan perubahan ? (y/n)" Anda menekan y .

PARTUUID dari partisi GPT

Sebuah cerita pendek :Saya tidak pernah berpikir saya perlu menyentuh PARTUUID dari partisi GPT, sampai sekarang, ketika saya mencoba memigrasikan Windows dari disk kecil ke disk besar, Windows gagal melakukan boot pada disk besar dan bahkan tidak dapat diperbaiki secara otomatis. Alasannya adalah mengubah UUID sistem file NTFS ke yang asli tidak cukup untuk Windows + UEFI, Anda juga perlu mengubah PARTUUID dari partisi GPT - masalah PARTUUID. (Setelah mengubah PARTUUID ke aslinya, Windows berhasil mem-boot dari disk besar.)

Sudah ada jawaban di sini di askubuntu.com untuk menunjukkan cara mengubah PARTUUID dari partisi GPT menggunakan gdisk utilitas.

Versi fdisk saat ini (2.35.2 di repositori Fedora 32 pada saat pengeditan) dari util-linux juga dapat melakukannya dalam mode pakar, faktanya, mulai dari util-linux v2.23, fdisk telah mengaktifkan GPT.

Berikut contoh mengubah PARTUUID menggunakan util-linux fdisk utilitas:

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

Linux
  1. CentOS / RHEL :Cara mengubah UUID sistem file

  2. Cara menggunakan perintah "xfs_admin" untuk mengubah parameter sistem file XFS

  3. Cara Mengubah Label sistem file di CentOS/RHEL

  1. Cara mengubah nama host di Linux

  2. CentOS / RHEL :Cara menemukan UUID perangkat atau sistem file

  3. bagaimana melakukan pengujian sistem file?

  1. Bagaimana Kami Mengubah Kata Sandi Root?

  2. Cara Mengganti Shell di Linux

  3. Cara Mengubah Nama Host di Debian