ฉันจะเปลี่ยน UUID Volume NTFS ได้อย่างไร


3

ฉันเพิ่งอัพเกรด Mac เป็น Mac OS X El Capitan และฉันต้องการอัปเดต Windows 7 ของฉันเป็น Windows 10 แต่ก่อนหน้านั้นฉันต้องสำรองข้อมูลพาร์ติชัน Windows ของฉัน

อย่างที่ฉันเคยทำมาก่อนฉันมีพาร์ติชัน Windows (NTFS) บน HDD สำรอง

สิ่งคือฉันต้องการสำรองข้อมูลใหม่ด้วย Carbon Copy Cloner แต่มันบอกฉันว่ามันไม่สามารถทำได้เพราะมีสองเล่มที่มี UUID เดียวกัน

ตกลงแล้วฉันต่อสู้กับพาร์ติชันสำรองข้อมูล Windows ของฉันเพื่อให้เป็น UUID ที่แตกต่างจากที่ฉันได้รับสำหรับพาร์ติชัน Windows "ท้องถิ่น" ของฉัน ... และฉันก็แพ้การต่อสู้!

ฉันมีสิ่งนี้เมื่อใช้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

... และฉันใช้สิ่งนี้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

อย่างที่คุณเห็น "Disk / Partition UUID" นั้นแตกต่างกัน แต่ไม่ใช่ "Volume UUID"

ไม่มีใครมีวิธีแก้ไข "Volume UUID" หรือไม่


1
สิ่งนี้ดูเหมือนจะซ้ำกับโพสต์นี้: superuser.com/questions/344706/ …
Allan

@Allan นี้ไม่ซ้ำกัน! คำถาม / คำตอบที่เชื่อมโยงจะใช้กับปริมาณ hfs / hfs + เท่านั้น ในคำถามที่นี่ปริมาณมีระบบไฟล์ ntfs
klanomath

ฉันใช้ NTFS-3G เพื่อให้สามารถเข้าถึง RW บนพาร์ติชัน NTFS ของฉัน
pierreonthenet

คำตอบ:


2

โดยปกติแล้วปริมาณ NTFS จะไม่มี UUID UUID ที่มองเห็นได้ในdiskutilนั้นได้มาจาก NTFS Volume Serial Number

รับตัวระบุดิสก์ของดิสก์สำรองของคุณและโวลุ่ม:

diskutil list

ถอนติดตั้งดิสก์ภายนอก:

diskutil umountDisk /dev/disk1

คัดลอก superblock ของ NTFS:

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

เปลี่ยน mod mod:

sudo chmod 777 ~/Desktop/superblock 

สร้างการสำรองข้อมูลของ superblock (ในกรณี!):

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

แก้ไขไฟล์superblockด้วยHexFiend :

Hexblock superblock

หมายเลขซีเรียลวอลุ่มของ NTFS จะถูกเน้นเป็นสีม่วง (แปดไบต์เริ่มต้นที่ออฟเซ็ต 72 หรือ 0x48) แก้ไขอย่างน้อยหนึ่งไบต์ หลังจากบันทึกไฟล์แล้วให้ตรวจสอบขนาดซึ่งควรมีขนาด 512 ไบต์

เขียน superblock กลับ:

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

รีบูต Mac ของคุณและตรวจสอบ UUID ใหม่ของ disk1s4


ขอขอบคุณสำหรับการตอบสนองของคุณ ! ฉันทำทั้งหมดแล้วยกเว้นการรีบูต: มันสำคัญไหมที่จะต้องรีบูทคอมพิวเตอร์เพราะฉันยกเลิกการเชื่อมต่อ / เชื่อมต่อ HDD ภายนอกหลังจากเปลี่ยนหมายเลขประจำเครื่อง NTFS หรือไม่
pierreonthenet

@pierreonthenet มันเหมาะกับคุณไหม?
klanomath

ขออภัยฉันต้องการเพิ่มบรรทัดใหม่และความคิดเห็นถูกส่งก่อนที่ฉันจะเสร็จสิ้น ... ดังนั้นไม่ตอนนี้มันไม่ทำงาน ฉันจะลองหลังจากรีบูตเครื่อง mac เมื่อฉันจะกลับบ้าน
pierreonthenet

