kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 14.04でVMware Player 6.0.1が起動しない問題を修正する

   Ubuntu 14.04で「VMware Player 6.0.1」のカーネルモジュールのビルドが失敗する問題です。

現象の確認

  現象の確認です。

  1.カーネルモジュールのビルド

    「VMware Player 6.0.1」をUbuntu 14.04で起動しようとすると、以下のようにVMwareのカーネルモジュールのビルドを行う確認画面が表示されます。


    「Install」ボタンをクリックします。

  2.ビルドの失敗

    しばらくすると、以下のようにビルドが失敗したと表示されます。


  3.エラー画面

    以下のようにエラー画面が表示されます。


  4.ログの内容

    ログの内容を見ると以下のようになっています。

2014-04-19T01:38:42.609+09:00| vthread-3| I120: Log for VMware Workstation pid=30300 version=10.0.1 build=build-1379776 option=Release
2014-04-19T01:38:42.609+09:00| vthread-3| I120: The process is 64-bit.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: Host codepage=UTF-8 encoding=UTF-8
2014-04-19T01:38:42.609+09:00| vthread-3| I120: Host is Linux 3.13.0-24-generic Ubuntu 14.04 LTS
2014-04-19T01:38:42.558+09:00| vthread-3| I120: Msg_Reset:
2014-04-19T01:38:42.558+09:00| vthread-3| I120: [msg.dictionary.load.openFailed] Cannot open file "/usr/lib/vmware/settings": そのようなファイルやディレクトリはありません.
2014-04-19T01:38:42.558+09:00| vthread-3| I120: ----------------------------------------
2014-04-19T01:38:42.558+09:00| vthread-3| I120: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: Msg_Reset:
2014-04-19T01:38:42.609+09:00| vthread-3| I120: [msg.dictionary.load.openFailed] Cannot open file "/root/.vmware/config": そのようなファイルやディレクトリはありません.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: ----------------------------------------
2014-04-19T01:38:42.609+09:00| vthread-3| I120: PREF Optional preferences file not found at /root/.vmware/config. Using default values.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: PREF Unable to check permissions for preferences file.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: Msg_Reset:
2014-04-19T01:38:42.609+09:00| vthread-3| I120: [msg.dictionary.load.openFailed] Cannot open file "/root/.vmware/preferences": そのようなファイルやディレクトリはありません.
2014-04-19T01:38:42.609+09:00| vthread-3| I120: ----------------------------------------
2014-04-19T01:38:42.609+09:00| vthread-3| I120: PREF Failed to load user preferences.
2014-04-19T01:38:42.609+09:00| vthread-3| W110: Logging to /tmp/vmware-root/vmware-modconfig-30300.log
2014-04-19T01:38:42.618+09:00| vthread-3| I120: Obtaining info using the running kernel.
2014-04-19T01:38:42.618+09:00| vthread-3| I120: Created new pathsHash.
2014-04-19T01:38:42.618+09:00| vthread-3| I120: Setting header path for 3.13.0-24-generic to "/lib/modules/3.13.0-24-generic/build/include".
2014-04-19T01:38:42.618+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:42.618+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:42.618+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:42.618+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:42.623+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:42.623+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Reading in info for the vmmon module.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Reading in info for the vmnet module.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Reading in info for the vmblock module.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Reading in info for the vmci module.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Reading in info for the vsock module.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Setting vsock to depend on vmci.
2014-04-19T01:38:42.764+09:00| vthread-3| I120: Invoking modinfo on "vmmon".
2014-04-19T01:38:42.765+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:42.765+09:00| vthread-3| I120: Invoking modinfo on "vmnet".
2014-04-19T01:38:42.766+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:42.766+09:00| vthread-3| I120: Invoking modinfo on "vmblock".
2014-04-19T01:38:42.768+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:42.768+09:00| vthread-3| I120: Invoking modinfo on "vmci".
2014-04-19T01:38:42.769+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:42.769+09:00| vthread-3| I120: Invoking modinfo on "vsock".
2014-04-19T01:38:42.770+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 0.
2014-04-19T01:38:42.780+09:00| vthread-3| I120: to be installed: vmmon status: 0
2014-04-19T01:38:42.780+09:00| vthread-3| I120: to be installed: vmnet status: 0
2014-04-19T01:38:42.796+09:00| vthread-3| I120: Obtaining info using the running kernel.
2014-04-19T01:38:42.796+09:00| vthread-3| I120: Setting header path for 3.13.0-24-generic to "/lib/modules/3.13.0-24-generic/build/include".
2014-04-19T01:38:42.796+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:42.796+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:42.796+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:42.796+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:42.802+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:42.802+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:42.939+09:00| vthread-3| I120: Kernel header path retrieved from FileEntry: /lib/modules/3.13.0-24-generic/build/include
2014-04-19T01:38:42.939+09:00| vthread-3| I120: Update kernel header path to /lib/modules/3.13.0-24-generic/build/include
2014-04-19T01:38:42.939+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:42.939+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:42.939+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:42.939+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:42.945+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:42.945+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:42.946+09:00| vthread-3| I120: Found compiler at "/usr/bin/gcc"
2014-04-19T01:38:42.948+09:00| vthread-3| I120: Got gcc version "4.8".
2014-04-19T01:38:42.948+09:00| vthread-3| I120: The GCC version matches the kernel GCC minor version like a glove.
2014-04-19T01:38:42.948+09:00| vthread-3| I120: Using user supplied compiler "/usr/bin/gcc".
2014-04-19T01:38:42.950+09:00| vthread-3| I120: Got gcc version "4.8".
2014-04-19T01:38:42.950+09:00| vthread-3| I120: The GCC version matches the kernel GCC minor version like a glove.
2014-04-19T01:38:42.953+09:00| vthread-3| I120: Trying to find a suitable PBM set for kernel "3.13.0-24-generic".
2014-04-19T01:38:42.953+09:00| vthread-3| I120: No matching PBM set was found for kernel "3.13.0-24-generic".
2014-04-19T01:38:42.953+09:00| vthread-3| I120: The GCC version matches the kernel GCC minor version like a glove.
2014-04-19T01:38:42.953+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:42.953+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:42.954+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:42.954+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:42.959+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:42.959+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:43.095+09:00| vthread-3| I120: The GCC version matches the kernel GCC minor version like a glove.
2014-04-19T01:38:43.095+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:43.095+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:43.095+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:43.095+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:43.101+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:43.101+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:43.101+09:00| vthread-3| I120: Using temp dir "/tmp".
2014-04-19T01:38:43.157+09:00| vthread-3| I120: Obtaining info using the running kernel.
2014-04-19T01:38:43.157+09:00| vthread-3| I120: Setting header path for 3.13.0-24-generic to "/lib/modules/3.13.0-24-generic/build/include".
2014-04-19T01:38:43.157+09:00| vthread-3| I120: Validating path "/lib/modules/3.13.0-24-generic/build/include" for kernel release "3.13.0-24-generic".
2014-04-19T01:38:43.157+09:00| vthread-3| I120: Failed to find /lib/modules/3.13.0-24-generic/build/include/linux/version.h
2014-04-19T01:38:43.157+09:00| vthread-3| I120: /lib/modules/3.13.0-24-generic/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
2014-04-19T01:38:43.157+09:00| vthread-3| I120: using /usr/bin/gcc-4.8 for preprocess check
2014-04-19T01:38:43.162+09:00| vthread-3| I120: Preprocessed UTS_RELEASE, got value "3.13.0-24-generic".
2014-04-19T01:38:43.163+09:00| vthread-3| I120: The header path "/lib/modules/3.13.0-24-generic/build/include" for the kernel "3.13.0-24-generic" is valid.  Whoohoo!
2014-04-19T01:38:43.300+09:00| vthread-3| I120: Invoking modinfo on "vmmon".
2014-04-19T01:38:43.301+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:43.301+09:00| vthread-3| I120: Invoking modinfo on "vmnet".
2014-04-19T01:38:43.302+09:00| vthread-3| I120: "/sbin/modinfo" exited with status 256.
2014-04-19T01:38:46.782+09:00| vthread-3| I120: Setting destination path for vmmon to "/lib/modules/3.13.0-24-generic/misc/vmmon.ko".
2014-04-19T01:38:46.961+09:00| vthread-3| I120: Extracting the vmmon source from "/usr/lib/vmware/modules/source/vmmon.tar".
2014-04-19T01:38:47.523+09:00| vthread-3| I120: Successfully extracted the vmmon source.
2014-04-19T01:38:47.523+09:00| vthread-3| I120: Building module with command "/usr/bin/make -j8 -C /tmp/modconfig-F5PnbL/vmmon-only auto-build HEADER_DIR=/lib/modules/3.13.0-24-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no"
2014-04-19T01:39:05.202+09:00| vthread-3| I120: Successfully built vmmon.  Module is currently at "/tmp/modconfig-F5PnbL/vmmon.o".
2014-04-19T01:39:05.202+09:00| vthread-3| I120: Found the vmmon symvers file at "/tmp/modconfig-F5PnbL/vmmon-only/Module.symvers".
2014-04-19T01:39:05.202+09:00| vthread-3| I120: Installing vmmon from /tmp/modconfig-F5PnbL/vmmon.o to /lib/modules/3.13.0-24-generic/misc/vmmon.ko.
2014-04-19T01:39:05.241+09:00| vthread-3| I120: Registering file "/lib/modules/3.13.0-24-generic/misc/vmmon.ko".
2014-04-19T01:39:11.692+09:00| vthread-3| I120: "/usr/lib/vmware-installer/2.1.0/vmware-installer" exited with status 0.
2014-04-19T01:39:11.970+09:00| vthread-3| I120: Registering file "/usr/lib/vmware/symvers/vmmon-3.13.0-24-generic".
2014-04-19T01:39:12.374+09:00| vthread-3| I120: "/usr/lib/vmware-installer/2.1.0/vmware-installer" exited with status 0.
2014-04-19T01:39:12.376+09:00| vthread-3| I120: Setting destination path for vmnet to "/lib/modules/3.13.0-24-generic/misc/vmnet.ko".
2014-04-19T01:39:12.376+09:00| vthread-3| I120: Extracting the vmnet source from "/usr/lib/vmware/modules/source/vmnet.tar".
2014-04-19T01:39:12.483+09:00| vthread-3| I120: Successfully extracted the vmnet source.
2014-04-19T01:39:12.483+09:00| vthread-3| I120: Building module with command "/usr/bin/make -j8 -C /tmp/modconfig-F5PnbL/vmnet-only auto-build HEADER_DIR=/lib/modules/3.13.0-24-generic/build/include CC=/usr/bin/gcc IS_GCC_3=no"
2014-04-19T01:39:17.245+09:00| vthread-3| W110: Failed to build vmnet.  Failed to execute the build command.

