VBoxHeadless VM'yi başlangıçta başlatın


16

VM'imin başlangıçta çalışmasını sağlayamıyorum.

Ben "başlangıç ​​uygulamaları" ve güncelleme-rc.d şanssız denedim.

sudo update-rc.d startvms defaults 99 10

Bu, farklı çalışma seviyeleri için tüm uygun sembolik bağlantıları yarattı, ancak VM yine de başlamıyor.

İşte benim startvms betiğim:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          startvms
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start my VMs at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
case "$1" in
  start)
        echo "Starting"
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  stop)
        echo "Stopping $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        ;;

  restart|force-reload)
        echo "Restarting $DESC"
        VBoxManage controlvm "UbuntuServer" poweroff
        nohup VBoxHeadless --startvm "UbuntuServer" &
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Neyi yanlış yapıyorum?


Sanal Kutuyu, VRDP desteğini (başsız mod için gerekli) içerecek şekilde PUEL'e yükselttiniz mi?
Takkat

@Takkat: evet, söylemeliydim: başsız mod benim için harika çalışıyor ... sadece başlangıçta çalıştıramıyorum.
capdragon

1
Komut VBoxManage startvm --type headless "UbuntuServer"yerine denediyseniz ne olur VBoxHeadless?
Takkat

Çalıştırmak için root olmanız da gerekebilir su -c 'VBoxHeadless --startvm <MACHINE>'.
Takkat

@Takkat: zar yok. Ama yine de, ben kullanıyorum komutu ile gayet iyi çalışan VBoxHeadless alabilirsiniz. SADECE bir başlangıç ​​komut dosyasında yaptığımda çalışmıyor.
capdragon

Yanıtlar:


27

Nihayet işe yarayan budur !

1) Başlangıç ​​komut dosyası oluşturma

/etc/init.d - içinde sudo nano /etc/init.d/StartVM.

Kopyala Dosyaya aşağıdakileri yapıştırın ve vm adınız için "VM Adı" nı değiştirin:

#! /bin/sh
# /etc/init.d/StartVM
#

#Edit these variables!
VMUSER=spode
VMNAME="My VM Name"

case "$1" in
  start)
    echo "Starting VirtualBox VM..."
    sudo -H -b -u $VMUSER /usr/bin/VBoxVRDP -s "$VMNAME"
    ;;
  stop)
    echo "Saving state of Virtualbox VM..."
    sudo -H -u  $VMUSER /usr/bin/VBoxManage controlvm "$VMNAME" savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

2) Komut dosyasına yürütülebilir izin verin

ile sudo chmod +x /etc/init.d/StartVM.

3) Komut dosyasına başlangıçta çalışmasını söyleyin.

komut dosyasının ilk kapanış ve son açılış olduğunu söyleyin.

sudo update-rc.d StartVM defaults 99 01


2
VRDP ek yük getirmiyor VBoxManage startvm --type headlessmu , daha iyi olmaz mı?
mojzis

3
Benim özel durumumda, VM'nin durumu kaydetmek yerine incelikle kapanmasını istedim. "savestate" yerine "acpipowerbutton" kullanılması bunun için mükemmel çalıştı.
muzzamo

2

Bilginize, Bu, nouse olmadan opensuse üzerinde çalışır.

VBoxHeadless -s "OpenSuSE 11.4 64bit" &

Ben nohup dışında dışında ben aynı komut dosyası kullanmak?
capdragon

Hohup'tan kurtuldum, hala çalışmıyor. Başka bir şey yanlış yapmalıyım. Aynı komut dosyasını kullandığımızdan emin misiniz? Lütfen cevabınızı düzenleyin ve denemeniz için betiğinizi ekleyin.
capdragon

2

Bu Ubuntu sunucusu 12.04 ve VirtualBox 4.2.20 ile sorunsuz çalışıyor.

#! /bin/sh
# /etc/init.d/StartVM
#
#Edit these variables!
VMUSER=username
case "$1" in
  start)
    echo "Starting VirtualBox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage startvm SMARTHOST --type headless
    echo "Starting VirtualBox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage startvm wxp-acceso --type headless
    echo "Starting VirtualBox VM wmmaq_edi ..."
    sudo -u $VMUSER VBoxManage startvm vmmaq_edi --type headless
    ;;
  stop)
    echo "Saving state of Virtualbox VM SMARTHOST ..."
    sudo -u $VMUSER VBoxManage controlvm SMARTHOST savestate
    echo "Saving state of Virtualbox VM wxp-acceso ..."
    sudo -u $VMUSER VBoxManage controlvm wxp-acceso savestate
    echo "Saving state of Virtualbox VM vmmaq_edi ..."
    sudo -u $VMUSER VBoxManage controlvm vmmaq_edi savestate
    ;;
  *)
    echo "Usage: /etc/init.d/StartVM {start|stop}"
    exit 1
    ;;
esac

exit 0