ตกลงมันแปลก! ฉันเพิ่งทำตามที่คุณบอกที่นี่ (และนี่คือสิ่งที่ฉันทำไว้ก่อนหน้านี้) แต่ "Disk / Partition UUID" ไม่เปลี่ยนแปลง! ฉันสามารถบอกได้ว่ามันเปลี่ยนไปเป็น "sudo dd if = / dev / disk1s4 ของ = ~ / Desktop / superblock2 bs = 512 count = 1" ให้สิ่งที่ฉันมีใน "superblock" ที่แก้ไขแล้ว ฉันคิดว่าเนื่องจาก UUID ของ Partition ไม่เหมือนกันใน disk0s2 และ disk1s4 ของฉันการเปลี่ยนแปลงจึงเกิดขึ้น แต่ดูเหมือนว่าจะไม่ คุณแน่ใจหรือไม่ว่าสิ่งที่คุณมอบให้ที่นี่ใช้ได้สำหรับคุณ?
pierreonthenet

2

คุณสามารถเปลี่ยน UUID โดยการจัดรูปแบบ / ลบพาร์ติชัน

1) ฟอร์แมตดิสก์เป็น Mac OS Extended โดยใช้ Disk Utility ในตัว

2) ถ้าคุณต้องการพาร์ติชัน windows ให้ฟอร์แมตดิสก์เป็น exFAT หลังจากทำขั้นตอนแรกแล้ว (ด้วยเหตุผลบางอย่างที่คุณต้องการสองขั้นตอนสำหรับพาร์ติชัน Windows)

คุณสามารถตรวจสอบว่า UUID มีการเปลี่ยนแปลงโดยการแสดงหมายเลข UUID ทั้งหมด:

find /Volumes -maxdepth 1 -mindepth 1 -exec diskutil info {} \;

2

บนพาร์ติชัน NTFS UUID อยู่ที่ประมาณ 3352 ไบต์[1]ตั้งแต่ต้น MFT เพื่อค้นหาออฟเซ็ตของ MFT จำเป็นต้องอ่าน 8 ไบต์ซึ่งเริ่มต้นจาก 48 ไบต์ของจุดเริ่มต้นของพาร์ติชัน 8 เหล่านี้ ไบต์ที่ถูกแปลงครั้งเดียวจะให้ออฟเซ็ตของเซกเตอร์ที่ MFT เริ่มต้น ในการรับออฟเซ็ตของ MFT นั้น 8 ไบต์ที่ถูกแปลงจะต้องคูณด้วยจำนวนไบต์ต่อเซกเตอร์ (512) และจำนวนเซ็กเตอร์ต่อคลัสเตอร์ (8) (8) (8 และ 512 เป็นค่าเริ่มต้นสำหรับพาร์ติชัน NTFS)

ตัวอย่างเช่น 8 ไบต์เริ่มต้นที่ 48 (ในการอ่านมันคือสองตัวอักษรต่อหนึ่งไบต์) อาจเป็น 0x698c670000000000 ซึ่งจะต้องมีการคว่ำ 0x0000000000678c69 และแปลงเป็นทศนิยม 6786153 แล้วใช้สูตร (6786153 * 8 * 512) หรือ ( 6786153 * 4096) = 27796082688 (ออฟเซ็ตของ MFT) + 3352 (UUID offset) = 27796086040 ดังนั้นในพาร์ติชั่นถ้าเราย้ายไปที่ไบต์ 27796086040 เราจะพบ UUID ของพาร์ติชั่น 16 ไบต์ซึ่งจะต้องถูกแปลงเป็นเลขฐานสิบหก และกลับด้านสำหรับ 8 ตัวแรก

ไม่มีความสนใจในการปรับเปลี่ยน UUID ของพาร์ติชั่น NTFS, Microsoft ดูเหมือนจะไม่ใช้มัน, Mac OS X จะแสดง UUID ของพาร์ติชั่น มีความคิดเห็นไม่มากใน UUID ของพาร์ติชัน NTFS ฉันได้สร้าง AppleScript [2]เพื่ออ่าน NTFS หรือ HFS UUID แล้ว UUID เท่านั้นที่ฉันแก้ไขคือ HFS เพื่อเริ่มต้นด้วยตัวเลือกของ UUID