ビルドが通るようにソースコードを修正する

  ソースコードを修正し、ビルドが通るようにします。

  1.修正のポイント

    修正のポイントは、「vmnet.tar」の「filter.c」に以下のパッチを適用します。

205a206
> #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
206a208,210
> #else
> VNetFilterHookFn(const struct nf_hook_ops *ops,        // IN:
> #endif
255c259,263
<    transmit = (hooknum == VMW_NF_INET_POST_ROUTING);
---
>    #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
>       transmit = (hooknum == VMW_NF_INET_POST_ROUTING);
>    #else
>       transmit = (ops->hooknum == VMW_NF_INET_POST_ROUTING);
>    #endif

  2.パッチの作成

    「テキストエディター」を起動し、上記のパッチをコピー&ペーストします。


  3.パッチの保存

    ファイルを保存し、パッチを保存します。
    ここでは例として「~/VMPatch/filter.c.diff」に保存しました。


    パッチの作成は以上で完了です。

  4.アーカイブのコピー

    次にパッチを当てるソースコードを用意します。

    カーネルモジュールのソースコードのアーカイブを、パッチを保存したフォルダーにコピーします。
    アーカイブは「/usr/lib/vmware/modules/source/vmnet.tar」です。


  5.コピー完了

    以下のようにコピーします。


  6.ソースコードの展開

    アーカイブを「アーカイブマネージャー」で開き、アーカイブ内の「/vmnet-only/filter.c」を、パッチを保存したフォルダーに展開します。


  7.ソースコードの展開完了

    以下のように「filter.c」を展開します。


    以上でパッチを当てるソースコードの準備は完了です。

  8.カレントディレクトリーの移動

    ソースコードにパッチを適用します。
    「端末」を起動し、カレントディレクトリーをパッチを保存したフォルダーに設定します。


    「端末」が起動したら、「cd 」と入力し、「Nautilus」からパッチを保存したフォルダーを「端末」にドラッグ&ドロップすると楽です。

  9.パッチの適用

    以下のコマンドを実行し、パッチを適用します。

patch filter.c < filter.c.diff

  10.パッチの適用完了

    パッチの適用が完了すると、以下のようにコマンドの実行結果が表示されます。


    以上でパッチの適用は完了です。

  11.ソースコードをアーカイブに反映する

    パッチを当てたソースコードを、コピーした「~/VMPatch/vmnet.tar」に反映します。
    「Nautilus」から上記でパッチを当てた「filter.c」を、「アーカイブマネージャー」の「/vmnet-only」にドラッグ&ドロップします。


  12.ソースコードの反映完了

    アーカイブにソースコードが反映されると、以下のように「filter.c」の「更新日時」が変更されます。


    以上でアーカイブへの反映は完了です。

  13.rootでNautilusを起動する

    アーカイブを元の場所にコピーするため、「Nautilus」を「root」で起動します。
    以下のコマンドを実行します。

sudo -i nautilus

  14.バックアップの作成

    「Nautilus」が「root」で起動したら、まずオリジナルのバックアップを作成しておきます。

    「/usr/lib/vmware/modules/source」フォルダーに移動します。
    「vmnet.tar」をコピーし、その場に貼り付けます。

    ファイル名は適当な名前に変えておきます。


    バックアップの作成は以上で完了です。

  15.アーカイブのコピー

    パッチを適用したアーカイブをコピーします。
    ここでは「~/VMPatch/vmnet.tar」をコピーします。


  16.アーカイブの貼付け

    「/usr/lib/vmware/modules/source」フォルダーにコピーした「~/VMPatch/vmnet.tar」を貼り付けます。

    以下のように確認画面が表示されるので、「置き換える」ボタンをクリックします。


    以上で一連の作業は完了です。

  17.カーネルモジュールのビルド開始

    「VMware Player」を起動します。
    以下のようにカーネルモジュールをビルドを行うか確認画面が表示されるので、「Install」ボタンをクリックします。


  18.カーネルモジュールのビルド

    以下のようにカーネルモジュールのビルドが始まります。


  18.カーネルモジュールのビルド開始

    カーネルモジュールのビルドが完了すると、「VMware Player」のメイン画面が表示されます。



    以上で完了です。

ネットワークインターフェースの確認

  「ネットワークツール」を起動し、「VMware Player」の仮想ネットワークインターフェースが認識されているか確認しておくと良いでしょう。

  vmnet8

    IPアドレスが割り振られているか確認します。


  vmnet1

    IPアドレスが割り振られているか確認します。


関連コンテンツ
同一カテゴリーの記事
コメント
オプション