Ubuntu12.04には多くの仮想ボックスマシンがあり、シャットダウンまたは再起動するたびに1つずつ起動する必要があります。
起動時にVBoxマシンを自動的に自動起動するためのスクリプトを書くのに役立ちたいです。
VirtualBox Auto-startサービスを使用できます。これを行う方法を説明する優れたチュートリアルが "オタク管理者の生活"ブログ に投稿されています。
以下の手順は、リンクされたブログ投稿から採用されています。
まず、ファイル/etc/default/virtualbox
を作成し、いくつかの変数を追加する必要があります。
VBOXAUTOSTART_DBこれには、自動起動データベースディレクトリへの絶対パスが含まれ、
VBOXAUTOSTART_CONFIGこれには、自動起動構成設定の場所が含まれます。ファイルは次のようになります。
# virtualbox defaults file
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
/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
ファイルに追加するだけです。
ディレクトリのアクセス許可をvboxuserグループに設定し、ユーザーがディレクトリとスティッキービットに書き込みできることを確認します。
Sudo chgrp vboxusers /etc/vbox
Sudo chmod 1775 /etc/vbox
各ユーザーをvboxusers
グループに追加します。
Sudo usermod -a -G vboxusers USERNAME
(USERNAME
をユーザー名に置き換えます)
NOTE:現在のユーザーのグループ権限を変更した場合は、ログアウトしてから再度ログインし、権限を更新します。(クレジット@ kR105)
個々のマシンの自動起動を有効にするすべてのユーザーは、自動起動データベースディレクトリへのパスを次のように設定する必要があります。
VBoxManage setproperty autostartdbpath /etc/vbox
個々のVMの自動起動を有効にします
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
これにより、myuserid.start
ディレクトリに/etc/vbox
ファイルが作成されます
次に、vboxautostart-serviceを再起動して、変更を読み込みます。
Sudo service vboxautostart-service restart
システムを再起動すると、VMが起動します
バニラ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が正しく起動しました。
vboxmanage startvm "my virtual machine" --type=headless|gui|sdl
(そのうちの1つ)を使用できます。 GUIを使用する以外の方法で接続するサーバーの場合は、「ヘッドレス」を使用します。
ブート中にこれらのコマンドを適切なタイミングで実際に実行するには、Upstartを参照してください。
from kdmurray上記の手順を取得しようとして多くの不幸な時間を過ごした後、成功せずに最終的には機能するメソッドを見つけました単に。
最初に、ブート時にLinuxホスト(Mint 17)がメインアカウントに自動的にログインするようにセットアップされました。
次に、VirtualBox GUI(v4.3.12)の機能を使用して、デスクトップ上の各仮想マシンのショートカットを作成しました。 {左の列のVMを右クリックして、[デスクトップにショートカットを作成]を選択します}
次に:メニュー->コントロールセンター->スタートアップアプリケーション->デスクトップショートカットを追加および追加すると、機能しないファイルが表示されることを既に発見しました。このページの他の回答から、スタートアップの場所は/ homeであることがわかりました/USERNAME/.config/autostartなので、各デスクトップVMショートカットを右クリックして、それらをそのフォルダーに貼り付け、以前のがらくたファイルを上書きしました。現在、彼らは「きれいな」VirtualBoxアイコンを開発しました。
ホストコンピューターを再起動すると、3つのVMが自動的に起動しました。
:-)
ビル・ウィリアムズ
PS:残念ながら、不足しているものがあります。多くの場合、仮想マシンは起動時に起動せず、代わりに、ホストが停止する前にシャットダウンするように指示した場合でも、ロックされているというエラーダイアログボックスが生成されるためです再起動します。
上記のvboxautostart-serviceの説明に加えて、次のことができます。
VBoxManage modifyvm server --autostop-type savestate
シャットダウン時にゲストを自動的に停止します。 Ubuntu 14.04では、vboxautostart-service stopセクションにsleep を追加して、ゲストが完全に保存されるまで待機する必要がありました。
Ubuntu 16.04でVBox 5.1.34を実行するより簡単な方法を見つけました。
VBoxで、リストの実行中またはアイドル状態のVMを右クリックし、[デスクトップにショートカットを作成]を選択します。デスクトップにアイコンが表示されたら、基盤となるツールを表示できるツールで開きます。コマンドVBoxが作成されました(私のシステムでは、右クリックして「プロパティ」を選択します)これをクリップボードにコピーします。
プログラムを開いて「スタートアップアプリケーション」を更新し、起動時に起動する新しいアプリケーションを作成して、VirtualBoxによって作成されたデスクトップリンクからコピーしたコマンドを貼り付けます。
これは、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 は、詳細な情報のための素晴らしいチュートリアルです。
@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 ...」プロセスが表示されます。
セッションへのログイン時にVMを開始するには、.desktopファイルを定義する必要があります。
このファイルが自動起動ディレクトリにコピーまたは移動されると、ログイン後に実行されます。
ユーザースペースでVirtual Boxを実行すると、ブート中にそれらを起動するという望ましくない副作用を回避するのに役立つ場合があります(例:VMはルートとして実行され、ブート時間が非常に長くなります...)。
Ubuntuサーバー16.04.1 LTSの場合、これを解決するには次のようにします。
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
これが役立つことを願っています
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
/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-再起動します。
これは、ホストマシンの再起動時にCentos(仮想マシンの名前)を起動する方法です。その仕事にはcrontabを使用します。これが私のcrontabエントリです:
@reboot VBoxHeadless --startvm "Centos" &
ここで説明されている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