वर्चुअल बॉक्स मशीनों को बूट करते समय स्वचालित रूप से कैसे शुरू करें?


53

मेरे Ubuntu12.04 में मेरे पास कई वर्चुअल बॉक्स मशीनें हैं, हर बार मुझे शटडाउन या रिबूट करना पड़ता है।

बूट करते समय VBox मशीनों को स्वचालित रूप से ऑटोस्टार्ट करने के लिए मैं स्क्रिप्ट लिखने में मदद करना चाहता हूं।



@SergiyKolodyazhnyy यह सवाल किसी भी तरह से उस की नकल नहीं है।
मुहम्मद बिन युसरत

जवाबों:


51

आप वर्चुअलबॉक्स ऑटो-स्टार्ट सेवा का उपयोग कर सकते हैं। यह कैसे करना है इसका वर्णन करने वाला एक अच्छा ट्यूटोरियल "लाइफ ऑफ ए गीक एडमिन" ब्लॉग पर पोस्ट किया गया है ।

निम्नलिखित चरण लिंक किए गए ब्लॉग पोस्ट से अनुकूलित किए गए हैं:

  1. पहले आपको फ़ाइल बनाने /etc/default/virtualboxऔर कुछ चर जोड़ने की आवश्यकता है ।

    VBOXAUTOSTART_DB जिसमें ऑटोस्टार्ट डेटाबेस निर्देशिका और
    VBOXAUTOSTART_CONFIG के लिए एक निरपेक्ष पथ शामिल है जिसमें ऑटोस्टार्ट विन्यास सेटिंग्स का स्थान समाहित है। फ़ाइल इस तरह दिखनी चाहिए:

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
  2. अब हमें /etc/vbox/vbox.cfgफ़ाइल बनाने और जोड़ने की आवश्यकता है

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

    नोट: यदि फ़ाइल नाम vbox.cfgऊपर काम नहीं करता है, तो उसका नामकरण करने का प्रयास करेंautostart.cfg

    तुम सिर्फ पंक्ति जोड़ सकते हैं आप केवल उपयोगकर्ता हैं, तो default_policy = allowकरने के लिए vbox.cfgफ़ाइल।

  3. Vboxuser समूह के लिए निर्देशिका पर अनुमतियाँ सेट करें और सुनिश्चित करें कि उपयोगकर्ता निर्देशिका के साथ-साथ चिपचिपा बिट भी लिख सकते हैं।

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
  4. प्रत्येक उपयोगकर्ता को vboxusersसमूह में जोड़ें।

    sudo usermod -a -G vboxusers USERNAME

    ( USERNAMEउपयोगकर्ता नाम से बदलें )

नोट : यदि आपने वर्तमान उपयोगकर्ता के लिए समूह अनुमतियाँ बदल दी हैं, तो अनुमतियाँ ताज़ा करने के लिए फिर से लॉग आउट करें और वापस जाएँ। (क्रेडिट @ kR105)

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

    VBoxManage setproperty autostartdbpath /etc/vbox

    और एक व्यक्ति के साथ वीएम के लिए ऑटोस्टार्ट सक्षम करें

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

    यह डायरेक्टरी myuserid.start में एक फाइल बनाएगा/etc/vbox

  2. अब परिवर्तनों में पढ़ने के लिए vboxautostart-service को पुनः आरंभ करें।

    sudo service vboxautostart-service restart
  3. अपने सिस्टम को रिबूट करें और आपका वीएम शुरू होना चाहिए


स्टार्टअप स्क्रिप्ट का उपयोग करके किसी विशेष वर्चुअल मशीन को कैसे शुरू किया जाए
शुरुआत

1
मेरा 14.04 का दावा है कि 'vboxautostart-service' जैसी कोई सेवा नहीं है, क्या आपने इसका परीक्षण किया है?
एरोनिकल

@Arronical ओपी और जिन निर्देशों से उत्तर दिया गया था, वे दोनों Ubuntu 12.04 के लिए थे। उसके बाद के संस्करणों के साथ YMMV।
कर्मद्रेय