Ve

sudo chmod +x /etc/init.d/StartVM

ve

sudo update-rc.d StartVM defaults 99 01

önceki yanıtta belirtildiği gibi.


Bu benim için harika! Vbox 5.0 hariç. Onun sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & böylece startvm 2 "-" var ve sadece - tipi başsız yerine VBoxHeadless dava. Ayrıca dikkat çeken bir sunucu olduğumuza eminim, sonunda "&" olmadan, sunucu oturum açma istemine önyükleme değil ama tüm hizmetler SSH, RDP vb vb, sadece fark bir şey gibi çalışır. Sunucu önyükleme oturum açma ayrıntılı bilgi sıkışmış bırakır!
FreeSoftwareServers

1

Bir terminalin komut satırından yazarsanız ancak bir init komut dosyasından başlatıldığında herhangi bir VM başlatmazsa VBoxHeadless'ın iyi çalıştığını belirttiğinizden , tahminim, bir kabuk çalıştırdığınızda tanımlanan bazı ortam değişkenlerini aramasıdır. init komut dosyası ortamında tanımlanmamıştır (çekirdek komut satırında verilen parametreler dışında temelde boştur).

Koddaki VBoxHeadless çağrılarını bununla değiştirmeyi deneyebilir misiniz?

env USER=username HOME=/path/to/user/homedir VBoxHeadless ...same options as before...

Burada "kullanıcı adı" ve giriş dizini yolu, VM'yi başlatmak için kullandığınız kullanıcınınkilerle eşleşecek şekilde değiştirilmelidir.

Bu işe yararsa, bu env kesmek yerine VBoxHeadless çalıştırmak için su -l kullanmak isteyebilirsiniz .


+1 için su -l- bu iyi bir nokta!
Takkat

hayır ... hala çalışmıyor. Sadece bir cron işi kullanmaya karar verdim
capdragon

1

Virtualbox'ın son sürümlerinde (4.2.0 sonrası) bir VM'yi otomatik olarak başlatmak için kendi komut dosyanızı döndürmeniz gerekmez, ancak bazı yapılandırmalar gerekir. "Virtualbox Kılavuzunun bölüm 9.24 Bkz sistem açılışı sırasında sanal makine başlatma "

Maalesef el kitabı sadece taslak talimatlar vermektedir ve çağlar boyunca güncellenmemiştir. Bu gönderiyi bazı ekstra ayrıntılarla sanal kutu forumlarında buldum .

Sadece sunucunuzu başlatmak için rc.local bir satır koymak olabilir ama bunu yapmak istiyorsanız "resmi" yolu okuyun ..

Bu satırları / etc / default / virtualbox'a ekleyin:

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

Edit /etc/vbox/vboxautostart.cfg (bu örnek, "Bob" kullanıcısı dışındaki tüm kullanıcılar için otomatik başlatma iznini reddeder:

# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny

# Bob is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
bob = {
    allow = true
    startup_delay = 10
}

# Alice is not allowed to start virtual machines, useful to exclude certain users
# if the default policy is set to allow.
alice = {
    allow = false
}

/ Etc / vbox ve yapışkan bit'e vboxusers grubu ekleyin:

# chgrp vboxusers /etc/vbox
# chmod 1775 /etc/vbox

Virtualbox kullanacak olan tüm kullanıcıları "vboxusers" grubuna ekleyin, örneğin:

# adduser Bob vboxusers

Tek tek makineler için otomatik başlatmayı etkinleştirmek isteyen her kullanıcı, otomatik başlangıç ​​veritabanı dizinine giden yolu şu şekilde ayarlamalıdır:

$ VBoxManage setproperty autostartdbpath /etc/vbox

Kullanıcılar daha sonra VM'leri otomatik olarak başlayacak ve aşağıdakilerle nasıl duracaklarını (ör. Savestate, acpishutdown) yapılandıracak şekilde ayarlayabilir:

$ VBoxManage modifyvm <vmname> --autostart-enabled on
$ VBoxManage modifyvm <vmname> --autostop-type acpishutdown

Yukarıdakiler benim için virtualbox.org deposundan yüklenen Virtualbox 5 ile çalıştı.


Lanet olsun, sadece bu blog
Jules

0

Ayrıca vrdp kullanırken doğrudan bağlantı noktasını ayarlamak isteyebilirsiniz .. farklı cevap için farklı betikler kullanmak için iyi bölümlere ayrılır üst yanıt yorum

VBoxVRDP -startvm "myVM" -vrdpport 3391 &

0

Wow .. Biraz karmaşık görünen tüm bu çözümleri görüyorum, ama bu sadece yazdığım üçüncü dizüstü bilgisayarım:

VBoxHeadless -s "Ubuntu Server"

/ etc / dizinindeki rc.local dosyamda oldukça iyi çalıştı. Sanal makineyi otomatik olarak yeniden başlatıldığında çalıştırır.

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.