Saya memiliki mesin VirtualBox dengan Windows XP pada Host Windows XP.
Bagaimana saya bisa memulai VirtualBox sebagai layanan, jadi saya bisa mendapatkan mesin virtual di bawah tenda, dan saya tidak harus memulai VirtualBox untuk mengakses mesin virtual saya (melalui VNC dari jaringan)?
Saya menemukan bahwa VirtualBox Manage mungkin cara untuk pergi, tetapi karena saya pemula dengan ini, saya tidak tahu harus mulai dari mana.
Ada ide?
sumber
Perhatikan bahwa jawaban yang saat ini diterima (Molly7244) sebenarnya memulai VM ketika Anda login - bukan ketika Anda mem-boot mesin. Dengan kata lain, itu bukan layanan.
Untuk layanan aktual yang berjalan saat mesin melakukan boot, saya menggunakan dua skrip (asal dari sini ) bersamaan dengan cygwin (cygrunsrv). Memanfaatkan mode VBoxHeadless seperti yang disebutkan di tempat lain di halaman ini.
Script pertama menjalankan VM Anda melalui VBoxHeadless; itu mendapatkan nama VM yang tepat untuk dijalankan (dan info lainnya seperti direktori home VBOX Anda) dari variabel lingkungan. Skrip kedua menginstal layanan untuk VM tertentu (dengan menggunakan cygrunsrv untuk memanggil skrip pertama dengan env. Vars set yang tepat). Akhirnya ada file ketiga yang berisi fungsi-fungsi umum. Jika Anda memasukkan semua ini ke dalam direktori, Anda dapat menginstal vm baru seperti:
Dan kemudian mulai layanan dengan "net start vboxd-MyVMName" atau "cygrunsrv -S vboxd-MyVMName".
Berikut ini skrip yang menjalankan VM, "vboxd":
Dan inilah skrip penginstalnya, "vboxd-install":
Dan, akhirnya, inilah skrip ".libcommon" yang dirujuk oleh keduanya:
Solusi ini sangat bagus untuk saya; semoga Anda akan memiliki keberuntungan yang sama.
sumber
Sepertinya jawaban paling sederhana pada saat ini adalah VBoxVMService . Saya belum mencobanya, saya akan mencoba mengingat untuk datang ke sini dan memperbarui jawabannya jika / ketika saya lakukan.
sumber
Setuju pada VBoxVMService. Ini sangat mudah diatur dan tampaknya berfungsi dengan baik. Anda dapat menemukan cara mengaturnya di sini:
http://www.windows-noob.com/forums/index.php?/topic/4931-have-virtualbox-vms-start-as-a-service-on-a-windows-host/
**** EDIT **** Sesuai permintaan di bawah ini, ringkasan tautan. Meskipun solusinya bekerja untuk saya, kreditnya diberikan kepada Peter Upfold - http://peter.upfold.org.uk/
Ganti di VBOX_USER_HOME dengan folder .VirtualBox di direktori home pengguna yang benar, serta arahan RunAsUser dan UserPassword, dan tetapkan nama mesin virtual target di aplikasi VirtualBox di VmName. Anda juga dapat menambahkan bagian [Vmx] tambahan setelah [Vm0] dengan mesin virtual lain untuk memulai ketika mesin melakukan booting.
Ketika Anda puas dengan konfigurasi Anda, dari Command Prompt yang didukung Administrator, jalankan perintah berikut untuk menginstal layanan. Setelah layanan diinstal, Anda dapat menghapus kata sandi pengguna dari file INI, karena disimpan dalam konfigurasi Layanan:
Sekarang, Anda harus me-reboot komputer sebelum mencoba memulai layanan untuk pertama kalinya, atau ia tidak akan dapat menemukan VM.
Setelah reboot, layanan akan mulai (tunduk pada penundaan 'Otomatis (Mulai Tertunda)') dan VM Anda akan dimulai saat boot.
sumber
Hanya menawarkan ini sebagai opsi lain:
Gunakan perintah builtin Windows 'sc' untuk membuat layanan. Kombinasikan ini dengan 'vboxheadless' akan membawa Anda ke tempat yang Anda inginkan.
Belum diuji dengan vboxheadless secara khusus, tapi saya memang membuat layanan tes yang menjalankan calc.exe Anda harus melakukan sesuatu seperti ini:
sc create servicenamehere start= auto binPath= "C:\path\to\vboxheadless.exe --startvm name"
Lihat dokumentasi untuk sc untuk informasi lebih lanjut. Catatan: Ruang-ruang itu setelah tanda sama dengan disengaja.
sumber
Jika skrip vboxd memberi Anda banyak masalah seperti yang saya lakukan, Anda mungkin ingin mencoba ini; ini adalah solusi yang lebih sederhana, diimplementasikan dalam Perl, yang menyediakan fungsionalitas yang sama. Secara khusus, VM memulai dengan sistem (dengan asumsi layanan diatur untuk memulai secara otomatis, yang merupakan default), dan turun dengan bersih ketika layanan dihentikan.
Perbedaan utama dari solusi vboxd, selain menjadi jauh lebih mudah untuk ditangani dalam pengalaman saya, adalah bahwa skrip ini tidak meneruskan pengaturan port VRDE ke VBoxHeadless, dan bahwa penutupan VM ditangani melalui "acpipowerbutton" daripada "savestate" .
Jika ini tidak sesuai dengan tujuan Anda, cukup mudah untuk berubah; dalam kasus pertama, tambahkan '-e "TCP / Ports = [, port ...]"' ke string baris perintah VBoxHeadless ($ cmd), dan dalam kasus kedua, cukup ubah "acpipowerbutton" menjadi "savestate" di pengendali SIGTERM.
Berikut skrip Perl:
Dan inilah baris perintah cygrunsrv yang saya gunakan untuk menginstal layanan Windows:
Dari sana, seharusnya hanya masalah mengeluarkan 'sc start <service-name>', dan Anda harus melakukannya dengan baik - ingat bahwa, secara default, layanan cygrunsrv masuk ke / var / log / <service-name> .log, jadi jika ada yang tidak pantas, itulah tempat pertama untuk mencari alasan mengapa.
Satu hal yang perlu diingat adalah bahwa, ketika Anda menjalankan VM dengan cara ini, itu akan berjalan di bawah akun SISTEM bawaan, bukan milik Anda. Karena itu, Anda tidak akan dapat mengelola VM melalui konsol VirtualBox saat sedang berjalan sebagai layanan; itu akan tampak dalam keadaan "dimatikan", dan Anda tidak akan bisa mendapatkan pengaturannya. (Mencoba untuk menyalakan VM saat sedang berjalan sebagai layanan tidak dianjurkan - Saya tidak tahu apa yang akan terjadi, tetapi yang terbaik itu akan menjadi no-op, dan paling buruk itu akan menyemprotkan VM Anda.) Jika Anda perlu mengubah pengaturan VM atau mengakses konsol, hentikan layanan terlebih dahulu (dan tunggu VBoxHeadless.exe untuk keluar), lalu konfigurasikan / nyalakan di konsol VirtualBox seperti biasanya.
Anda mungkin dapat mengatasi masalah ini dengan menginstal layanan interaktif kedua untuk menjalankan konsol VirtualBox; karena itu akan menjalankan konsol di bawah akun SISTEM juga, itu kemungkinan besar akan dapat melihat dan mengelola VM yang berjalan. Saya belum memiliki kebutuhan untuk melakukan itu sendiri, jadi saya tidak yakin itu akan berhasil, tetapi saya tidak melihat alasan mengapa itu tidak berhasil. (Jika Anda mencobanya, saya akan menghargai komentar untuk jawaban ini, membiarkan saya tahu bagaimana cara kerjanya untuk Anda. Terima kasih!)
Semoga ini membantu!
sumber
vboxd-install
berguna karena dengan mudah menyembunyikan detail argumen cygrunsrv. Saya setuju, meskipun, ituacpipowerbutton
adalah pilihan "berhenti" yang lebih baik daripadasavestate
.