स्टार्टअप पर VBoxHeadless VM शुरू करें


16

मैं अपने वीएम को स्टार्टअप पर चलाने के लिए प्राप्त नहीं कर सकता।

मैंने बिना किसी भाग्य के "स्टार्टअप एप्लिकेशन" और अपडेट- rdd की कोशिश की।

sudo update-rc.d startvms defaults 99 10

इसने विभिन्न रन स्तरों के लिए सभी उपयुक्त प्रतीकात्मक लिंक बनाए लेकिन वीएम अभी भी शुरू नहीं हुआ है।

यहाँ मेरी शुरुआत की स्क्रिप्ट है:

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

मैं क्या गलत कर रहा हूं?


क्या आपने VRDP समर्थन (हेडलेस मोड के लिए आवश्यक) को शामिल करने के लिए वर्चुअल बॉक्स को PUEL में अपग्रेड किया था?
ताकत १५'११ को

@ टैकट: हाँ, मुझे उल्लेख करना चाहिए: हेडलेस मोड मेरे लिए बहुत अच्छा काम करता है ... मैं इसे स्टार्टअप पर चलाने के लिए नहीं पा सकता।
कैपड्रैगन

1
यदि आपने आदेश के VBoxManage startvm --type headless "UbuntuServer"बजाय प्रयास किया तो क्या होगा VBoxHeadless?
ताकत

इसे चलाने के लिए आपको रूट करने की भी आवश्यकता हो सकती है su -c 'VBoxHeadless --startvm <MACHINE>'
ताकत

@ तक्कत: कोई पासा नहीं। लेकिन फिर, मैं VBoxHeadless प्राप्त कर सकता हूँ ठीक कमांड के साथ काम कर रहा हूँ मैं का उपयोग कर रहा हूँ। स्टार्टअप स्क्रिप्ट में ऐसा करने पर यह केवल काम नहीं कर रहा है।
कैपड्रैगन

जवाबों:


27

यह वही है जो अंत में काम किया है!

1) स्टार्टअप स्क्रिप्ट फ़ाइल बनाएँ

in /etc/init.d - sudo nano /etc/init.d/StartVM

फ़ाइल में निम्न पेस्ट करें और अपने vm नाम के लिए "मेरा वीएम नाम" बदलें:

#! /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) स्क्रिप्ट को निष्पादन योग्य अनुमति दें

के साथ sudo chmod +x /etc/init.d/StartVM

3) स्टार्टअप पर चलाने के लिए स्क्रिप्ट बताएं।

बताएं कि स्क्रिप्ट बंद करने के लिए पहली और स्टार्टअप के लिए आखिरी हो।

sudo update-rc.d StartVM defaults 99 01


2
वीआरडीपी अतिरिक्त उपरि नहीं जोड़ता, VBoxManage startvm --type headlessक्या बेहतर नहीं होगा?
मौजिज

3
मेरे विशिष्ट मामले में, मैं चाहता था कि वीएम राज्य बचाने के बजाय इनायत बंद करे। "एसपीपॉवरबटन" के साथ "सेवेस्टेट" की जगह इसके लिए पूरी तरह से काम किया।
मुज़ामो

2

FYI करें, यह nohup के बिना Opensuse पर काम करता है।

VBoxHeadless -s "OpenSuSE 11.4 64bit" &

इसलिए मैं उसी स्क्रिप्ट का उपयोग करता हूं जो मेरे पास है नोह को छोड़कर?
कैपड्रगन

होहूप से छुटकारा मिल गया, अभी भी काम नहीं करता है। मुझे कुछ और गलत करना चाहिए। क्या आप वाकई उसी स्क्रिप्ट का उपयोग कर रहे हैं? कृपया अपना उत्तर संपादित करें और अपनी स्क्रिप्ट शामिल करें ताकि मैं इसे आज़मा सकूँ।
कैपड्रैगन

2

यह Ubuntu सर्वर 12.04 और VirtualBox 4.2.20 के साथ ठीक काम कर रहा है।

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

तथा

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

तथा

sudo update-rc.d StartVM defaults 99 01

जैसा कि पिछले उत्तर में बताया गया है।


यह मेरे लिए बहुत अच्छा काम करता है! Vbox 5.0 को छोड़कर इसके sudo -u $ VMUSER VBoxHeadless --startvm $ VMNAME & so startvm में 2 "-" हैं और आपने --type हेडलेस के बजाय VBoxHeadless पर मुकदमा किया। यह भी ध्यान देने योग्य है कि जब मुझे यकीन है कि हम एक सर्वर पर हैं, तो "एंड" के बिना, सर्वर तुरंत लॉगिन करने के लिए बूट नहीं होता है, लेकिन सभी सेवाएं जैसे एसएसएच, आरडीपी आदि आदि काम करते हैं, बस कुछ मैंने देखा। यह बूट लॉगऑन क्रिया जानकारी पर अटके सर्वर को छोड़ देता है!
FreeSoftwareServers

1

