Sanal kutu makinelerini önyükleme yaparken otomatik olarak nasıl başlatabilirim?


53

Ubuntu12.04'ümde birçok Sanal kutu makinem var, her kapattığımda veya yeniden başlattığımda bunları birer birer başlatmam gerekiyor.

Önyükleme yaparken VBox makinelerini otomatik olarak başlatmak için otomatik olarak komut dosyası yazma konusunda yardım almak istiyorum.



@SergiyKolodyazhnyy Bu soru, hiçbir şekilde, bunun bir kopyası değildir.
Muhammad bin Yusrat

Yanıtlar:


51

VirtualBox Otomatik Başlatma hizmetini kullanabilirsiniz. Bunun nasıl yapılacağını açıklayan iyi bir rehber "Geek Admin'in Hayatı" blogunda yayınlanmıştır .

Aşağıdaki adımlar bağlantılı blog gönderisinden uyarlanmıştır:

  1. Öncelikle dosyayı oluşturmanız /etc/default/virtualboxve birkaç değişken eklemeniz gerekir .

    Autostart veritabanı dizinine mutlak bir yol içeren
    VBOXAUTOSTART_DB ve autostart yapılandırma ayarlarının konumunu içeren VBOXAUTOSTART_CONFIG . Dosya şuna benzemelidir:

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
    
  2. Şimdi /etc/vbox/vbox.cfgdosyayı oluşturmalı ve eklemeliyiz

    # 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
    }
    

    Not: Dosya adı vbox.cfgyukarıda çalışmazsa, adlandırmayı deneyin autostart.cfg.

    Tek kullanıcı sizseniz default_policy = allow, vbox.cfgdosyayı dosyaya ekleyebilirsiniz .

  3. Dizindeki izinleri vboxuser grubuna ayarlayın ve kullanıcıların dizine ve yapışkan biti yazabildiklerinden emin olun.

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
    
  4. Kullanıcıların her birini vboxusersgruba ekleyin .

    sudo usermod -a -G vboxusers USERNAME

    ( USERNAMEkullanıcı adı ile değiştirin )

NOT : Geçerli kullanıcı için grup izinlerini değiştirdiyseniz, izinleri yenilemek için oturumu kapatıp tekrar açın. (kredi @ kR105)

  1. Tek tek makineler için otomatik başlatmayı etkinleştirmek isteyen her kullanıcı, otomatik çalıştırma veritabanı dizinine giden yolu ayarlamak zorundadır.

    VBoxManage setproperty autostartdbpath /etc/vbox

    ve tek bir VM için otomatik başlatmayı etkinleştir

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

    Bu dizinde bir myuserid.start dosya yaratacaktır/etc/vbox

  2. Şimdi değişiklikleri okumak için vboxautostart hizmetini yeniden başlatın.

    sudo service vboxautostart-service restart
  3. Sisteminizi yeniden başlatın ve VM'niz başlamalıdır


belirli bir sanal makinenin başlangıç ​​betiğini kullanarak nasıl başlatılacağı
Acemi

1
14.04 'te' vboxautostart-service 'gibi bir hizmet bulunmadığını iddia ediyor, bunu test ettiniz mi?
Arronical

@Arronical OP ve cevabın alındığı talimatlar Ubuntu 12.04 için geçerliydi. Bundan sonra sürümleriyle YMMV.
kdmurray

Görünüşe göre, sanal kutu 4.3.10 14.04'te init betiğini indirmiyor, ancak aşağıdaki ndasuser'ın cevabı bunu düzeltmeme yardımcı oldu. Tümüyle + 1'ler!
Arronical

Bu çözümü ubuntu 15.10'da başarılı bir şekilde çalışmamaya çalışıyordum .. Bu yazıyı kullanmaya başladım freesoftwareservers.com/index.php/2015/10/24/… .. belki de doğru bir yaklaşım olmayabilir, fakat işe
yarar

15

Vanilyalı LTS'de bu operasyonu deneyen benzer mutsuz olaylar gördüm.

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

Bu sürümde /etc/init.d/vboxautostart-service anahtar dosyası yüklenmedi.

