Saya mencoba mencari solusi untuk mematikan semua VM tamu yang berjalan di bawah VirtualBox Windows dengan anggun ketika komputer host dimatikan atau dihidupkan ulang.
Tampaknya opsi paling aman adalah memicu perintah "save state" ketika tuan rumah mulai dimatikan, tetapi tidak jelas apakah tuan rumah akan menunggu cukup lama bagi VM untuk menyelesaikan keadaan simpan dan matikan.
Adakah yang punya solusi yang kuat untuk masalah ini (tampaknya mendasar)?
windows
virtualbox
virtual-machine
virtualization
shutdown
Matt Jenkins
sumber
sumber
Jawaban:
Saya memiliki masalah serupa dan menyelesaikannya dengan menjalankan VirtualBox sebagai layanan:
http://vboxvmservice.sourceforge.net/
Dengan VBoxVMService Anda dapat memilih bagaimana Anda ingin mesin dimatikan (Hemat status, matikan) dan mulai. Karena berjalan sebagai layanan, Windows akan secara otomatis menunggu hingga shutdown, selama proses shutdown sistem.
sumber
Sayangnya itu tampaknya tidak mungkin untuk VM mulai melalui VirtualBox GUI. Meskipun GUI mungkin menangkap peristiwa penutupan host dan bereaksi, layanan VirtualBox akan dihentikan: https://forums.virtualbox.org/viewtopic.php?p=278668#p278668
Jika Anda tidak memerlukan konsol grafis, VBoxHeadlessTray atau VBoxVMService mungkin merupakan cara yang tepat. Keduanya mendukung penyimpanan otomatis dan melanjutkan shutdown host Windows dan restart.
VirtualBox 5.0 memperkenalkan mode mulai "detachable UI" . Mode ini memulai VM tanpa kepala dengan proses UI yang terpisah. Performa grafisnya mengalami penurunan dan akselerasi 3D belum didukung. Tapi mungkin ini dapat dikombinasikan dengan VBoxHeadlessTray di masa depan (VBoxHeadlessTray belum mendukung 5.0.) Tautan ke repositori VBoxHeadlessTray GitHub dan ke permintaan tarik GitHub terkait untuk menambahkan dukungan VirtualBox 5 .
Sunting: VBoxVmService juga tidak mendukung mode yang dapat dilepas pada versi 5.0. Hanya tanpa kepala sejauh ini. Saya menambahkan permintaan fitur untuk itu.
sumber
Saya memiliki 3 skrip batch yang saya gunakan sebagai ganti tombol power startmenu.
do_shutdown.bat (shutdown pc dengan masa tunggu 10 detik, bukan untuk memberi vm waktu 10 detik untuk melakukan penyelamatan, tetapi untuk memungkinkan saya membatalkan penutupan dalam waktu 10 detik. Hitung mundur dimulai setelah vm ditutup)
do_reboot.bat (reboot segera setelah vm ditutup)
do_cancel.bat (memungkinkan saya untuk membatalkan pc-shutdown dalam waktu tunggu 10 detik. Kemudian me-restart vm lagi, karena mereka dimatikan dengan do_shutdown.bat)
Alih-alih
savestate
Anda juga dapat menggunakan salah satu dari yang berikut inisumber
Maaf saya terlambat ke pesta. Ada jawaban yang tepat untuk ini, meskipun membutuhkan beberapa commandline-foo. Lihat posting utas ini untuk informasi lebih lanjut: https://forums.virtualbox.org/viewtopic.php?f=6&t=53684#p285540
Perintah yang Anda cari adalah:
"C: \ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe" setextradata "VM NAME" GUI / DefaultCloseAction Shutdown
Ini yang saya gunakan pada banyak VM, tutup jendela dan dimatikan secara otomatis. Shutdown Windows, dan dalam upayanya untuk menutup semuanya, ia akan menunggu proses ini selesai.
sumber
Saya punya pertanyaan serupa dan menemukan halaman ini. Saya tidak ingin menjalankan VirtualBox sebagai layanan, karena saya memiliki banyak VM untuk pengujian, dan biasanya memilih yang berbeda untuk dijalankan di VirtualBox UI. Ketika saya mematikan komputer saya, itu mengganggu untuk secara manual menyimpan keadaan masing-masing VM. Menggunakan skrip untuk menyimpan semua VM yang berjalan tampaknya menjadi solusi praktis dalam kasus ini. Untuk membuat jawaban Daniel F lebih umum, saya menulis skrip-skrip ini yang secara otomatis menyimpan status semua VM yang berjalan tanpa menyebutkannya secara eksplisit.
saveRunningVMs.bat untuk Windows:
saveRunningVMs.sh untuk Linux:
sumber
Saya membuat skrip python yang akan menangguhkan semua menjalankan VirtualBox VMs, dan kemudian mengatur sistem untuk menjalankan skrip pada logout sebagai tugas yang dijadwalkan.
Saya tidak tahu seberapa andal metode ini. Seperti orang lain telah mencatat ada batasan untuk berapa lama sistem akan menunggu tugas Winlogon 7002 selesai. Tapi saya pribadi tidak punya masalah dengan itu memberikan negara menyimpan yang dapat digunakan bahkan dengan beberapa VM yang berjalan di 4+ GB dari keseluruhan VM RAM.
Berikut langkah-langkah untuk mengaturnya:
python.exe
, misalnyac:\Python27\python.exe
C:\Users\rakslice\Documents\vboxsuspend\vboxsuspend.py
Sekarang VirtualBox VMs harus ditangguhkan pada saat logout / restart / shutdown.
Skrip python untuk melakukan shutdown di bawah ini:
sumber