[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:25090] VMware の起動スクリプトについて
岡本です。
potatoでVMwareを使用しているのですが、OSブート時にエラーとなり
VMwareを起動できない状態になっています。
<エラーメッセージ>
Virtual machine monitor failed
Virtual bidirectional parallel port failed
Virtual ethernet failed
Bridged networking on /dev/vmnet0 failed
<エラーメッセージ終わり>
そこで、分からないながらも/etc/init.d/vmwareを調査していくうちに
特定の行をコメントアウトすると正しくモジュールがロードされ、VMwareが
実行できることが分かりました。
vmware_exec() {
local msg="$1" # IN
local func="$2" # IN
shift 2
echo -n ' '"$msg"
# On Caldera 2.2, SIGHUP is sent to all our children when this script exits
# I wanted to use shopt -u huponexit instead but their bash version
# 1.14.7(1) is too old
if [ "$VMWARE_DEBUG" = 'yes' ]; then
(trap '' SIGHUP; "$func" "$@")
else
(trap '' SIGHUP; "$func" "$@") >/dev/null 2>&1
fi
# if [ "$?" -gt 0 ]; then
# vmware_failed
# echo
# return 1
# fi
vmware_success
echo
return 0
}
(trap '' SIGHUP; "$func" "$@")の結果を判定するif文でエラーとなり
スクリプトを抜けてしまってるようなのですが、なぜそうなるのかが分かりません。
trap '' SIGHUPでシグナルを無視して、$funcは$2で渡された個々のモジュールを
ロードするための関数で、その関数にさらにshift 2した後の残りの引数を$@で
渡しているところまでは理解しているのですが、$funcの結果がなぜエラーになるの
でしょうか?vmware_execは下記のように呼び出されています。一例ですが。
vmware_exec 'Virtual machine monitor' vmware_start_vmmon
一つ目の引数はただのメッセージで、二つ目が$funcで呼び出す関数です。
vmware_start_vmmonの内容は以下の通りです。
vmware_start_vmmon() {
/sbin/insmod -s -f "$driver" || exit 1
exit 0
}
$driverにはvmmonが入ります。ここのinsmodは成功して0を返しているはず何ですが
なぜ、if文で0より大きいと判定されているのか謎です。DebianでVMwareを使っている
人はみんな問題なく使えているのでしょうか?同じような問題に遭遇して回避なさった
方がおられましたらご教示お願いします。
VMwareのバージョンは2.0.3で、カーネルは2.2.17です。
--
岡本@兵庫県神戸市
masaki@xxxxxxxxxxxxxxxxx