¿Cómo puedo cambiar un UUID de volumen NTFS?

3

Acabo de actualizar mi Mac a Mac OS X El Capitan y quería actualizar mi Windows 7 a Windows 10. Pero, antes de eso, necesito hacer una copia de seguridad de mi partición de Windows.

Como lo he hecho antes, tengo una partición de Windows (NTFS) en un disco duro de copia de seguridad.

Lo importante es que quiero hacer una nueva copia de seguridad con Carbon Copy Cloner, pero me dice que no se puede hacer porque hay dos volúmenes con el mismo UUID.

De acuerdo, entonces, peleo con mi partición de respaldo de Windows para tener un UUID diferente al que obtuve para mi partición de Windows "local" ... ¡y estoy perdiendo la pelea!

Tengo esto cuando 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

... y tengo esto 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

Como puede ver, el "UUID de disco / partición" es diferente, pero no el "UUID de volumen".

¿Alguien tiene una solución para cambiar el "UUID de volumen"?

    
pregunta pierreonthenet 01.03.2016 - 23:23

5 respuestas

2

Por lo general, los volúmenes NTFS no contienen UUID. El UUID visible en diskutil se deriva del Número de serie del volumen NTFS.

Obtenga el identificador de disco de su disco de respaldo y el volumen:

diskutil list

Desmonte el disco externo:

diskutil umountDisk /dev/disk1

Copia el superbloque NTFS:

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

Cambia los bits mod:

sudo chmod 777 ~/Desktop/superblock 

Cree una copia de seguridad del superbloque (¡por si acaso!):

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

Modifique el archivo superblock con HexFiend :

El número de serie del volumen NTFS está resaltado en violeta (ocho bytes comenzando en el offset 72 o 0x48). Modificar al menos un byte. Después de guardar el archivo, compruebe el tamaño que aún debería tener 512 bytes.

Escribe el superbloque:

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

Reinicie su Mac y verifique el nuevo UUID de disk1s4.

    
respondido por el klanomath 02.03.2016 - 04:34
2

Simplemente puede cambiar UUID por el formato de partición / borrar.

1) Formatear el disco para Mac OS Extended usando la Utilidad de Disco incorporada

2) Si necesita la partición de Windows, formatee el disco a exFAT después de haber realizado el primer paso (por alguna razón necesita dos pasos para la partición de Windows)

Puede verificar si el UUID ha cambiado enumerando todos los números de UUID:

find /Volumes -maxdepth 1 -mindepth 1 -exec diskutil info {} \;
    
respondido por el Laimis Laimison 16.10.2016 - 17:19
2

En una partición NTFS, el UUID es aproximadamente 3352 bytes [1] desde el comienzo de la MFT, para encontrar el desplazamiento de la MFT es necesario leer los 8 bytes que comienzan a partir de los 48 Byte del comienzo de la partición, estos 8 bytes una vez convertidos darán el desplazamiento del sector donde comienza la MFT. Para obtener el desplazamiento de la MFT, los 8 bytes convertidos deben multiplicarse por la cantidad de bytes por sector (512) y la cantidad de sectores por agrupaciones (8) (8 y 512 son los valores predeterminados para una partición NTFS).

Por ejemplo, los 8 bytes que comienzan en el 48 (en la lectura es de dos caracteres por un byte) pueden ser 0x698c670000000000, que deberán invertirse 0x0000000000678c69 y convertirse al decimal 6786153. Luego aplique la fórmula (6786153 * 8 * 512 ) o (6786153 * 4096) = 27796082688 (desplazamiento de la MFT) + 3352 (desplazamiento UUID) = 27796086040. así que en la partición si nos movemos al byte 27796086040 encontraremos el UUID de la partición en 16 bytes que tendrá que ser convertido en hexadecimal e invertido durante los primeros 8.

No hay mucho interés en modificar el UUID de una partición NTFS, Microsoft aparentemente no lo usa, Mac OS X muestra los UUID de las particiones. No hay mucho comentario sobre el UUID de las particiones NTFS. He creado un [2] de AppleScript para leer los UUID de NTFS o HFS. Los únicos UUID que modifico son los del HFS, para comenzar con la elección del UUID.

[1] : +3352 esto es para una partición NTFS física, para una partición de un VHD es +3320)

[2] : AppleScript para leer UUID desde una partición NTFS. Todos los comandos de sudo deben completarse con su nombre y contraseña, de lo contrario, intente eliminar el sudo. No te aconsejo que modifiques el UUID, no hay información sobre su uso. Dejé la inversión de los bytes de una manera muy rudimentaria. **

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
    
respondido por el deek5 08.03.2017 - 17:32
0

Una precisión en el desplazamiento UUID en la MFT de un volumen NTFS, 3320 o 3352. La diferencia proviene del origen del formato. Si formatea un hdd o vhd desde Microsoft Windows, el desplazamiento para el UUID en la MFT será de 3352 bytes desde el comienzo de la MFT. Si formatea un volumen o vhd desde Mac OS X, con Diskutil el desplazamiento del UUID será de 3320 bytes desde el comienzo de la MFT. Todo esto para un volumen (o vhd) NTFS, por supuesto. No agradezco a Glorfindel que solo ha eliminado el texto "Hola", lo que le permite a este "faignasse" aparecer en el comentario.

    
respondido por el deek5 01.04.2017 - 13:02
0

Tuve el mismo problema. Esto es lo que tuve que hacer después de hacer una copia byte a byte de una unidad a otra en la Terminal. Eso me dejó con un conflicto UUID como el que tenías originalmente.

Arranqué a una de las unidades de Windows. Windows no pudo montar ambas unidades debido al conflicto, pero al usar el indicador de Windows cmd elevado a los privilegios de administrador, pude ver y cambiar el UUID de la unidad sin montar para hacerla diferente de la original como se describe aquí: enlace

CarbonCopyCloner puede trabajar para usted. De lo contrario, puede iniciar OS X y usar la Utilidad de Disco para hacerlo. Seleccione la unidad de copia de seguridad y elija el comando Restaurar. Le permitirá seleccionar su volumen de origen y copiarlo en el volumen de clonación.

Si eso no funciona porque es un volumen NTFS, necesitas la aplicación NTFS para Mac de Paragon, que compré. Permite tanto las lecturas como las escrituras de NTFS desde OS X, y me parece indispensable. Sin embargo, viene con una versión de prueba gratuita de 7 días, y la versión de prueba debería funcionar para usted. Instálelo, y luego la Utilidad de Discos podrá realizar la operación.

Otra cosa que he encontrado útil con la utilidad Paragon NTFS para Mac es que le permitirá agregar su unidad clonada al menú de Preferencias del Disco de Inicio, por no mencionar que también agregará un disco de Reparación de Windows a las Preferencias de Inicio si tener uno.

    
respondido por el Bob A. 12.10.2018 - 18:03

Lea otras preguntas en las etiquetas