Ubuntu12.04には多くの仮想ボックスマシンがあり、シャットダウンまたは再起動するたびに1つずつ起動する必要があります。
起動時にVBoxマシンを自動的に自動起動するためのスクリプトを作成するのに役立ちたいです。
Ubuntu12.04には多くの仮想ボックスマシンがあり、シャットダウンまたは再起動するたびに1つずつ起動する必要があります。
起動時にVBoxマシンを自動的に自動起動するためのスクリプトを作成するのに役立ちたいです。
回答:
VirtualBox Auto-startサービスを使用できます。これを行う方法を説明した優れたチュートリアルは、「Life of a Geek Admin」ブログに投稿されています。
以下の手順は、リンクされたブログ投稿から採用されています。
最初にファイルを作成し/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
ユーザー名に置き換えます)
注:現在のユーザーのグループのアクセス許可を変更した場合は、ログアウトしてから再度ログインし、アクセス許可を更新してください。(クレジット@ 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が正しく起動しました。
vboxdrv
では、vboxautostart-serviceを編集し、# Required Start
/ # Required Stop
行をで置き換える必要がありvirtualbox
ます。彼らはサービスの名前を変更したようですので、OSは開始/停止の優先順位を正しく検出できません。これらの行を置き換える場合、ステップ6cは必要ないと思います。
使用できますvboxmanage startvm "my virtual machine" --type=headless|gui|sdl
(そのうちの1つ)。GUIを使用する以外の方法で接続するサーバーの場合は、「ヘッドレス」を使用します。
起動中に適切なタイミングでこれらのコマンドを実際に実行するには、Upstartを参照してください。
上記の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 30を追加して、ゲストが完全に保存されるまで待機する必要がありました。
Ubuntu 16.04でVBox 5.1.34を実行するより簡単な方法を見つけました。
VBoxで、リスト内の実行中またはアイドル状態のVMを右クリックし、[デスクトップにショートカットを作成]を選択します。デスクトップにアイコンが表示されたら、VBoxで作成されたコマンド(システム、右クリックして「プロパティ」を選択します)これをクリップボードにコピーします。
プログラムを開いて「スタートアップアプリケーション」を更新し、起動時に起動する新しいアプリケーションを作成して、VirtualBoxによって作成されたデスクトップリンクからコピーしたコマンドを貼り付けます。
セッションへのログイン時にVMを起動するには、.desktopファイルを定義する必要があります。
このファイルが自動起動ディレクトリにコピーまたは移動されると、ログイン後に実行されます。
ユーザーボックスでVirtual Boxを実行すると、ブート中にVirtual Boxを起動することによる望ましくない副作用を回避できる場合があります(VMがルートとして実行される、ブート時間が非常に長くなる、など)。
これは、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
詳細については、素晴らしいチュートリアルがあります。
@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 ...」プロセスが表示されます。
ここで説明されている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
これは、ホストマシンの再起動時にCentos(仮想マシンの名前)を起動する方法です。その仕事にはcrontabを使用します。これが私のcrontabエントリです:
@reboot VBoxHeadless --startvm "Centos" &
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-再起動します。