2016-02-19 追記
systemd 228-4 で解決されたので以下の情報は賞味期限切れです。
環境
- VirtualBox 5.0.0
- VirtublBox 上の ArchLinux
- systemd 228-3
vboxservice の起動に失敗する
vboxservice を起動して
# systemctl start vboxservice.service
状況を確認すると ConditionVirtualization=oracle was not met
で起動できていません。
# systemctl status vboxservice.service
● vboxservice.service - VirtualBox Guest Service
Loaded: loaded (/usr/lib/systemd/system/vboxservice.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/vboxservice.service.d
└─override.conf
Active: inactive (dead)
Condition: start condition failed at Sat 2015-11-28 12:41:14 JST; 59s ago
ConditionVirtualization=oracle was not met
原因
VirtualBox 5.0 で準仮想化の規定値が KVM になり、systemd が検出する仮想化の値が kvm
に変わってしまい、期待している oracle
が返ってこなくて起動しません。
# systemd-detect-virt
kvm
とりあえずの解決方法
以下どちらかで解決しますがパフォーマンスは KVM の方がよさそうなので、私はunitファイルを編集して対応しました。
準仮想化インターフェースを Legacy にする
仮想マシンの設定で準仮想化インターフェースで Legacy
を選択すれば、systemd が検出する値が oracle
になりますので、vboxservice.service が起動できるようになります。
設定 / システム / アクセラレーション / 準仮想化インターフェース
で Legacy
を選択します。
# systemd-detect-virt
oracle
unitファイルを編集する
unitファイルの ConditonVirtualization
の値を kvm
に変更します。
[Unit]
ConditionVirtualization=kvm
本来の解決方法
systemd が VirtualBox を kvm として認識するのが間違いのようで、準仮想化インターフェースの設定に関係なく oracle となるのが正しいようです。
2015-07-22 に archlinux のバグレポートに同じ問題があって、そのときには systemd 223 で修正することになり、実際に修正されたようです。
その後仮想化の検出方法に変更があって v228 では同じ問題が発生しているようです。
2015-11-24 に VirtualBox を oracle として認識するための修正がされたので、今後のリリースで解決するだろうと思います。