web-dev-qa-db-ja.com

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

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

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

53
Maythux

VirtualBox Auto-startサービスを使用できます。これを行う方法を説明する優れたチュートリアルが "オタク管理者の生活"ブログ に投稿されています。

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

  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をユーザー名に置き換えます)

NOTE現在のユーザーのグループ権限を変更した場合は、ログアウトしてから再度ログインし、権限を更新します。(クレジット@ 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が起動します

51
kdmurray

バニラ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が正しく起動しました。

14
ndasusers

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

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

6

from kdmurray上記の手順を取得しようとして多くの不幸な時間を過ごした後、成功せずに最終的には機能するメソッドを見つけました単に。

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

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

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

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

:-)

ビル・ウィリアムズ

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

6
Bill Williams

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

VBoxManage modifyvm server --autostop-type savestate

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

5

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

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

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

2
Dave Nagy

これは、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

There は、詳細な情報のための素晴らしいチュートリアルです。

1
Artex

@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 ...」プロセスが表示されます。

1
Solata

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

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

ユーザースペースでVirtual Boxを実行すると、ブート中にそれらを起動するという望ましくない副作用を回避するのに役立つ場合があります(例:VMはルートとして実行され、ブート時間が非常に長くなります...)。

1
Takkat

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

0
Lucas Catani

これは、ホストマシンの再起動時にCentos(仮想マシンの名前)を起動する方法です。その仕事にはcrontabを使用します。これが私のcrontabエントリです:

@reboot VBoxHeadless --startvm "Centos" &
0
user514700

ここで説明されている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
Scott Goodgame