Bagaimana cara memulai mesin box Virtual secara otomatis saat boot?

53

Saya memiliki banyak mesin kotak Virtual di Ubuntu12.04 saya, setiap kali saya mematikan atau mem-boot ulang, saya harus memulainya satu per satu.

Saya ingin bantuan dalam menulis skrip untuk secara otomatis menjalankan ulang mesin VBox saat booting.

Maythux
sumber
Kemungkinan duplikat dari Bagaimana cara memulai aplikasi secara otomatis saat login?
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy Pertanyaan ini bukan duplikat dari itu, dengan cara apa pun.
Muhammad bin Yusrat

Jawaban:

51

Anda dapat menggunakan layanan Mulai Otomatis VirtualBox. Sebuah tutorial yang bagus yang menjelaskan bagaimana melakukan ini diposting di blog "Life of a Geek Admin" .

Langkah-langkah berikut diadaptasi dari posting blog yang ditautkan:

  1. Pertama, Anda perlu membuat file /etc/default/virtualboxdan menambahkan beberapa variabel.

    VBOXAUTOSTART_DB yang berisi jalur absolut ke direktori basis data autostart dan
    VBOXAUTOSTART_CONFIG yang berisi lokasi pengaturan konfigurasi autostart. File akan terlihat mirip dengan ini:

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
  2. Sekarang kita perlu membuat /etc/vbox/vbox.cfgfile dan menambahkan

    # Default policy is to deny starting a VM, the other option is "allow".
    default_policy = deny
    # Create an entry for each user allowed to run autostart
    myuserid = {
    allow = true
    }

    Catatan: Jika nama file vbox.cfgtidak berfungsi di atas, coba beri nama autostart.cfg.

    Jika Anda adalah satu-satunya pengguna Anda bisa menambahkan baris default_policy = allowke vbox.cfgfile.

  3. Tetapkan izin pada direktori ke grup vboxuser dan pastikan pengguna dapat menulis ke direktori serta bit yang lengket.

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
  4. Tambahkan setiap pengguna ke vboxusersgrup.

    sudo usermod -a -G vboxusers USERNAME

    (ganti USERNAMEdengan nama pengguna)

CATATAN : Jika Anda telah mengubah izin grup untuk pengguna saat ini, logout dan kembali lagi untuk menyegarkan izin. (kredit @ kR105)

  1. Setiap pengguna yang ingin mengaktifkan autostart untuk masing-masing mesin harus menyetel path ke direktori database autostart

    VBoxManage setproperty autostartdbpath /etc/vbox

    dan aktifkan autostart untuk VM individu dengan

    VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

    Ini akan membuat myuserid.start file dalam /etc/vboxdirektori

  2. Sekarang restart layanan vboxautostart untuk membaca perubahan.

    sudo service vboxautostart-service restart
  3. Nyalakan ulang sistem Anda dan VM Anda harus mulai

kdmurray
sumber
cara memulai mesin virtual tertentu menggunakan skrip startup
Pemula
1
14,04 saya mengklaim bahwa tidak ada layanan seperti 'vboxautostart-service', sudahkah Anda menguji ini?
Arronical
@Arronical OP dan instruksi dari mana jawabannya berasal keduanya untuk Ubuntu 12.04. YMMV dengan versi setelah itu.
kdmurray
Ternyata itu virtualbox 4.3.10 tidak mengunduh skrip init pada 14.04, tetapi jawaban ndasuser di bawah ini membantu saya memperbaikinya. +1 semua bulat!
Arronical
Saya mencoba membuat solusi ini berfungsi di ubuntu 15.10 tanpa hasil .. Saya akhirnya menggunakan posting ini freesoftwareservers.com/index.php/2015/10/24/… .. mungkin bukan pendekatan yang benar, tetapi berhasil
mozart_ar
15

Saya memiliki insiden tidak bahagia serupa yang mencoba operasi ini pada vanilla LTS.

~$ cat /etc/os-release 
NAME="Ubuntu" 
VERSION="14.04.1 LTS, Trusty Tahr" 

Pada versi ini, file kunci /etc/init.d/vboxautostart-service tidak diinstal.

Sejauh yang saya tahu semua VitualBox dan persyaratan dimasukkan oleh apt-get, jadi saya tidak bisa mengatakan mengapa file 'vboxautostart-service' juga tidak disediakan. Tetapi untuk menyelesaikan ini di sini adalah pembaruan saya untuk posting kdmurray.

1) / etc / default / file virtualbox ada untuk saya. Jadi harus menambahkan vars:

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg

2) Harus membuat /etc/vbox/autostart.cfg seperti yang ditunjukkan oleh OP.

6b) Perlu mendapatkan skrip layanan-vboxautostart dan membuatnya dapat dieksekusi.

cd /etc/init.d/
sudo wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-service
sudo chmod +x vboxautostart-service

6c) Peringatkan pengendali rc.d, tetapi saya menggunakan 24 sebagai waktu mulai. Menempatkan hanya 20 dan itu tidak memulai. Mungkin itu berjalan bahkan sebelum virtualbox bekerja.

sudo update-rc.d vboxautostart-service defaults 24 24