Bildiğim kadarıyla tüm VitualBox ve gereksinimleri apt-get tarafından yerine getirildi, bu yüzden 'vboxautostart-service' dosyasının neden sağlanamadığını da söyleyemem. Fakat bunun üstesinden gelmek için kdmurray'ın gönderisine yapılan güncellemem.

1) / etc / default / virtualbox dosyası benim için vardı. Bu yüzden vars eklemelisiniz:

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

2) OP ile belirtilen /etc/vbox/autostart.cfg dosyasını oluşturmalısınız .

6b) Bir vboxautostart-service betiği almalı ve çalıştırılabilir yapmalı.

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) rc.d kontrol cihazını uyar, ancak 24'ü başlangıç ​​zamanı olarak kullandım. Sadece 20 koyarak ve başlamadı. Belki de sanal kutu çalışmadan önce bile koştu.

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

Sonra yeniden başlatma VM'yi doğru şekilde başlattı.


1
5.2 sürümünde vboxautostart-service 'i düzenlemeniz vboxdrvve # Required Start/ # Required Stopsatırlarında değiştirmeniz gerekir virtualbox. Hizmeti yeniden adlandırdıkları anlaşılıyor, bu nedenle İşletim Sistemi başlatma / durdurma önceliklerini doğru algılamıyor. Bence bu çizgileri değiştirirseniz 6c adımına ihtiyacınız yok
kılçık

Çok teşekkürler @ fishbone yorumunuz bana eksik hile oldu
Jairo Andres Velasco Romero

6

Kullanabilirsiniz vboxmanage startvm "my virtual machine" --type=headless|gui|sdl(bunlardan biri). GUI kullanmanın dışında başka yollarla bağlandığınız sunucularsa "başsız" kullanın.

Bu komutları önyükleme sırasında doğru zamanda çalıştırmak için, Upstart'ta okumak isteyeceksiniz.


6

Çok mutsuz saatlerden sonra kdmurray'den işe giriş prosedürlerini almaya çalışırken , başarı olmadan sonunda işe yarayan bir yöntem buldum.

Öncelikle Linux sunucum (Mint 17) açılış hesabımda otomatik olarak ana hesabıma giriş yapmak için kuruldu.

İkinci olarak, VirtualBox GUI'deki (v4.3.12) özellikleri masaüstündeki her Sanal Makine için bir kısayol oluşturmak için kullandım. {sol sütunda VM'yi sağ tıklayın ve "Masaüstünde Kısayol Oluştur" u seçin

Sonra: Menü-> Kontrol Merkezi -> Başlangıç ​​Uygulamaları -> Masaüstü kısayollarının eklenmesi ve eklenmesinin işe yaramayan dosyalar verdiğini zaten bulmuştum, bu sayfadaki diğer cevaplardan başlangıçların konumunun / ana sayfa olduğunu gördüm. /USERNAME/.config/autostart böylece masaüstü VM kısayollarının her birine sağ tıkladım ve daha sonra eski dosyaların üzerine yazarak onları bu klasöre yapıştırdım. Şimdi 'güzel' VirtualBox simgelerini geliştirdiler.

Ana bilgisayarı yeniden başlatmaya yetecek kadar emin olduktan sonra, 3 VM otomatik olarak başladı.

:-)

Bill Williams

PS: ne yazık ki hala eksik bir şeyim var, çünkü Sanal Makineler genellikle önyükleme sırasında başlamaz, bunun yerine ana bilgisayar yeniden başlatılmadan önce kapanmalarını söylememe rağmen, kilitli olduklarını söyleyen bir hata iletişim kutusu oluştururlar.


1
Bilginize "cevap 5" yoktur. Her bir cevabın solunda gördüğünüz sayı toplam oy sayısıdır. Bunu söyledikten sonra, sizinki iyi bir alternatif GUI yöntemidir. Katkı için teşekkürler.
hmayag

5

Yukarıdaki vboxautostart-service hizmetinin iyi tanımlamasına ek olarak,

VBoxManage modifyvm server --autostop-type savestate

konuğu kapandığında konuyu otomatik olarak durdurmak için. Ubuntu 14.04 için vboxautostart-service stop bölümüne bir uyku 30 eklemek zorunda kaldım , böylece misafir tamamen kaydedilene kadar beklerdi.


