起動時に仮想マシンを自動的に起動する方法は?


53

Ubuntu12.04には多くの仮想ボックスマシンがあり、シャットダウンまたは再起動するたびに1つずつ起動する必要があります。

起動時にVBoxマシンを自動的に自動起動するためのスクリプトを作成するのに役立ちたいです。



@SergiyKolodyazhnyyこの質問は、決してそれの複製ではありません。
ムハンマドビンユスラット

回答:


51

VirtualBox Auto-startサービスを使用できます。これを行う方法を説明した優れたチュートリアルは、「Life of a Geek Admin」ブログに投稿されています。

以下の手順は、リンクされたブログ投稿から採用されています。

  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 = allowvbox.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

    個々のVMの自動起動を有効にします

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

    これによりmyuserid.start/etc/vboxディレクトリにファイルが作成されます

  2. 次に、vboxautostart-serviceを再起動して、変更を読み込みます。

    sudo service vboxautostart-service restart
  3. システムを再起動すると、VMが起動します


起動スクリプトを使用して特定の仮想マシンを起動する方法
初心者14

1
私の14.04は、「vboxautostart-service」などのサービスはないと主張していますが、これをテストしましたか?
15年

@Arronical OPと回答のソースとなった指示は、どちらもUbuntu 12.04向けでした。それ以降のバージョンのYMMV。
kdmurray

virtualbox 4.3.10は14.04でinitスクリプトをダウンロードしないことがわかりましたが、以下のndasuserの回答がそれを修正するのに役立ちました。+1のすべてのラウンド!
アロニカル

私は..私はこの記事使用して終了していない成功事例のでのUbuntu 15.10にメイクこのソリューションは、仕事をしようとしていたfreesoftwareservers.com/index.php/2015/10/24/...を 正しいアプローチ...そうでないかもしれないが、それは動作します
mozart_ar

15

バニラLTSでこの操作をしようとすると、同様の不幸な事件がありました。

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

このバージョンでは、キーファイル/etc/init.d/vboxautostart-serviceはインストールされていません。

私が知る限り、すべてのVitualBoxと要件はapt-getによって入力されたため、「vboxautostart-service」ファイルも提供されなかった理由を言うことはできません。しかし、これを乗り越えるために、ここでkdmurrayの投稿の更新を行います。

1) 私のために/ etc / default / virtualboxファイルが存在しました。したがって、変数を追加する必要があります。

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

2)OPの指示に従って/etc/vbox/autostart.cfgを作成する必要があります。

6b)vboxautostart-serviceスクリプトを取得して実行可能にする必要があります。

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を入れるだけで起動しませんでした。おそらく、virtualboxが動作する前でも実行されていたのでしょう。

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

その後、リブートするとVMが正しく起動しました。


1
バージョン5.2 vboxdrvでは、vboxautostart-serviceを編集し、# Required Start/ # Required Stop行をで置き換える必要がありvirtualboxます。彼らはサービスの名前を変更したようですので、OSは開始/停止の優先順位を正しく検出できません。これらの行を置き換える場合、ステップ6cは必要ないと思います。
フィッシュボーン

@fishboneに感謝します。あなたのコメントは私に欠けていたトリックでした
Jairo Andres Velasco Romero

6

使用できますvboxmanage startvm "my virtual machine" --type=headless|gui|sdl(そのうちの1つ)。GUIを使用する以外の方法で接続するサーバーの場合は、「ヘッドレス」を使用します。

起動中に適切なタイミングでこれらのコマンドを実際に実行するには、Upstartを参照してください。


6

上記のkdmurrayから手順を実行しようとして多くの不幸な時間が経過した後、成功せずに、簡単に機能する方法を見つけました。

最初に、ブート時にLinuxホスト(Mint 17)がメインアカウントに自動的にログインするようにセットアップされました。

次に、VirtualBox GUI(v4.3.12)の機能を使用して、デスクトップ上の各仮想マシンのショートカットを作成しました。{左の列でVMを右クリックし、[デスクトップにショートカットを作成]を選択します}

次:メニュー->コントロールセンター->スタートアップアプリケーション->デスクトップショートカットの追加と追加でファイルが機能しないことがわかったので、このページの他の回答からスタートアップの場所が/ homeであることがわかりました。 /USERNAME/.config/autostartなので、各デスクトップVMショートカットを右クリックして、そのフォルダーに貼り付け、以前のがらくたファイルを上書きしました。現在、彼らは「きれいな」VirtualBoxアイコンを開発しました。

ホストコンピューターを再起動すると、3つのVMが自動的に起動します。

:-)

ビル・ウィリアムズ

PS:残念ながら、まだ不足しているものがあります。多くの場合、仮想マシンは起動時に起動せず、代わりにホストが再起動する前にシャットダウンするように指示した場合でも、ロックされていることを示すエラーダイアログボックスが生成されるためです。


1
参考までに「答え5」はありません。各回答の左側に表示される数字は、総投票数です。そうは言っても、あなたのものは優れた代替GUIメソッドです。貢献してくれてありがとう。
hmayag 14

5

上記のvboxautostart-serviceの説明に加えて、次のことができます。

VBoxManage modifyvm server --autostop-type savestate

シャットダウン時にゲストを自動的に停止します。Ubuntu 14.04では、vboxautostart-service stopセクションにsleep 30を追加して、ゲストが完全に保存されるまで待機する必要がありました。


2

Ubuntu 16.04でVBox 5.1.34を実行するより簡単な方法を見つけました。

VBoxで、リスト内の実行中またはアイドル状態のVMを右クリックし、[デスクトップにショートカットを作成]を選択します。デスクトップにアイコンが表示されたら、VBoxで作成されたコマンド(システム、右クリックして「プロパティ」を選択します)これをクリップボードにコピーします。

プログラムを開いて「スタートアップアプリケーション」を更新し、起動時に起動する新しいアプリケーションを作成して、VirtualBoxによって作成されたデスクトップリンクからコピーしたコマンドを貼り付けます。


1

セッションへのログイン時にVMを起動するには、.desktopファイルを定義する必要があります。

このファイルが自動起動ディレクトリにコピーまたは移動されると、ログイン後に実行されます。

ユーザーボックスでVirtual Boxを実行すると、ブート中にVirtual Boxを起動することによる望ましくない副作用を回避できる場合があります(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

@kdmurray回答のアドオン。

エラーが発生した場合:

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

これを解決するには、「username」.startファイルと「username」.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

チェックはすべてOKです:

top

仮想マシンが実行されている場合、リストに「VBox ...」プロセスが表示されます。


0

ここで説明されているgnomeセッションマネージャーを入手することもできます。Gnome Session Manager ソフトウェアセンターにあるか、ターミナルに移動して入力するだけです sudo apt-get install gnome-session-common

次に、実行する小さなスクリプトを作成し、gnomeセッションマネージャーを使用して起動します。以下に、簡単なサンプルスクリプトを示します。

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

これは、ホストマシンの再起動時にCentos(仮想マシンの名前)を起動する方法です。その仕事にはcrontabを使用します。これが私の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 

virtualboxの正しい所有者を選択しない場合、コマンドの入力エラーが表示されます。

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
  • 「validuser」をユーザー名に置き換えます
  • 「MACHINENAME」を仮想マシン名に置き換えます
  • 複数のマシンを起動する必要がある場合は、仮想マシン名を使用して上記の行を繰り返します。

/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-再起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.