VMを起動時に実行できないようです。
「スタートアップアプリケーション」とupdate-rc.dを試してみましたが、うまくいきませんでした。
Sudo update-rc.d startvms defaults 99 10
これにより、異なる実行レベルに適切なシンボリックリンクがすべて作成されましたが、VMはまだ起動しません。
これが私のstartvmsスクリプトです。
#!/bin/bash
### BEGIN INIT INFO
# Provides: startvms
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start my VMs at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "$1" in
start)
echo "Starting"
Nohup VBoxHeadless --startvm "UbuntuServer" &
;;
stop)
echo "Stopping $DESC"
VBoxManage controlvm "UbuntuServer" poweroff
;;
restart|force-reload)
echo "Restarting $DESC"
VBoxManage controlvm "UbuntuServer" poweroff
Nohup VBoxHeadless --startvm "UbuntuServer" &
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
私は何を間違えていますか?
THISis最終的に機能したもの!
/etc/init.dで-Sudo nano /etc/init.d/StartVM
。
コピーファイルに次を貼り付け、「My VM Name」をvm名に置き換えます。
#! /bin/sh
# /etc/init.d/StartVM
#
#Edit these variables!
VMUSER=spode
VMNAME="My VM Name"
case "$1" in
start)
echo "Starting VirtualBox VM..."
Sudo -H -b -u $VMUSER /usr/bin/VBoxVRDP -s "$VMNAME"
;;
stop)
echo "Saving state of Virtualbox VM..."
Sudo -H -u $VMUSER /usr/bin/VBoxManage controlvm "$VMNAME" savestate
;;
*)
echo "Usage: /etc/init.d/StartVM {start|stop}"
exit 1
;;
esac
exit 0
Sudo chmod +x /etc/init.d/StartVM
で。
スクリプトを最初にシャットダウンし、最後に起動するように伝えます。
Sudo update-rc.d StartVM defaults 99 01
参考までに、これはNohupのないOpenSuseで動作します。
VBoxHeadless -s "OpenSuSE 11.4 64bit" &
これは、Ubuntuサーバー12.04およびVirtualBox 4.2.20で正常に機能しています。
#! /bin/sh
# /etc/init.d/StartVM
#
#Edit these variables!
VMUSER=username
case "$1" in
start)
echo "Starting VirtualBox VM SMARTHOST ..."
Sudo -u $VMUSER VBoxManage startvm SMARTHOST --type headless
echo "Starting VirtualBox VM wxp-acceso ..."
Sudo -u $VMUSER VBoxManage startvm wxp-acceso --type headless
echo "Starting VirtualBox VM wmmaq_edi ..."
Sudo -u $VMUSER VBoxManage startvm vmmaq_edi --type headless
;;
stop)
echo "Saving state of Virtualbox VM SMARTHOST ..."
Sudo -u $VMUSER VBoxManage controlvm SMARTHOST savestate
echo "Saving state of Virtualbox VM wxp-acceso ..."
Sudo -u $VMUSER VBoxManage controlvm wxp-acceso savestate
echo "Saving state of Virtualbox VM vmmaq_edi ..."
Sudo -u $VMUSER VBoxManage controlvm vmmaq_edi savestate
;;
*)
echo "Usage: /etc/init.d/StartVM {start|stop}"
exit 1
;;
esac
exit 0
そして
Sudo chmod +x /etc/init.d/StartVM
そして
Sudo update-rc.d StartVM defaults 99 01
前の回答で示したように。
VBoxHeadless は端末のコマンドラインから入力しても、initスクリプトから起動したときにVMを開始しなくても正常に機能するということを述べているので、端末でシェルを実行するときに定義されるが、initスクリプト環境では未定義の環境変数を探します(カーネルコマンドラインで指定されたパラメーターを除き、基本的には空です)。
スクリプトのVBoxHeadless呼び出しをこれに置き換えてみてください。
env USER=username HOME=/path/to/user/homedir VBoxHeadless ...same options as before...
ここで、「ユーザー名」とホームディレクトリのパスは、VMの起動に使用するユーザーのパスと一致するように変更する必要があります。
それが機能する場合、この env ハックの代わりに su -l を使用してVBoxHeadlessを実行することができます。
Virtualboxの最近のバージョン(4.2.0以降)では、VMを自動起動するために独自のスクリプトをロールする必要はありませんが、設定が必要です。 Virtualboxマニュアルのセクション9.24を参照してください " システムブート中の仮想マシンの起動 "
残念ながら、このマニュアルは概要の説明のみを提供しており、長年にわたって更新されていません。私は virtualboxフォーラムのこの投稿 いくつかの追加の詳細を見つけました。
サーバーを起動するためにrc.localに行を追加するだけでもかまいませんが、「公式」な方法で読み進めてください。
次の行を/ etc/default/virtualboxに追加します。
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxautostart.cfg
/etc/vbox/vboxautostart.cfgを編集します(この例では、ユーザー「Bob」を除くすべてのユーザーの自動起動許可を拒否します。
# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny
# Bob is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
bob = {
allow = true
startup_delay = 10
}
# Alice is not allowed to start virtual machines, useful to exclude certain users
# if the default policy is set to allow.
alice = {
allow = false
}
/ etc/vboxおよびスティッキービットにvboxusersグループを追加します。
# chgrp vboxusers /etc/vbox
# chmod 1775 /etc/vbox
Virtualboxを使用するすべてのユーザーを「vboxusers」グループに追加します。例:
# adduser Bob vboxusers
個々のマシンで自動起動を有効にしたいすべてのユーザーは、自動起動データベースディレクトリへのパスを次のように設定する必要があります。
$ VBoxManage setproperty autostartdbpath /etc/vbox
次に、ユーザーはVMを自動起動するように設定し、次のように停止方法(savestate、acpishutdownなど)を構成できます。
$ VBoxManage modifyvm <vmname> --autostart-enabled on
$ VBoxManage modifyvm <vmname> --autostop-type acpishutdown
上記は、virtualbox.orgリポジトリからインストールされたVirtualbox 5で機能しました。
うわー..これらすべての解決策を見ていますが、これは少し複雑に思えますが、これは3番目のラップトップです。
VBoxHeadless -s "Ubuntu Server"
/ etc /ディレクトリの私のrc.localファイルで、それはかなりうまくいきました。再起動時に仮想マシンを自動的に実行します。
vrdpを使用するときにポートを直接設定することもできます。トップアンサーにコメントします。
VBoxVRDP -startvm "myVM" -vrdpport 3391 &