2

VBox 5.1.34 çalıştıran Ubuntu 16.04 altında daha basit bir yol buldum.

VBox'dayken, listedeki çalışan veya boşta çalışan VM'ye sağ tıklayın, 'Masaüstünde Kısayol Oluştur' seçeneğini seçin. sistemde sağ tıklayın ve 'özellikleri' seçin.

'Başlangıç ​​uygulamalarını' güncellemek için programı açın ve VirtualBox tarafından oluşturulan masaüstü bağlantısından kopyaladığınız komutu yapıştırarak açılışta başlayan yeni bir uygulama oluşturun.


1

Oturumumuza giriş yaparken bir VM başlatmak için bir .desktop dosyası tanımlamak isteyebiliriz:

Bu dosya kopyalandığında veya otomatik başlatma dizinimize taşındığında, oturum açtıktan sonra çalıştırılacaktır:

Sanal Kutuyu kullanıcı alanında çalıştırmak, önyükleme sırasında bunları başlatmanın istenmeyen yan etkilerini önlemeye yardımcı olabilir (örneğin, VM root olarak çalışır, önyükleme süresi inanılmaz derecede artar, ...).


1

Bu, VirtualBox Komut Satırı Yönetim Arabirimi kullanılarak yapılabilir. Sadece başlangıçta aşağıdaki betiği çalıştırın.

#!/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

Orada daha fazla bilgi için güzel bir öğretici olduğunu.


Hoşgeldiniz .. Lütfen linkten önemli bilgileri kopyalayın / yapıştırın
fırtına

1

Add to kdmurray answer.

Eğer hata alırsanız:

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

Bunu çözmek için, "username" .start ve "username" .stop dosyalarını elle oluşturmak zorunda kaldım:

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

Ve sahibi ile değiştir:

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

tekrar yayınlama:

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

sonra hizmeti yeniden başlatın:

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

kontrol tamam ile tamam:

top

sanal makine çalışıyorsa, listede "VBox ..." işlemini görmelisiniz


0

Ayrıca burada açıklanan gnome oturum yöneticisini de alabilirsiniz. Gnome Session Manager Yazılım merkezinde ya da sadece bir terminale girip yazabilirsiniz. sudo apt-get install gnome-session-common

Sonra çalıştırmak ve gnome oturum yöneticisini başlatmak için kullanmak için küçük bir komut dosyası oluşturabilirsiniz. İşte sizi yönlendirecek küçük bir senaryo.

#!/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

0

Ana makinem yeniden başlatıldığında Centos'imi (sanal makinemin adı) bu şekilde başlatıyorum. Bu iş için crontab kullanıyorum. İşte benim crontab girişi:

@reboot VBoxHeadless --startvm "Centos" &

0

Ubuntu sunucusu 16.04.1 LTS için şunu yaparak çözdüm:

İlk önce rc-local.service'i etkinleştirin

sudo systemctl enable rc-local.service

Aşağıdaki satırı da ekle /etc/rc.local

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

Virtual_box_user'ın şu komutu çalıştıran sanal makineyi (başlatmak istediğiniz) görebildiğini unutmayın:

VBoxManage list vms

Örnek:

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

Değiştirilen /etc/rc.localbu gibi görünmeli

#!/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 

Sanal kutunun doğru sahibini seçmezseniz, komutu yazarken hatayı görmelisiniz:

sudo systemctl status rc-local.service

Umarım bu yardımcı olabilir


0

1 - Bir dosya oluşturun:

nano /etc/init.d/vm-start

Bunu yapıştır:

#!/bin/bash
/bin/echo "* Starting VMS..."
/bin/sleep 1
/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME--type headless"
/bin/sleep 1
  • "Validuser" ı kullanıcı adınızla değiştirin
  • "MACHINENAME" ifadesini sanal makine adınızla değiştirin
  • 1'den fazla makineye başlamanız gerekirse, yukarıdaki satırı sanal makine adınızla tekrarlayın:

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

2 - vm-start dosyasını çalıştırılabilir hale getir:

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

3 - rc.local dosyasını düzenleyin

nano /etc/rc.local

Bunu ekle:

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

4 - Yeniden başlat.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.