यह पता चला है कि यह वर्चुअल बॉक्स 4.3.10 14.04 पर इनिट स्क्रिप्ट डाउनलोड नहीं करता है, लेकिन नीचे दिए गए जवाब में ndasuser ने मुझे ठीक करने में मदद की। + 1s हर दौर में!
एरोनिकल

मैं ubuntu 15.10 पर इस समाधान कार्य को बिना किसी सक्सेज़ के करने की कोशिश कर रहा था .. मैंने इस पोस्ट का उपयोग करना समाप्त कर दिया freesoftwareservers.com/index.php/2015/10/24/… .. शायद सही दृष्टिकोण नहीं है, लेकिन यह काम करता है
mozb_ar

15

मेरे पास वैनिला एलटीएस पर इस ऑपरेशन की कोशिश करने वाली ऐसी ही दुखी घटनाएं थीं।

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

इस संस्करण पर, कुंजी फ़ाइल /etc/init.d/vboxautostart-service स्थापित नहीं की गई थी।

जहाँ तक मुझे पता है कि सभी VitualBox और आवश्यकताओं को उपयुक्त तरीके से रखा गया था, इसलिए मैं यह नहीं कह सकता कि 'vboxautostart-service' फ़ाइल भी क्यों नहीं प्रदान की गई। लेकिन यहाँ इस पर पाने के लिए kdmurray की पोस्ट पर मेरा अपडेट है।

1) / etc / डिफ़ॉल्ट / वर्चुअलबॉक्स फ़ाइल मेरे लिए मौजूद थी। तो var जोड़ना चाहिए:

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

2) ओपी द्वारा बताए अनुसार /etc/vbox/autostart.cfg बनाना होगा

6b) एक vboxautostart- सेवा स्क्रिप्ट प्राप्त करने और इसे निष्पादन योग्य बनाने की आवश्यकता है।

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 कंट्रोलर को अलर्ट करें, लेकिन मैंने शुरुआत समय के रूप में 24 का उपयोग किया। सिर्फ 20 डाल दिया और यह शुरू नहीं हुआ। वर्चुअलबॉक्स काम करने से पहले भी यह चलता था।

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

फिर रिबूटिंग ने VM को सही ढंग से लॉन्च किया।


1
संस्करण 5.2 में आप vboxautostart-सेवा को संपादित करने और बदलने के लिए vboxdrvमें # Required Start/ # Required Stopद्वारा लाइनों virtualbox। ऐसा लगता है कि उन्होंने सेवा का नाम बदल दिया है, इसलिए ओएस सही ढंग से प्राथमिकताओं को शुरू / रोक नहीं सकता है। मुझे लगता है कि अगर आपको उन पंक्तियों को बदलना है तो आपको चरण 6c की आवश्यकता नहीं है।
फिशबोन

बहुत बहुत धन्यवाद @fishbone आपकी टिप्पणी मेरे लिए चाल की कमी थी
जायरो एंड्रेस वेलास्को रोमेरो

6

आप vboxmanage startvm "my virtual machine" --type=headless|gui|sdl(उनमें से एक) का उपयोग कर सकते हैं । "हेडलेस" का उपयोग करें यदि वे सर्वर हैं जिन्हें आप अन्य तरीकों से कनेक्ट करते हैं, तो वे gui का उपयोग करते हैं।

बूट के दौरान इन कमांड को सही समय पर चलाने के लिए, आप अपस्टार्ट पर पढ़ना चाहेंगे।


6

कई दुखी घंटों के बाद kdmurray से काम करने के लिए प्रक्रियाओं को प्राप्त करने की कोशिश कर रहा है , सफलता के बिना मुझे अंततः एक विधि मिली जो बस काम करती थी।

पहले मेरे लिनक्स होस्ट (मिंट 17) को मेरे मुख्य खाते में स्वचालित रूप से लॉगिन करने के लिए बूट समय पर सेट किया गया था।

दूसरे मैंने डेस्कटॉप पर प्रत्येक वर्चुअल मशीन के लिए शॉर्टकट बनाने के लिए वर्चुअलबॉक्स GUI (v4.3.12) में सुविधाओं का उपयोग किया। {बाएं कॉलम में VM को राइट-क्लिक करें और "डेस्कटॉप पर शॉर्टकट बनाएं" का चयन करें}