Kemudian reboot meluncurkan VM dengan benar.

ndasusers
sumber
1
Dalam versi 5.2 Anda harus mengedit layanan-vboxautostart dan mengganti vboxdrvdi # Required Start/ # Required Stopbaris dengan virtualbox. Tampaknya mereka mengganti nama layanan, sehingga OS tidak dapat mendeteksi prioritas start / stop dengan benar. Saya pikir Anda tidak perlu langkah 6c jika Anda mengganti garis-garis itu.
Tulang ikan
Terima kasih banyak @fishbone komentar Anda adalah trik yang kurang bagi saya
Jairo Andres Velasco Romero
6

Anda dapat menggunakan vboxmanage startvm "my virtual machine" --type=headless|gui|sdl(salah satunya). Gunakan "tanpa kepala" jika mereka server yang Anda hubungkan dengan cara lain selain menggunakan gui.

Untuk benar-benar menjalankan perintah ini pada waktu yang tepat saat boot, Anda ingin membaca di Upstart.

Jo-Erlend Schinstad
sumber
6

Setelah berjam-jam yang tidak menyenangkan mencoba untuk mendapatkan prosedur dari kdmurray di atas untuk bekerja, tanpa hasil akhirnya saya menemukan metode yang bekerja sederhana.

Pertama saya host Linux (Mint 17) diatur pada saat boot untuk login secara otomatis ke akun utama saya.

Kedua saya menggunakan fasilitas di VirtualBox GUI (v4.3.12) untuk membuat pintasan untuk setiap Mesin Virtual di desktop. {klik kanan VM di kolom kiri & pilih "Buat Pintasan di Desktop"}

Berikutnya: Saya sudah menemukan bahwa memunculkan Menu-> Control Center -> Startup Applications -> Tambah dan tambahkan pintasan desktop memberi file yang tidak berfungsi, saya melihat dari jawaban lain di halaman ini bahwa lokasi startup adalah / home /USERNAME/.config/autostart, jadi saya melakukan klik kanan pada setiap pintasan VM desktop dan kemudian menempelkannya ke folder itu, menimpa file sampah sebelumnya. Sekarang mereka mengembangkan ikon VirtualBox 'cantik'.

Dan tentu saja saat me-restart komputer host, 3 VM mulai secara otomatis.

:-)

Bill Williams

PS: sayangnya saya masih memiliki sesuatu yang hilang, karena sering Mesin Virtual tidak akan memulai pada boot, sebaliknya mereka menghasilkan kotak dialog kesalahan yang mengatakan mereka dikunci, bahkan jika saya telah memberitahu mereka untuk mematikan sebelum host di-boot kembali.

Bill Williams
sumber
1
FYI tidak ada "jawaban 5". Angka yang Anda lihat di sebelah kiri setiap jawaban adalah jumlah total suara. Karena itu, milik Anda adalah metode GUI alternatif yang baik. Terima kasih atas kontribusinya.
hmayag
5

Selain deskripsi yang baik tentang layanan vboxautostart di atas, Anda dapat melakukannya

VBoxManage modifyvm server --autostop-type savestate

untuk secara otomatis menghentikan tamu di shutdown. Untuk Ubuntu 14.04 saya harus menambahkan sleep 30 ke bagian stop-service vboxautostart, sehingga menunggu hingga tamu disimpan sepenuhnya.

Michael Schlueter
sumber
2

Saya menemukan cara yang lebih sederhana di bawah Ubuntu 16.04 menjalankan VBox 5.1.34.

Saat berada di VBox, klik kanan pada VM yang berjalan atau idle dalam daftar, pilih 'Buat Pintasan di Desktop ". Setelah Anda melihat ikon di desktop Anda, buka dengan alat apa pun yang memungkinkan Anda melihat perintah yang mendasari VBox dibuat (pada saya sistem, saya klik kanan dan pilih 'properti') Salin ini ke clipboard.

Buka program untuk memperbarui 'aplikasi startup' dan membuat aplikasi baru yang dimulai saat boot, menempelkan perintah yang Anda salin dari tautan desktop yang dibuat oleh VirtualBox.

Dave Nagy
sumber
1

Untuk memulai VM saat masuk ke sesi kami, kami mungkin ingin mendefinisikan file .desktop:

Ketika file ini disalin atau dipindahkan ke direktori autostart kami, file itu akan dieksekusi setelah kita masuk:

Menjalankan Kotak Virtual di ruang pengguna dapat membantu untuk menghindari efek samping yang tidak diinginkan dari memulai mereka saat boot (mis. VM berjalan sebagai root, waktu boot meningkat secara luar biasa, ...).

Takkat
sumber
1

Ini dapat dilakukan dengan menggunakan Antarmuka Manajemen Baris Perintah VirtualBox. Jalankan skrip berikut saat memulai.

#!/bin/bash
VMUSER="vmuser"
VMNAME="RedHatVM" #also you can put UUID in this variable (VMNAME="4ec6acc1-a232-566d-a040-6bc4aadc19a6")

