Come posso modificare un UUID del volume NTFS?

3

Ho appena aggiornato il mio Mac a Mac OS X El Capitan e volevo aggiornare il mio Windows 7 a Windows 10. Ma, prima, ho bisogno di fare un backup della mia partizione Windows.

Come ho fatto prima, ho una partizione Windows (NTFS) su un HDD di backup.

Il fatto è che voglio fare un nuovo backup con Carbon Copy Cloner, ma mi viene detto che non può essere fatto perché ci sono due volumi con lo stesso UUID.

OK, allora combatto con la mia partizione di backup di Windows per avere un UUID diverso da quello che ho ottenuto per la mia partizione Windows "locale" ... e sto perdendo la lotta!

Ho questo quando uso diskutil info /dev/disk0s2 :

   Device Identifier:        disk0s2
   Device Node:              /dev/disk0s2
   Whole:                    No
   Part of Whole:            disk0
   Device / Media Name:      Windows_NTFS_Untitled_3

   Volume Name:              Win

   Mounted:                  Yes
   Mount Point:              /Volumes/Win

   File System Personality:  NTFS
   Type (Bundle):            ntfs
   Name (User Visible):      Windows NT File System (NTFS)

   Partition Type:           Microsoft Basic Data
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified
   Volume UUID:              24D65D1E-43E8-4FF0-BBBF-A82CC6B45D20
   Disk / Partition UUID:    D5C23E74-E658-45E1-B9B3-44681D0D02C2

   Total Size:               85.0 GB (84999667712 Bytes) (exactly 166014976 512-Byte-Units)
   Volume Free Space:        34.1 GB (34093342720 Bytes) (exactly 66588560 512-Byte-Units)
   Device Block Size:        512 Bytes
   Allocation Block Size:    4096 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No

   Device Location:          Internal
   Removable Media:          No

   Solid State:              No

... e ho questo usando diskutil info /dev/disk1s4 :

   Device Identifier:        disk1s4
   Device Node:              /dev/disk1s4
   Whole:                    No
   Part of Whole:            disk1
   Device / Media Name:      WindowsB

   Volume Name:              Windows

   Mounted:                  Yes
   Mount Point:              /Volumes/Windows

   File System Personality:  NTFS
   Type (Bundle):            ntfs
   Name (User Visible):      Windows NT File System (NTFS)

   Partition Type:           Microsoft Basic Data
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 USB
   SMART Status:             Not Supported
   Volume UUID:              24D65D1E-43E8-4FF0-BBBF-A82CC6B45D20
   Disk / Partition UUID:    C8E2A2D5-6065-4903-8BB6-AC02698323A6

   Total Size:               84.7 GB (84655734784 Bytes) (exactly 165343232 512-Byte-Units)
   Volume Free Space:        44.0 GB (44012474368 Bytes) (exactly 85961864 512-Byte-Units)
   Device Block Size:        512 Bytes
   Allocation Block Size:    4096 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No

   Device Location:          External
   Removable Media:          No

Come puoi vedere, "Disk / Partition UUID" è diverso, ma non "Volume UUID".

Qualcuno ha una soluzione per cambiare "Volume UUID"?

    
posta pierreonthenet 01.03.2016 - 23:23
fonte

5 risposte

2

Solitamente i volumi NTFS non contengono UUID. L'UUID visibile in diskutil è derivato dal numero di serie del volume NTFS.

Ottieni l'identificativo del disco del disco di backup e il volume:

diskutil list

Smonta il disco esterno:

diskutil umountDisk /dev/disk1

Copia il superblocco NTFS:

sudo dd if=/dev/disk1s4 of=~/Desktop/superblock bs=512 count=1

Cambia i bit mod:

sudo chmod 777 ~/Desktop/superblock 

Crea un backup del superblocco (per ogni evenienza!):

cp ~/Desktop/superblock ~/Desktop/superblock.backup

Modifica il file superblocco con HexFiend :

Il numero di serie del volume NTFS è evidenziato in viola (otto byte che iniziano con l'offset 72 o 0x48). Modifica almeno un byte. Dopo aver salvato il file, controlla le dimensioni che dovrebbero comunque essere 512 byte.

Riscrivi il superblocco:

sudo dd if=~/Desktop/superblock of=/dev/disk1s4 bs=512 count=1

Riavvia il Mac e verifica il nuovo UUID di disk1s4.

    
risposta data 02.03.2016 - 04:34
fonte
2

Puoi semplicemente cambiare UUID per formato / cancellazione della partizione.

1) Formatta il disco su Mac OS Extended usando l'Utility Disco integrata

2) Se hai bisogno di una partizione Windows, formatta il disco su exFAT dopo aver fatto il primo passo (per qualche motivo hai bisogno di due passaggi per la partizione Windows)

Puoi verificare se UUID è stato modificato elencando tutti i numeri UUID:

find /Volumes -maxdepth 1 -mindepth 1 -exec diskutil info {} \;
    
risposta data 16.10.2016 - 17:19
fonte
2

Su una partizione NTFS l'UUID è approssimativamente 3352 byte [1] dall'inizio della MFT, per trovare l'offset della MFT è necessario leggere gli 8 byte che iniziano dalla 48 byte dell'inizio della partizione, Questi 8 byte una volta convertiti daranno l'offset del settore in cui inizia la MFT. Per ottenere l'offset della MFT, gli 8 byte convertiti devono essere moltiplicati per il numero di byte per settore (512) e il numero di settori per cluster (8) (8 e 512 sono i valori predefiniti per una partizione NTFS).

Ad esempio, gli 8 byte che iniziano al 48esimo (in lettura sono due caratteri per un byte) possono essere 0x698c670000000000 che dovranno essere invertiti 0x0000000000678c69 e convertiti in decimale 6786153. Quindi applicare la formula (6786153 * 8 * 512 ) o (6786153 * 4096) = 27796082688 (offset della MFT) + 3352 (offset UUID) = 27796086040. così nella partizione se passiamo al byte 27796086040 troveremo l'UUID della partizione su 16 byte che dovrà essere convertito in esadecimale e invertito per il primo 8.

Non c'è molto interesse nel modificare l'UUID di una partizione NTFS, Microsoft apparentemente non la usa, Mac OS X visualizza gli UUID delle partizioni. Non c'è molto commento sull'UUID delle partizioni NTFS. Ho creato un AppleScript [2] per leggere gli UUID NTFS o HFS. Gli unici UUID che modifico sono quelli di HFS, per iniziare con la scelta dell'UUID.

[1] : +3352 questo è per una partizione NTFS fisica, per una partizione di un VHD è +3320)

[2] : AppleScript per leggere UUID da una partizione NTFS. Tutti i comandi sudo devono essere completati per il tuo nome e password, altrimenti prova a rimuovere il sudo. Non ti consiglio di modificare l'UUID, non ci sono informazioni sul loro utilizzo. Ho lasciato l'inversione dei byte in un modo molto rudimentale. **

set hdd to {}
set dmg to do shell script "sudo ls /dev/disk**s** " & " | sed -e 's#[[:space:]]*$##;s#\/dev\/##;/^$/d'" user name "Your_Name" password "Your_Password" with administrator privileges
set doun to ""
set dor to ""
set uuidd to ""
set uuidd to {}

set hfsountfs to ""
set theVol1 to ""
set theVol to ""
set vhd to ""
set leplus to 0
set levhd to ""
set hd to {}
set _Result to the paragraphs of dmg
set n to 0
set n to count _Result
set j to 1
do shell script "echo " & n

repeat with i from 1 to n
    set end of hdd to item i of _Result

end repeat

set theVolumeTemp to (choose from list hdd with prompt "Choisissez le Volume (partition) NTFS :" with empty selection allowed)
if theVolumeTemp is not false then

    set theVolumeTemp to do shell script "echo " & theVolumeTemp
    set theVol to "/dev/" & theVolumeTemp
    set theVol1 to theVol
    set theVol to do shell script "echo " & theVol & " | xxd -p | sed 's#0a##' | xxd -r -p "
    try
        set vhd to do shell script "diskutil info " & theVol & " | grep 'Disk Image' "
    end try
    try

        set uuidd to do shell script "diskutil unmount " & theVol
    end try
    set uuidd to do shell script "sudo dd if=" & theVol & " iseek=48 bs=1 count=8  | xxd -p " user name "Your_Name" password "Your_Password" with administrator privileges

    set theVol to do shell script "echo " & uuidd
    set n to 0
    set n to count uuidd
    do shell script "echo " & n

    repeat with i from 1 to 8
        set les2 to (item (n - 1) of uuidd & item n of uuidd)
        set end of hd to les2
        set n to n - 2
    end repeat
    set hd to do shell script "echo " & hd

    set nDec to (do shell script "perl -e 'printf(hex(\"" & hd & "\"))'") as integer
    if vhd is not "" then
        set leplus to 3320
        set levhd to "c'est un Vhd ntfs"
    else
        set leplus to 3352
    end if

    set nDec to do shell script " echo $((" & nDec & " * 4096 + " & leplus & "))" as string
    set uuidd to do shell script "sudo dd if=" & theVol1 & " iseek=" & nDec & " bs=1 count=16 | xxd -p " user name "Your_Name" password "Your_Password" with administrator privileges

    set hd to {}
    set n to 8
    repeat with i from 1 to 4
        set les2 to (item (n - 1) of uuidd & item n of uuidd)
        set end of hd to les2
        set n to n - 2
    end repeat

    set end of hd to "-"

    set n to 12
    repeat with i from 1 to 2
        set les2 to (item (n - 1) of uuidd & item n of uuidd)
        set end of hd to les2
        set n to n - 2
    end repeat

    set end of hd to "-"

    set n to 16
    repeat with i from 1 to 2
        set les2 to (item (n - 1) of uuidd & item n of uuidd)
        set end of hd to les2
        set n to n - 2
    end repeat
    set end of hd to "-"

    repeat with i from 17 to 20
        set end of hd to item (i) of uuidd
    end repeat
    set end of hd to "-"
    repeat with i from 21 to 32
        set end of hd to item (i) of uuidd
    end repeat
    set hd to do shell script "echo " & hd


    set lamft to do shell script " echo $((" & nDec & " - " & leplus & "))" as string



    set doun to " Identifiant Universel Unique ou UUID du " & theVolumeTemp & " est : 
