
私の目標は、ホスト マシン (Ubuntu 10.04) を起動および停止するときに、Ubuntu がヘッドレス VirtualBox VM を正常に起動および停止できるようにすることです。
私は脚本によって提供されたQuadir Kareemullah のページ。
これはスクリプトの LSB コメント ヘッダーです (依存関係を減らすために、「Required-Start」から vboxnet を削除しました)。
### BEGIN INIT INFO
# Provides: vboxsvc
# Required-Start: $local_fs $remote_fs vboxdrv
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: VirtualBox Service
# Description: VirtualBox Service to startup and shutdown Virtual Machines
### END INIT INFO
Quadir の説明に従って、/etc/init.d/ で 'vboxsvc' を見つけて実行しました:
$sudo update-rc.d vboxsvc
これにより、ランレベルのリンクが作成されました。たとえば、ランレベル 2 の場合:
$ls -l /etc/rc2.d/
...
lrwxrwxrwx 1 root root 17 2010-11-03 20:02 S20vboxdrv -> ../init.d/vboxdrv
lrwxrwxrwx 1 root root 25 2010-11-03 20:03 S20vboxweb-service -> ../init.d/vboxweb-service
lrwxrwxrwx 1 root root 17 2010-11-11 21:43 S21vboxsvc -> ../init.d/vboxsvc
...
サービスを手動で開始|停止する場合:
$sudo /etc/init.d/vboxsvx start
期待通りに動作します。
「service --status-all」を実行するとサービスはリストに表示されませんが、sysv-rc-conf --list を使用すると表示されます。
コンピュータを起動しても自動的には開始されません。一方、再起動またはシャットダウンすると、サービスは自動的に停止します。何らかの理由で、システムの起動時にリンク /etc/rc2.d/S21vboxnet が実行されていないか、何か他のことが起きています。
Ubuntu では現在 Upstart が主流であることは知っていますが、SysV init もまだサポートされていますよね?
編集:問題の解決に近づいていると思います。解決策は、ホーム ファイル システムを暗号化することと関係があると思います。init プロセスが対応する起動スクリプトを実行し、「sudo -H -u myuser VBoxManage myVirtualMachine -type vrdp > /dev/null」を実行しようとすると、myuser としてまだログインしていないため、ホーム ファイル システムがマウントされていないため、myVirtualMachine のデータ (暗号化されたファイル システムにある) にアクセスできません。
答え1
思った通り、この問題はホーム パーティションが暗号化されていることが原因でした。
私は結局これに従いました質問暗号化を解除します。
私のアドバイスとしては、何をしているのかよく分かっていない限り、Ubuntu のインストール時にホーム パーティションを暗号化しないことです。暗号化する場合は、ログインしていない限り、ホーム ディレクトリの下にあるすべてのものが他のユーザー (ルートを含む) に対してロックされることに注意してください。
答え2
ホーム フォルダーの暗号化を解除するよりも、VirtualBox を実行するための新しいシステム ユーザーを作成する方がよいのではないでしょうか。
そうすれば、保護が維持され、VM を問題なく起動できるようになります。