अगला: मैंने पहले ही पाया था कि मेनू-> नियंत्रण केंद्र -> स्टार्टअप एप्लिकेशन -> लाने और जोड़ने के लिए डेस्कटॉप शॉर्टकट दिए गए फाइलों ने काम नहीं किया, मुझे इस पृष्ठ पर अन्य उत्तर से पता चला कि स्टार्टअप का स्थान / घर है /USERNAME/.config/autostart इसलिए मैंने डेस्कटॉप वीएम शॉर्टकट्स में से प्रत्येक पर राइट-क्लिक किया और फिर उन्हें उस फ़ोल्डर में पेस्ट किया, जो पहले की क्रैप फाइल्स को ओवरराइट कर रहा था। अब उन्होंने 'सुंदर' वर्चुअलबॉक्स आइकन विकसित किए।

और यकीन है कि मेजबान कंप्यूटर को पुनरारंभ करने पर, 3 वीएम स्वचालित रूप से शुरू हो गए।

:-)

बिल विलियम्स

पुनश्च: अफसोस, मुझे अभी भी कुछ याद आ रहा है, क्योंकि अक्सर वर्चुअल मशीनें बूट पर शुरू नहीं होती हैं, इसके बजाय वे एक त्रुटि संवाद बॉक्स उत्पन्न करते हैं जो कहता है कि वे बंद हैं, भले ही मैंने उन्हें मेजबान को फिर से बूट करने से पहले बंद करने के लिए कहा हो।


1
FYI करें कोई "उत्तर 5" नहीं है। प्रत्येक उत्तर के बाईं ओर आप जिस संख्या को देखते हैं, वह कुल वोट संख्या है। कहा कि, तुम्हारा एक अच्छा विकल्प जीयूआई विधि है। योगदान के लिए धन्यवाद।
हमायग

5

उपरोक्त vboxautostart- सेवा के अच्छे विवरण के अलावा, आप कर सकते हैं

VBoxManage modifyvm server --autostop-type savestate

स्वचालित रूप से अतिथि को शटडाउन पर रोकना। उबंटू 14.04 के लिए मुझे एक नींद 30 को vboxautostart- सर्विस स्टॉप सेक्शन में जोड़ना था , ताकि यह तब तक इंतजार करे जब तक कि मेहमान को पूरी तरह से बचा नहीं लिया गया हो।


2

मुझे Ubuntu 16.04 के तहत VBox 5.1.34 पर चलने का एक सरल तरीका मिला।

VBox में रहते हुए, सूची में चल रहे या निष्क्रिय VM पर राइट-क्लिक करें, 'डेस्कटॉप पर शॉर्टकट बनाएँ "का चयन करें। एक बार जब आप अपने डेस्कटॉप पर आइकन देखते हैं, तो किसी भी उपकरण के साथ खोलें जो आपको अंतर्निहित कमांड VBox को देखते हैं (मेरे पर) प्रणाली, मैं राइट क्लिक करता हूं और 'गुण' का चयन करता हूं) इसे क्लिपबोर्ड पर कॉपी करें।

'स्टार्टअप एप्लिकेशन' को अपडेट करने के लिए प्रोग्राम खोलें और एक नया एप्लिकेशन बनाएं जो बूटबॉक्स में शुरू होता है, जिसे आप कमांड से चिपकाकर वर्चुअलबॉक्स द्वारा बनाए गए डेस्कटॉप लिंक से कॉपी करते हैं।


1

हमारे सत्र में प्रवेश करने पर वीएम शुरू करने के लिए हम एक .desktop फ़ाइल को परिभाषित करना चाहते हैं:

जब यह फ़ाइल कॉपी की गई या हमारी ऑटोस्टार्ट निर्देशिका में स्थानांतरित की गई तो इसे लॉग इन करने के बाद फिर से निष्पादित किया जाएगा:

उपयोगकर्ता के स्थान में वर्चुअल बॉक्स चलाने से उन्हें बूट के दौरान शुरू करने के अवांछित दुष्प्रभावों से बचने में मदद मिल सकती है (जैसे VM रूट के रूप में चलता है, बूट समय अविश्वसनीय रूप से बढ़ जाता है, ...)।


1

यह VirtualBox कमांड लाइन प्रबंधन इंटरफ़ेस का उपयोग करके किया जा सकता है। बस शुरू में निम्नलिखित स्क्रिप्ट चलाएँ।

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

वहाँ अधिक जानकारी के लिए एक अच्छा ट्यूटोरियल है।


आपका स्वागत है .. कृपया कॉपी / से लिंक महत्वपूर्ण जानकारी पेस्ट
तूफान

1

Addon से @kdmurray उत्तर दें।

यदि आपको त्रुटि मिलती है:

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

इसे हल करने के लिए, मुझे मैन्युअल रूप से "उपयोगकर्ता नाम" .start और "उपयोगकर्ता नाम" .stop साथ बनाना होगा:

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

और इसके साथ मालिक बदलें:

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

फिर से दौड़ना:

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

फिर सेवा पुनरारंभ करें:

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

चेक सब ठीक है:

top

और आपको वर्चुअल मशीन चल रही है, तो एक सूची में "VBox ..." प्रक्रिया को देखना चाहिए


0

आप यहाँ वर्णित गनोम सत्र प्रबंधक भी प्राप्त कर सकते हैं। सूक्ति सत्र प्रबंधक यह सोफ़वेयर केंद्र में है या आप बस एक टर्मिनल पर जा सकते हैं और टाइप कर सकते हैं sudo apt-get install gnome-session-common

आगे आप इसे शुरू करने के लिए सूक्ति सत्र प्रबंधक को चलाने और उपयोग करने के लिए थोड़ी स्क्रिप्ट बना सकते हैं। यहाँ एक छोटा सा नमूना स्क्रिप्ट आपको पाने के लिए है ...

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

जब मेरा होस्ट मशीन रिबूट होता है तो मैं अपने सेंटोस (अपनी वर्चुअल मशीन का नाम) को शुरू करता हूं। मैं उस जॉब के लिए क्रेस्टब का इस्तेमाल करता हूं। यहाँ मेरी crontab प्रविष्टि है:

@reboot VBoxHeadless --startvm "Centos" &

0

Ubuntu सर्वर 16.04.1 LTS के लिए मैंने ऐसा करके हल किया:

सबसे पहले rc-local.service को सक्रिय करें

sudo systemctl enable rc-local.service

में निम्नलिखित पंक्ति जोड़ें /etc/rc.local

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

ध्यान दें कि virtual_box_user वह है जो वर्चुअल मशीन को देख सकता है (जिसे आप शुरू करने के लिए तैयार हैं) कमांड निष्पादित कर रहा है:

VBoxManage list vms

उदाहरण:

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

संशोधित /etc/rc.localइस तरह दिखना चाहिए

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

यदि आप वर्चुअलबॉक्स के सही मालिक का चयन नहीं करते हैं, तो आपको कमांड टाइप करने में त्रुटि देखनी चाहिए:

sudo systemctl status rc-local.service

मुझे उम्मीद है कि यह मदद कर सकता है


0

1 - एक फ़ाइल बनाएँ:

nano /etc/init.d/vm-start

इसे चिपकाएँ:

#!/bin/bash
/bin/echo "* Starting VMS..."
/bin/sleep 1
/bin/su validuser -c "/usr/bin/vboxmanage startvm MACHINENAME--type headless"
/bin/sleep 1
  • अपने उपयोगकर्ता नाम के साथ "सत्यापनकर्ता" बदलें
  • "MACHINENAME" को अपने वर्चुअल मशीन नाम से बदलें
  • यदि आपको 1 से अधिक मशीन शुरू करने की आवश्यकता है, तो अपने वर्चुअल मशीन के नाम के साथ ऊपर की पंक्ति दोहराएं:

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

2 - फ़ाइल vm-start निष्पादन योग्य बनाएं:

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

3 - rc.local संपादित करें

nano /etc/rc.local

इसे जोड़ो:

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

4 - रिबूट।

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