2010年11月14日日曜日

Fedora 13でVirtualBox-OSEが起動しない問題への対処

昨日、久しぶりにVirtualBox-OSEをFedora 13マシンで使おうとしたら、次のようなエラーが出て起動しなくなっていた。


VirtualBox: supR3HardenedMainGetTrustedMain: dlopen("/usr/lib/virtualbox/VirtualBox.so",) failed: VBoxVMM.so: cannot open shared object file: No such file or directory

起動できないのは一般ユーザーだけで、rootで実行すると起動できる。どうやら、glibcのCVE-2010-3847対策が影響しているようだ。この対策では、setuid/setgidプログラムがdlopenする際のライブラリ検索パスとして$ORIGINを展開しないようになっている。これによって/usr/lib/virtualbox/VirtualBoxというsetuidされたプログラムが、同じディレクトリにあるライブラリを読み込めなくなったわけだ。Fedora 12でもglibcをupdateすると同じ問題が発生する模様。


VirtualBox-OSEを起動できるようにする手軽な対策は、/libとか/usr/libとかに/usr/lib/virtualbox/*.soへのシンボリックリンクを作成すること(x86_64環境なら/lib64か/usr/lib64に)。次のようにfindコマンドを実行してもいいし、シェルスクリプト書いてもいい。


# find /usr/lib/virtualbox -name \*.so -type f -exec ln -s -t /lib '{}' ';' 

これで起動できるようになったのだが、結局、http://www.virtualbox.org/で公開されているプロプラ版(バージョン3.2.10)に入れ替えることにした。というのも、今、Fedora 13用にRPM Fusionで公開されているVirtualBox-OSE(バージョン3.2.6)では、Ubuntu 10.10やFedora 14が採用しているxorg server 1.9に未対応で、これらのOSをゲストに使う際に不便だからである。ソースからビルドするのは面倒だしね。