" & hd

    set doun to doun & "
 La MFT du " & theVolumeTemp & " est à  :  " & lamft & " Octets du départ de la partition " & "
 l'UUID se trouve  plus loin de " & leplus & " Octets " & "
" & levhd
    set uuiddd to do shell script "sudo dd if=" & theVol1 & " iseek=72 bs=1 count=8  | xxd -p " user name "Your_Name" password "Your_Password" with administrator privileges
    set n to 0
    set n to count uuiddd
    do shell script "echo " & n
    set uuiddd to do shell script "echo " & uuiddd & "  | tr [:lower:] [:upper:] "
    set hdd to {}
    set les2 to (item 15 of uuiddd & item 16 of uuiddd & item 13 of uuiddd & item 14 of uuiddd)
    set end of hdd to les2
    set end of hdd to "-"
    set les2 to (item 11 of uuiddd & item 12 of uuiddd & item 9 of uuiddd & item 10 of uuiddd)
    set end of hdd to les2
    set end of hdd to "-"
    set les2 to (item 7 of uuiddd & item 8 of uuiddd & item 5 of uuiddd & item 6 of uuiddd)
    set end of hdd to les2
    set end of hdd to "-"
    set les2 to (item 3 of uuiddd & item 4 of uuiddd & item 1 of uuiddd & item 2 of uuiddd)
    set end of hdd to les2

    set doun to doun & " Le numero de série des 8 Octets de l'offset 72 partition NTFS du " & theVolumeTemp & " est : 
" & uuiddd & "
 Toujours présenté sous cette forme : " & hdd
    display alert (doun as string)

    try
        do shell script "diskutil mount " & theVol1

    end try

end if
    
risposta data 08.03.2017 - 17:32
fonte
0

Ho avuto lo stesso problema. Ecco cosa dovevo fare dopo aver eseguito una copia byte per byte da un drive all'altro in Terminal. Questo mi ha lasciato un conflitto UUID come quello che avevi originariamente.

Ho avviato una delle unità Windows. Windows non è stato in grado di montare entrambe le unità, a causa del conflitto, ma utilizzando il prompt di cmd di Windows elevato ai privilegi di amministratore, sono stato in grado di visualizzare e modificare l'UUID dell'unità non montata per renderlo diverso dall'originale come descritto qui: link

CarbonCopyCloner potrebbe quindi funzionare per te. In caso contrario, è possibile eseguire l'avvio su OS X e utilizzare Utility Disco per farlo. Seleziona l'unità di backup e scegli il comando Ripristina. Ti permetterà di selezionare il tuo volume sorgente e copiarlo sul volume clone.

Se ciò non funziona perché è un volume NTFS, è necessario l'app NTFS Paragon di Paragon, che ho acquistato. Permette di leggere e scrivere NTFS da OS X e lo trovo indispensabile. Tuttavia, viene fornito con una prova gratuita di 7 giorni e la versione di prova dovrebbe funzionare per te. Installalo e quindi Utility Disco sarà in grado di eseguire l'operazione.

Un'altra cosa che ho trovato utile con l'utilità Paragon NTFS per Mac è che ti permetterà di aggiungere la tua unità clonata al menu Disco di avvio delle preferenze, per non parlare dell'aggiunta di un disco di ripristino di Windows alle Preferenze di avvio, se avere uno.

    
risposta data 12.10.2018 - 18:03
fonte
0

Precisione dell'offset UUID nella MFT di un volume NTFS, 3320 o 3352. La differenza deriva dall'origine della formattazione. Se si formatta un hdd o vhd da Microsoft Windows, l'offset per l'UUID nella MFT sarà 3352 byte dall'inizio della MFT. Se si formatta un volume o VHD da Mac OS X, con Diskutil l'offset dell'UUID sarà di 3320 byte dall'inizio della MFT. Tutto questo per un volume (o VHD) NTFS, ovviamente. Non ringrazio Glorfindel che ha solo cancellato nel testo "Ciao", che gli permette di visualizzare questa "faignasse" nel commento.

    
risposta data 01.04.2017 - 13:02
fonte

Leggi altre domande sui tag