चूँकि आप उल्लेख करते हैं कि VBoxHeadless ठीक काम करता है यदि आप इसे टर्मिनल की कमांड लाइन से टाइप करते हैं, लेकिन init स्क्रिप्ट से लॉन्च होने पर कोई VM शुरू नहीं करता है, तो मेरा अनुमान है कि यह कुछ पर्यावरण चर की तलाश कर रहा है जो कि शेल चलाते समय परिभाषित होता है आपके टर्मिनल में लेकिन init स्क्रिप्ट वातावरण में अपरिभाषित (जो मूल रूप से खाली है, कर्नेल कमांड लाइन पर दिए गए मापदंडों को छोड़कर)।

क्या आप इसके साथ स्क्रिप्ट में VBoxHeadless इनवोकेशन को बदलने का प्रयास कर सकते हैं?

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

यहां "उपयोगकर्ता नाम" और होम निर्देशिका पथ को उन उपयोगकर्ताओं से मेल खाने के लिए बदला जाना चाहिए जिनका उपयोग आप वीएम शुरू करने के लिए करते हैं।

यदि वह काम करता है, तो आप इस env हैक के बजाय VBoxHeadless को चलाने के लिए su -l का उपयोग करना चाह सकते हैं ।


+1 के लिए su -l- यह एक अच्छा बिंदु है!
ताकत

नहीं ... अभी भी काम नहीं करता है। मैंने सिर्फ एक क्रॉन जॉब का उपयोग करने का फैसला किया है
कैप्ड्रैगन

1

वर्चुअलबॉक्स (4.2.0 आगे) के हाल के संस्करणों पर आपको वीएम को ऑटोस्टार्ट करने के लिए अपनी स्क्रिप्ट को रोल करने की आवश्यकता नहीं है लेकिन यह कुछ कॉन्फ़िगरेशन लेता है। वर्चुअलबॉक्स मैनुअल का सेक्शन 9.24 देखें " सिस्टम बूट के दौरान वर्चुअल मशीन शुरू करना "

दुर्भाग्य से मैनुअल केवल रूपरेखा निर्देश देता है और उम्र में अद्यतन नहीं किया गया है। मैंने कुछ अतिरिक्त विवरण के साथ वर्चुअलबॉक्स मंचों पर इस पोस्ट को पाया ।

आप अपने सर्वर को शुरू करने के लिए r.local में एक लाइन डाल सकते हैं लेकिन यदि आप इसे "ऑफिकल" तरीके से पढ़ना चाहते हैं ..

इन पंक्तियों को / etc / default / virtualbox में जोड़ें:

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

/Etc/vbox/vboxautostart.cfg संपादित करें (यह उदाहरण उपयोगकर्ता "बॉब" को छोड़कर सभी उपयोगकर्ताओं के लिए ऑटोस्टार्ट अनुमति से इनकार करता है:

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

Vboxusers group को / etc / vbox और sticky bit में जोड़ें:

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

उन सभी उपयोगकर्ताओं को जोड़ें जो वर्चुअलबॉक्स का उपयोग "vboxusers" समूह में करेंगे, उदाहरण के लिए:

# adduser Bob vboxusers

प्रत्येक उपयोगकर्ता जो अलग-अलग मशीनों के लिए ऑटोस्टार्ट को सक्षम करना चाहता है, उसे ऑटोस्टार्ट डेटाबेस निर्देशिका के साथ रास्ता तय करना होगा:

$ VBoxManage setproperty autostartdbpath /etc/vbox

उपयोगकर्ता तब वीएमटी को ऑटोस्टार्ट में सेट कर सकते हैं और कॉन्फ़िगर कर सकते हैं कि वे कैसे बंद होंगे (उदाहरण के लिए सेस्टीएट, एसीपिश्यूटडाउन):

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

उपर्युक्त ने वर्चुअलबॉक्स 5 के साथ मेरे लिए काम किया, जो वर्चुअलबॉक्स.org रिपॉजिटरी से संस्थापित है।


लानत है, बस इसे समाप्त करने के लिए केवल यह पता लगाना है कि यह पहले से ही यहाँ उत्तर दिया गया है , इस ब्लॉग पोस्ट
जूल्स

0

vrdp का उपयोग करते समय कोई भी सीधे पोर्ट सेट करना चाहता है .. शीर्ष उत्तर पर टिप्पणी करें, जो विभिन्न vms के लिए अलग स्क्रिप्ट का उपयोग करने के लिए अच्छी तरह से कम्पार्टमेंट करता है

VBoxVRDP -startvm "myVM" -vrdpport 3391 &

0

वाह .. मैं इन सभी समाधानों को देख रहा हूं, जो थोड़ा जटिल लगता है, लेकिन यह मेरा तीसरा लैपटॉप है, जिस पर मैंने बस लेखन समाप्त किया:

VBoxHeadless -s "Ubuntu Server"

/ etc / निर्देशिका में मेरी rc.local फ़ाइल में और यह बहुत अच्छी तरह से काम किया। वर्चुअल मशीन को रिबूट पर स्वचालित रूप से चलाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.