Bagaimana cara mengubah UUID dari disk virtual?

131

Saya mencoba membuat mesin virtual baru dengan Oracle VirtualBox, menggunakan hard disk yang sudah ada. Ketika saya mencoba untuk memilih file hard disk yang ada, file .vhd, ini menampilkan kesalahan yang mengatakan hard disk virtual tidak dapat digunakan karena UUID sudah ada.

Jadi saya mencoba perintah berikut untuk mengubah UUID-nya.

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

Saya mendapatkan kesalahan ini.

Kesalahan sintaksis: Parameter UUID tidak valid

Bagaimana saya bisa menyelesaikan ini?

CJAY
sumber
1
Path yang memiliki karakter spasi harus dilampirkan dalam tanda kutip ganda, seperti yang sudah Anda temukan.
AB

Jawaban:

171

Perintah yang benar adalah yang berikut.

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

Path untuk disk virtual berisi spasi, sehingga harus dilampirkan dalam tanda kutip ganda untuk menghindarinya diuraikan sebagai dua parameter.

CJAY
sumber
25
Saya benar-benar berharap VirtualBox akan memiliki beberapa UI atau jendela yang memungkinkan kita untuk mengubah ini
fedmich
1
Ini perlu dikutip karena ruang di filepath.
Chris Stryczynski
Alangkah baiknya jika VirtualBox UI memberi opsi untuk menghasilkan UUID baru ketika Anda mencoba membuka disk yang sudah dikenal. Jujur saya tidak benar-benar menggunakan disk manager untuk apa pun, saya lebih suka VirtualBox hanya memperlakukan disk virtual sebagai path file daripada mencoba memperlakukan mereka seperti sumber daya untuk mengelola dan melacak.
jrh
34

Berikut ini bekerja untuk saya:

  1. jalankan perintah internal VBoxManage sethduuid "file VDI / VMDK" dua kali (pertama kali hanya untuk menghasilkan UUID, Anda bisa menggunakan metode pembuatan UUID lainnya)

  2. buka file .vbox di editor teks

  3. ganti UUID yang ditemukan di Mesin uuid = "{...}" dengan UUID yang Anda dapatkan saat menjalankan sethduuid pertama kali

  4. ganti UUID yang ditemukan di HardDisk uuid = "{...}" dan di Image uuid = "{}" (menjelang akhir) dengan UUID yang Anda dapatkan saat menjalankan sethduuid kedua kalinya

borchvm
sumber
1
Saya pikir jawaban ini lebih bermanfaat bagi siapa pun (termasuk saya) yang ingin menyalin mesin virtual.
cbuchart
1
Hanya ingin tahu - mengapa Anda perlu mengubah Mesin uuid? Jika saya hanya ingin menyalin disk vmdk dari satu mesin ke komputer lain, saya tidak membutuhkannya, bukan?
Oleg Gryb
1
Anda perlu mengubah Mesin uuid jika Anda menyalin disk virtual pada mesin yang sama
borchvm
1
Bekerja sempurna dalam kasus saya - terima kasih! Saya tidak perlu menyesuaikan UUID Mesin.
Benco
1
@FabrizioBertoglio semoga Anda memiliki jawaban Anda - tetapi Anda harus menghentikan layanan vbox dalam bentuk apa pun untuk mengedit file-file tersebut - jika tidak, Anda akan mendapatkan ole yang sama. Pastikan juga UUID Anda untuk SATA HardDisk <perangkat terlampir> di bagian bawah file konfigurasi cocok dengan UUID untuk Hard Disk di bagian HardDrive di bagian atas file konfigurasi. Sebelum Anda melakukan semua ini, Anda juga ingin menambahkan <Hardware UUID = myMachineUUID> Anda.
Ken
12

Jika Anda telah menyalin disk (file vmdk) dari satu komputer ke komputer lain dan perlu mengubah UUID disk dalam salinan, Anda tidak perlu mengubah UUID Mesin seperti yang disarankan oleh jawaban lain.

Yang perlu Anda lakukan adalah menetapkan UUID baru ke disk image:

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

dan kemudian ganti UUID lama dengan yang baru dibuat di dua tempat di file * .vbox Anda

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

dan masuk

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

Ini bekerja untuk saya untuk VirtualBox ver. 5.1.8 berjalan pada Mac OS X El Capitan.

Oleg Gryb
sumber
Kamu mungkin benar. Saya mengikuti instruksi Anda dan saya masih memiliki kesalahan. Permintaan UUID Gagal, bahkan jika Hard Disk muncul dengan benar baik pada file -> Virtual Media Managerdan pada Pengaturan Mesin dengan UUID yang benar
Fabrizio Bertoglio
Saya tidak yakin apa kasus Anda. Apa yang saya jelaskan di atas adalah persis apa yang saya lakukan dan itu bekerja untuk saya di Mac dengan VB 5.1.8
Oleg Gryb
Saya telah memecahkan masalah dengan langkah-langkah berikut: 1. re-installing virtual box using synaptic package managerkemudian 2. In the virtual box machine configuration, I did not disable the Floppy disk and EFI Setting. I kept them enabled.Masalah diperbaiki.
Fabrizio Bertoglio
@ OlegGryb Mungkin tergantung pada OS Host dan juga OS Tamu.
Ken
11

Meskipun Anda telah memecahkan masalah, saya hanya memposting alasan di sini untuk beberapa orang lain dengan masalah yang sama.

Alasannya adalah ada ruang di jalur Anda (nama direktori VirtualBox VMs) yang akan memisahkan perintah. Jadi kesalahan muncul.

Java Xu
sumber
11

Saya telah mencari jawaban untuk MAC OS di web, jadi .. solusinya adalah

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

VBoxManage internalcommands sethduuid "full/path/to/vdi"
al3x2ndru
sumber
1
Sangat membantu !!
Addo Solutions
6

Perintah gagal karena memiliki ruang di salah satu nama folder, yaitu 'VirtualBox VMs.

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

Jika tidak ada ruang pada nama folder atau nama file, maka perintah akan bekerja bahkan tanpa mengutipnya, misalnya setelah mengubah 'VirtualBox VMs' menjadi 'VBoxVMs'

VBoxManage internalcommands sethduuid /home/user/VBoxVMs/drupal/drupal.vhd
januarvs
sumber
4

Meskipun pertanyaan yang diajukan sudah lama, perhatikan bahwa mengubah UUID pada HDD virtual dalam sistem windows akan membuat windows memperlakukannya sebagai mesin yang tidak diaktifkan (karena pemberitahuan perubahan disk) dan akan meminta reaktivasi!

aniston
sumber
4

Solusi yang sama dengan @ Al3x untuk Windows x64, di cmd.exe:

cd %programfiles%\Oracle\VirtualBox

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

Ini mengacak UUID disk. Pro tip: Klik kanan file .vdi sambil menahan shift dan pilih "Copy as path" untuk mendapatkan "full/path/to/.vdi"dan mengaktifkan edit cepat di cmd.exe, lalu klik kanan untuk menempel.

masterxilo
sumber
2

Alternatif lain untuk solusi orisinal Anda adalah menggunakan karakter pelarian \sebelum ruang:

VBoxManage internalcommands sethduuid /home/user/VirtualBox\ VMs/drupal/drupal.vhd
Whitaker
sumber