ฉันจะเปลี่ยน UUID ของดิสก์เสมือนได้อย่างไร


131

ฉันกำลังพยายามสร้างเครื่องเสมือนใหม่ด้วย Oracle VirtualBox โดยใช้ฮาร์ดดิสก์ที่มีอยู่แล้ว เมื่อฉันพยายามเลือกไฟล์ฮาร์ดดิสก์ที่มีอยู่เป็นไฟล์. vhd มันแสดงข้อผิดพลาดว่าไม่สามารถใช้ฮาร์ดดิสก์เสมือนได้เนื่องจากมี UUID อยู่แล้ว

ดังนั้นฉันจึงลองคำสั่งต่อไปนี้เพื่อเปลี่ยน UUID

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

ฉันได้รับข้อผิดพลาดนี้

ข้อผิดพลาดของไวยากรณ์: พารามิเตอร์ UUID ไม่ถูกต้อง

ฉันจะแก้ไขปัญหานี้ได้อย่างไร


1
เส้นทางที่มีอักขระเว้นวรรคควรอยู่ในเครื่องหมายคำพูดคู่ตามที่คุณได้ค้นพบแล้ว
AB

คำตอบ:


171

คำสั่งที่ถูกต้องคือคำสั่งต่อไปนี้

VBoxManage internalcommands sethduuid "/home/user/VirtualBox VMs/drupal/drupal.vhd"

พา ธ สำหรับดิสก์เสมือนมีช่องว่างดังนั้นจึงต้องใส่เครื่องหมายอัญประกาศคู่เพื่อหลีกเลี่ยงไม่ให้ถูกแยกวิเคราะห์เป็นสองพารามิเตอร์


25
ฉันหวังว่า VirtualBox จะมี UI หรือหน้าต่างที่อนุญาตให้เราเปลี่ยนสิ่งนี้
fedmich

1
สิ่งนี้จะต้องถูกยกมาเนื่องจากพื้นที่ใน filepath
Chris Stryczynski

คงจะดีถ้า UI ของ VirtualBox ให้ตัวเลือกในการสร้าง UUID ใหม่เมื่อคุณพยายามเปิดดิสก์ที่เป็นที่รู้จักอยู่แล้ว ตามจริงแล้วฉันไม่ได้ใช้ตัวจัดการดิสก์เพื่ออะไรเลยฉันอยากให้ VirtualBox แค่ถือว่าดิสก์เสมือนเป็นเส้นทางไฟล์แทนที่จะพยายามปฏิบัติต่อพวกเขาเหมือนทรัพยากรในการจัดการและติดตาม
jrh

34

สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน:

  1. เรียกใช้VBoxManage internalcommands sethduuid "ไฟล์ VDI / VMDK"สองครั้ง (ครั้งแรกเพียงเพื่อสร้าง UUID อย่างสะดวกคุณสามารถใช้วิธีการสร้าง UUID อื่น ๆ แทนได้)

  2. เปิดไฟล์. vbox ในโปรแกรมแก้ไขข้อความ

  3. แทนที่ UUID ที่พบในMachine uuid = "{... }"ด้วย UUID ที่คุณได้รับเมื่อคุณเรียกใช้ sethduuid ในครั้งแรก

  4. แทนที่ UUID ที่พบในHardDisk uuid = "{... }"และในImage uuid = "{}" (ต่อท้าย) ด้วย UUID ที่คุณได้รับเมื่อคุณเรียกใช้ sethduuid ครั้งที่สอง


1
ฉันคิดว่าคำตอบนี้มีประโยชน์มากกว่าสำหรับทุกคน (รวมถึงฉัน) ที่ต้องการคัดลอกเครื่องเสมือน
cbuchart

1
แค่สงสัย - ทำไมถึงต้องเปลี่ยน Machine uuid? ถ้าฉันแค่ต้องการคัดลอกดิสก์ vmdk จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งฉันไม่ต้องการมันใช่ไหม
Oleg Gryb

1
คุณต้องเปลี่ยน uuid ของเครื่องหากคุณคัดลอกดิสก์เสมือนบนเครื่องเดียวกัน
borchvm

1
ทำงานได้อย่างสมบูรณ์แบบในกรณีของฉัน - ขอบคุณ! ฉันไม่จำเป็นต้องปรับ UUID ของเครื่อง
Benco

1
@FabrizioBertoglio หวังว่าคุณจะมีคำตอบ - แต่คุณต้องหยุดบริการ vbox ทุกชนิดเพื่อแก้ไขไฟล์เหล่านั้น - มิฉะนั้นคุณจะได้รับ ole เดียวกัน ตรวจสอบให้แน่ใจว่า UUID ของคุณสำหรับ SATA HardDisk <อุปกรณ์ที่เชื่อมต่อ> ที่ด้านล่างของไฟล์ config ตรงกับ UUID สำหรับฮาร์ดดิสก์ในส่วน HardDrive ที่ด้านบนของไฟล์กำหนดค่า ก่อนที่คุณจะดำเนินการใด ๆ แม้ว่าคุณจะต้องการเพิ่ม <Hardware UUID = myMachineUUID> ของคุณด้วย
Ken