[1] : +3352 สำหรับพาร์ติชั่น NTFS จริง, สำหรับพาร์ติชั่น VHD +3320)

[2] : AppleScript เพื่ออ่าน UUID จากพาร์ติชัน NTFS คำสั่ง sudo ทั้งหมดจะต้องกรอกชื่อและรหัสผ่านของคุณมิฉะนั้นให้ลองลบ sudo ฉันไม่แนะนำให้คุณแก้ไข UUID ไม่มีข้อมูลการใช้งาน ฉันออกจากการผกผันของไบต์ด้วยวิธีพื้นฐานมาก **

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

0

ความแม่นยำของ UUID ออฟเซ็ตใน MFT ของวอลุ่ม NTFS, 3320 หรือ 3352 ความแตกต่างมาจากต้นกำเนิดของการจัดรูปแบบ หากคุณจัดรูปแบบ hdd หรือ vhd จาก Microsoft Windows ออฟเซ็ตสำหรับ UUID ใน MFT จะเป็น 3352 ไบต์จากจุดเริ่มต้นของ MFT หากคุณฟอร์แมตวอลุ่มหรือ vhd จาก Mac OS X ด้วย Diskutil ออฟเซ็ตของ UUID จะเป็น 3320 ไบต์จากจุดเริ่มต้นของ MFT ทั้งหมดนี้สำหรับไดรฟ์ข้อมูล (หรือ vhd) NTFS แน่นอน ฉันไม่ขอบคุณกลอร์ฟินเดลที่ลบในข้อความ "สวัสดี" เท่านั้นซึ่งอนุญาตให้เขา "faignasse" นี้ปรากฏในความคิดเห็น


0

ผมมีปัญหาเหมือนกัน. นี่คือสิ่งที่ฉันต้องทำหลังจากทำสำเนาไบต์ต่อไบต์จากไดรฟ์หนึ่งไปอีกอันหนึ่งในเทอร์มินัล ที่ทิ้งฉันไว้กับความขัดแย้ง UUID เช่นเดียวกับที่คุณมีในตอนแรก

ฉันบูทจากไดรฟ์ Windows ตัวใดตัวหนึ่ง Windows ไม่สามารถเมานต์ไดรฟ์ทั้งสองเนื่องจากความขัดแย้ง แต่ด้วยการใช้ windows cmd prompt เพื่อยกระดับสิทธิ์ผู้ดูแลระบบฉันสามารถดูและเปลี่ยน UUID ของไดรฟ์ที่ไม่ได้ประกอบเข้าไปเพื่อทำให้แตกต่างจากของเดิมตามที่อธิบายไว้ที่นี่: http: //support.altaro.com/customer/portal/articles/1115503-how-can-i-change-the-disk-id-of-a-drive-

CarbonCopyCloner อาจทำงานให้คุณ หากไม่เป็นเช่นนั้นคุณสามารถบูตไปที่ OS X และใช้ Disk Utility เพื่อทำ เลือกไดรฟ์สำรองและเลือกคำสั่งเรียกคืน มันจะให้คุณเลือกวอลลุ่มของต้นฉบับและคัดลอกไปยังโวลุ่มโคลน

หากไม่ได้ผลเพราะเป็นโวลุ่ม NTFS คุณต้องใช้แอพ NTFS สำหรับ Mac ของ Paragon ซึ่งฉันซื้อ มันช่วยให้ทั้งการอ่านและเขียนของ NTFS จากใน OS X และฉันคิดว่ามันขาดไม่ได้ อย่างไรก็ตามมาพร้อมกับรุ่นทดลองใช้ฟรี 7 วันและเวอร์ชั่นทดลองใช้งานจะเหมาะกับคุณ ติดตั้งจากนั้น Disk Utility จะสามารถทำการดำเนินการได้

อีกสิ่งหนึ่งที่ฉันพบว่ามีประโยชน์กับยูทิลิตี้ Paragon NTFS สำหรับ Mac คือมันจะช่วยให้คุณเพิ่มไดรฟ์ที่โคลนไปยังเมนู Preferences Startup Disk ไม่ต้องพูดถึงนอกจากนี้ยังเพิ่มดิสก์ Windows Repair ในการตั้งค่า Startup หากคุณมี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.