case "$1" in
    start)
        echo "===Starting VirtualBox VM==="
        sudo -H -u $VMUSER VBoxManage startvm "$VMNAME" --type headless
        ;;
    stop)
        echo "===Saving state of Virtualbox VM==="
    sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" savestate
    sleep 20
        ;;
    shutdown)
        echo "===Shutting down Virtualbox VM==="
        sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" acpipowerbutton
    sleep 20
        ;;
    reset)
        echo "===Resetting VirtualBox VM==="
         sudo -H -u $VMUSER VBoxManage controlvm "$VMNAME" reset
        ;;
    status)
         echo -n "VMNAME->";sudo -H -u $VMUSER VBoxManage showvminfo "$VMNAME" --machinereadable |grep "VMState="| cut -d "=" -f2
        ;;
        echo "Usage: /etc/init.d/VMscript {start|stop|shutdown|reset|status}"
        exit 1
        ;;
    esac

exit 0

Ada tutorial yang bagus untuk info lebih lanjut.

Artex
sumber
Selamat datang .. Tolong Salin / tempel info penting dari tautan
badai
1

Addon ke jawaban @kdmurray.

Jika Anda mendapatkan kesalahan pada:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

Untuk mengatasi ini, saya harus secara manual membuat file "nama pengguna". Mulai dan "nama pengguna". Berhenti dengan:

sudo touch "username".start
sudo touch "username".stop

Dan ganti pemilik dengan:

sudo chown "username" "username".start
sudo chown "username" "username".stop

memutarkan lagi:

VBoxManage modifyvm <uuid|vmname> --autostart-enabled on

kemudian mulai kembali layanan:

sudo service vboxautostart-service stop
sudo service vboxautostart-service start

cek tidak apa-apa dengan:

top

dan Anda akan melihat proses "VBox ..." dalam daftar, jika mesin virtual sedang berjalan

Solata
sumber
0

Anda juga bisa mendapatkan manajer sesi gnome yang dijelaskan di sini. Gnome Session Manager Ada di pusat perangkat lunak atau Anda bisa langsung ke terminal dan mengetik sudo apt-get install gnome-session-common

Selanjutnya Anda dapat membuat skrip kecil untuk menjalankan dan menggunakan manajer sesi gnome untuk memulainya. Berikut ini adalah contoh skrip kecil untuk membuat Anda maju ...

#!/bin/sh

#vboxmanage startvm "my virtual machine" --type=headless|gui|sdl (one of those)
# So if your username is user, and virtualbox put your VMs in the default location, and you want headless...

vboxmanage startvm '/home/user/VirtualBox VMs/myvmname' --type=gui
Scott Goodgame
sumber
0

Ini adalah bagaimana saya memulai Centos saya (nama mesin virtual saya) ketika mesin host saya reboot. Saya menggunakan crontab untuk pekerjaan itu. Inilah entri crontab saya:

@reboot VBoxHeadless --startvm "Centos" &
pengguna514700
sumber
0

Untuk server Ubuntu 16.04.1 LTS saya menyelesaikan ini dengan melakukan:

Pertama-tama aktifkan layanan rc-local.ser

sudo systemctl enable rc-local.service

Tambahkan baris berikut ini /etc/rc.local

su virtual_box_user -c "VBoxHeadless -startvm 'virtual_machine_name' &"

Perhatikan bahwa virtual_box_user adalah orang yang dapat melihat mesin virtual (yang ingin Anda mulai) menjalankan perintah:

VBoxManage list vms

Contoh:

$ VBoxManage list vms
"virtualbox1" {2eb3ba3b-bcb3-4515-95d9-d33bce214c28} 
"virtualbox2" {62365634-f2q4-40c0-b4ed-22f4ab84441a}

Yang diubah /etc/rc.localakan terlihat seperti ini

#!/bin/sh -e
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error.
# 
# In order to enable or disable this script just change the execution
# bits. 
# 
# By default this script does nothing. 

su bob -c "VBoxManage startvm 'virtualbox1' --type headless &" 
su bob -c "VBoxManage startvm 'virtualbox2' --type headless &" 

exit 0 

Jika Anda tidak memilih pemilik virtualbox yang tepat, Anda akan melihat kesalahan mengetik perintah:

sudo systemctl status rc-local.service

Saya harap ini bisa membantu

Alessandro Cimbelli
sumber
0

1 - Buat file:

nano /etc/init.d/vm-start

Tempel ini:

#!/bin/bash
/bin/echo "* Starting VMS..."
/bin/sleep 1
/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME--type headless"
/bin/sleep 1
  • Ganti "validuser" dengan nama pengguna Anda
  • Ganti "MACHINENAME" dengan nama mesin virtual Anda
  • Jika Anda perlu memulai lebih dari 1 mesin, ulangi baris di atas dengan nama mesin virtual Anda:

/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME2--type headless" /bin/sleep 1

2 - Jadikan file vm-start dapat dieksekusi:

chmod +x /etc/init.d/vm-start

3 - Edit rc.local

nano /etc/rc.local

Tambahkan ini:

#!/bin/bash
/etc/init.d/vm-start
exit 0

4 - Reboot.

Lucas Catani
sumber