12

หากคุณคัดลอกดิสก์ (ไฟล์ vmdk) จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งและจำเป็นต้องเปลี่ยน UUID ของดิสก์ในสำเนาคุณไม่จำเป็นต้องเปลี่ยน UUID ของเครื่องตามที่คำตอบอื่นแนะนำ

สิ่งที่คุณต้องทำคือกำหนด UUID ใหม่ให้กับดิสก์อิมเมจ:

VBoxManage internalcommands sethduuid your-box-disk2.vmdk
UUID changed to: 5d34479f-5597-4b78-a1fa-94e200d16bbb

จากนั้นแทนที่ UUID เก่าด้วยหนึ่งในสองตำแหน่งที่สร้างขึ้นใหม่ในไฟล์ * .vbox ของคุณ

<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}" location="box-disk2.vmdk" format="VMDK" type="Normal"/>
  </HardDisks>

และใน

    <AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
      <Image uuid="{5d34479f-5597-4b78-a1fa-94e200d16bbb}"/>
    </AttachedDevice>

มันใช้งานได้สำหรับฉันสำหรับ VirtualBox ver. 5.1.8 ทำงานบน Mac OS X El Capitan


คุณน่าจะใช่ ฉันทำตามคำแนะนำของคุณและฉันยังคงพบข้อผิดพลาดในการค้นหา UUID ล้มเหลวแม้ว่าฮาร์ดดิสก์จะแสดงอย่างถูกต้องทั้งในfile -> Virtual Media Managerและบนการตั้งค่าเครื่องด้วย UUID ที่ถูกต้อง
Fabrizio Bertoglio

ฉันไม่แน่ใจว่ากรณีของคุณคืออะไร สิ่งที่ฉันได้อธิบายไว้ข้างต้นคือสิ่งที่ฉันทำและมันใช้ได้กับฉันบน Mac ด้วย VB
5.1.8

ฉันได้แก้ไขปัญหาตามขั้นตอนต่อไปนี้1. re-installing virtual box using synaptic package managerแล้ว2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.ปัญหาได้รับการแก้ไขแล้ว
Fabrizio Bertoglio

@OlegGryb อาจขึ้นอยู่กับ Host OS และ Guest OS ด้วย
Ken

11

แม้ว่าคุณจะแก้ปัญหาได้แล้ว แต่ฉันก็โพสต์เหตุผลที่นี่สำหรับคนอื่น ๆ ที่มีปัญหาคล้ายกัน

เหตุผลคือมีช่องว่างในเส้นทางของคุณ (ชื่อไดเรกทอรีVirtualBox VMs) ซึ่งจะแยกคำสั่ง ดังนั้นข้อผิดพลาดจึงปรากฏขึ้น


11

ฉันได้ค้นหาเว็บเพื่อหาคำตอบเกี่ยวกับ MAC OS ดังนั้น .. วิธีแก้ปัญหาคือ

cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/

VBoxManage internalcommands sethduuid "full/path/to/vdi"

1
เป็นประโยชน์สุด ๆ !!
Addo Solutions

6

คำสั่งล้มเหลวเนื่องจากมีพื้นที่ว่างในชื่อโฟลเดอร์อย่างใดอย่างหนึ่งนั่นคือ 'VirtualBox VMs

VBoxManage internalcommands sethduuid /home/user/VirtualBox VMs/drupal/drupal.vhd

หากไม่มีที่ว่างที่ชื่อโฟลเดอร์หรือชื่อไฟล์คำสั่งจะทำงานได้โดยไม่ต้องอ้างถึงเช่นหลังจากเปลี่ยน 'VirtualBox VMs' เป็น 'VBoxVMs'

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd

4

แม้ว่าคำถามที่ถามนี้จะเก่า แต่โปรดทราบว่าการเปลี่ยน UUID บน HDD เสมือนในระบบ windows จะทำให้ windows ถือว่าเป็นเครื่องที่ไม่ได้เปิดใช้งาน (เนื่องจากสังเกตเห็นการเปลี่ยนแปลงของดิสก์) และจะขอให้เปิดใช้งานใหม่!


4

โซลูชันเดียวกับ @ Al3x สำหรับ Windows x64 ในcmd.exe:

cd %programfiles%\Oracle\VirtualBox

VBoxManage internalcommands sethduuid "full/path/to/.vdi"

นี่เป็นการสุ่ม UUID ของดิสก์ เคล็ดลับสำหรับมือโปร: คลิกขวาที่ไฟล์. vdi ในขณะที่กด shift ค้างไว้แล้วเลือก "คัดลอกเป็นเส้นทาง" เพื่อรับ"full/path/to/.vdi"และเปิดใช้งานการแก้ไขด่วนใน cmd.exe จากนั้นคลิกขวาเพื่อวาง


2

อีกทางเลือกหนึ่งสำหรับโซลูชันดั้งเดิมของคุณคือการใช้อักขระหลีก\ก่อนเว้นวรรค:

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