【Kali】Kali Linux更新5.2.9后 Vmware Workstation無法正常啟動


說明
本腳本僅作為學習使用,請勿用於任何商業用途。
本文為原創,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接和本聲明。

  最近更新了Kali后發現一個奇葩的問題,我的虛擬機不能正常使用了。啟動后會提示無法正常啟動,並有個彈窗提示錯誤日志在/tmp/vmware-root/vmware-18363.log

於是打開看了看,主要報錯信息如下:

 1 2019-09-12T10:12:22.318+08:00| host-18363| I125: Log for VMware Workstation pid=18363 version=15.1.0 build=build-13591040 option=Release
 2 2019-09-12T10:12:22.318+08:00| host-18363| I125: The process is 64-bit.
 3 2019-09-12T10:12:22.318+08:00| host-18363| I125: Host codepage=UTF-8 encoding=UTF-8
 4 2019-09-12T10:12:22.318+08:00| host-18363| I125: Host is Linux 5.2.0-kali2-amd64 Kali GNU/Linux Rolling
 5 2019-09-12T10:12:22.318+08:00| host-18363| I125: DictionaryLoad: Cannot open file "/usr/lib/vmware/settings": No such file or directory.
 6 2019-09-12T10:12:22.318+08:00| host-18363| I125: [msg.dictionary.load.openFailed] Cannot open file "/usr/lib/vmware/settings": No such file or directory.
 7 2019-09-12T10:12:22.318+08:00| host-18363| I125: PREF Optional preferences file not found at /usr/lib/vmware/settings. Using default values.
 8 2019-09-12T10:12:22.318+08:00| host-18363| I125: DictionaryLoad: Cannot open file "/root/.vmware/config": No such file or directory.
 9 2019-09-12T10:12:22.318+08:00| host-18363| I125: [msg.dictionary.load.openFailed] Cannot open file "/root/.vmware/config": No such file or directory.
10 2019-09-12T10:12:22.318+08:00| host-18363| I125: PREF Optional preferences file not found at /root/.vmware/config. Using default values.
11 2019-09-12T10:12:22.351+08:00| host-18363| W115: Logging to /tmp/vmware-root/vmware-18363.log
12 2019-09-12T10:12:22.383+08:00| host-18363| I125: Obtaining info using the running kernel.
13 2019-09-12T10:12:22.383+08:00| host-18363| I125: Created new pathsHash.
14 2019-09-12T10:12:22.383+08:00| host-18363| I125: Setting header path for 5.2.0-kali2-amd64 to "/lib/modules/5.2.0-kali2-amd64/build/include".
15 2019-09-12T10:12:22.383+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
16 2019-09-12T10:12:22.383+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
17 2019-09-12T10:12:22.383+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
18 2019-09-12T10:12:22.383+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
19 2019-09-12T10:12:22.387+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
20 2019-09-12T10:12:22.388+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
21 2019-09-12T10:12:22.507+08:00| host-18363| I125: found symbol version file /lib/modules/5.2.0-kali2-amd64/build/Module.symvers
22 2019-09-12T10:12:22.507+08:00| host-18363| I125: Reading symbol versions from /lib/modules/5.2.0-kali2-amd64/build/Module.symvers.
23 2019-09-12T10:12:22.521+08:00| host-18363| I125: Read 20774 symbol versions
24 2019-09-12T10:12:22.521+08:00| host-18363| I125: Reading in info for the vmmon module.
25 2019-09-12T10:12:22.521+08:00| host-18363| I125: Reading in info for the vmnet module.
26 2019-09-12T10:12:22.521+08:00| host-18363| I125: Reading in info for the vmci module.
27 2019-09-12T10:12:22.521+08:00| host-18363| I125: Reading in info for the vsock module.
28 2019-09-12T10:12:22.521+08:00| host-18363| I125: Setting vsock to depend on vmci.
29 2019-09-12T10:12:22.521+08:00| host-18363| I125: Invoking modinfo on "vmmon".
30 2019-09-12T10:12:22.524+08:00| host-18363| I125: "/sbin/modinfo" exited with status 256.
31 2019-09-12T10:12:22.524+08:00| host-18363| I125: Invoking modinfo on "vmnet".
32 2019-09-12T10:12:22.525+08:00| host-18363| I125: "/sbin/modinfo" exited with status 0.
33 2019-09-12T10:12:22.525+08:00| host-18363| I125: Invoking modinfo on "vmci".
34 2019-09-12T10:12:22.527+08:00| host-18363| I125: "/sbin/modinfo" exited with status 256.
35 2019-09-12T10:12:22.527+08:00| host-18363| I125: Invoking modinfo on "vsock".
36 2019-09-12T10:12:22.529+08:00| host-18363| I125: "/sbin/modinfo" exited with status 0.
37 2019-09-12T10:12:22.538+08:00| host-18363| I125: to be installed: vmmon status: 0
38 2019-09-12T10:12:22.546+08:00| host-18363| I125: Obtaining info using the running kernel.
39 2019-09-12T10:12:22.546+08:00| host-18363| I125: Setting header path for 5.2.0-kali2-amd64 to "/lib/modules/5.2.0-kali2-amd64/build/include".
40 2019-09-12T10:12:22.546+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
41 2019-09-12T10:12:22.546+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
42 2019-09-12T10:12:22.546+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
43 2019-09-12T10:12:22.546+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
44 2019-09-12T10:12:22.551+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
45 2019-09-12T10:12:22.551+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
46 2019-09-12T10:12:22.669+08:00| host-18363| I125: found symbol version file /lib/modules/5.2.0-kali2-amd64/build/Module.symvers
47 2019-09-12T10:12:22.669+08:00| host-18363| I125: Reading symbol versions from /lib/modules/5.2.0-kali2-amd64/build/Module.symvers.
48 2019-09-12T10:12:22.683+08:00| host-18363| I125: Read 20774 symbol versions
49 2019-09-12T10:12:22.689+08:00| host-18363| I125: Kernel header path retrieved from FileEntry: /lib/modules/5.2.0-kali2-amd64/build/include
50 2019-09-12T10:12:22.689+08:00| host-18363| I125: Update kernel header path to /lib/modules/5.2.0-kali2-amd64/build/include
51 2019-09-12T10:12:22.689+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
52 2019-09-12T10:12:22.689+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
53 2019-09-12T10:12:22.689+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
54 2019-09-12T10:12:22.689+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
55 2019-09-12T10:12:22.694+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
56 2019-09-12T10:12:22.694+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
57 2019-09-12T10:12:22.695+08:00| host-18363| I125: Found compiler at "/usr/bin/gcc"
58 2019-09-12T10:12:22.697+08:00| host-18363| I125: Got gcc version "9".
59 2019-09-12T10:12:22.697+08:00| host-18363| I125: GCC major version 9 does not match Kernel GCC major version 8.
60 2019-09-12T10:12:22.697+08:00| host-18363| I125: Attempting to use a compiler at location "/usr/bin/gcc-8".
61 2019-09-12T10:12:22.699+08:00| host-18363| I125: Got gcc version "8".
62 2019-09-12T10:12:22.700+08:00| host-18363| I125: The GCC version matches the kernel GCC minor version like a glove.
63 2019-09-12T10:12:22.702+08:00| host-18363| I125: Got gcc version "8".
64 2019-09-12T10:12:22.702+08:00| host-18363| I125: The GCC version matches the kernel GCC minor version like a glove.
65 2019-09-12T10:12:22.703+08:00| host-18363| I125: Trying to find a suitable PBM set for kernel "5.2.0-kali2-amd64".
66 2019-09-12T10:12:22.703+08:00| host-18363| I125: No matching PBM set was found for kernel "5.2.0-kali2-amd64".
67 2019-09-12T10:12:22.703+08:00| host-18363| I125: The GCC version matches the kernel GCC minor version like a glove.
68 2019-09-12T10:12:22.703+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
69 2019-09-12T10:12:22.703+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
70 2019-09-12T10:12:22.703+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
71 2019-09-12T10:12:22.703+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
72 2019-09-12T10:12:22.708+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
73 2019-09-12T10:12:22.708+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
74 2019-09-12T10:12:22.708+08:00| host-18363| I125: The GCC version matches the kernel GCC minor version like a glove.
75 2019-09-12T10:12:22.708+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
76 2019-09-12T10:12:22.708+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
77 2019-09-12T10:12:22.708+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
78 2019-09-12T10:12:22.708+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
79 2019-09-12T10:12:22.713+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
80 2019-09-12T10:12:22.713+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
81 2019-09-12T10:12:22.713+08:00| host-18363| I125: Using temp dir "/tmp".
82 2019-09-12T10:12:22.715+08:00| host-18363| I125: Obtaining info using the running kernel.
83 2019-09-12T10:12:22.715+08:00| host-18363| I125: Setting header path for 5.2.0-kali2-amd64 to "/lib/modules/5.2.0-kali2-amd64/build/include".
84 2019-09-12T10:12:22.715+08:00| host-18363| I125: Validating path "/lib/modules/5.2.0-kali2-amd64/build/include" for kernel release "5.2.0-kali2-amd64".
85 2019-09-12T10:12:22.715+08:00| host-18363| I125: Failed to find /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h
86 2019-09-12T10:12:22.715+08:00| host-18363| I125: /lib/modules/5.2.0-kali2-amd64/build/include/linux/version.h not found, looking for generated/uapi/linux/version.h instead.
87 2019-09-12T10:12:22.715+08:00| host-18363| I125: using /usr/bin/gcc-8 for preprocess check
88 2019-09-12T10:12:22.720+08:00| host-18363| I125: Preprocessed UTS_RELEASE, got value "5.2.0-kali2-amd64".
89 2019-09-12T10:12:22.720+08:00| host-18363| I125: The header path "/lib/modules/5.2.0-kali2-amd64/build/include" for the kernel "5.2.0-kali2-amd64" is valid.  Whoohoo!
90 2019-09-12T10:12:22.840+08:00| host-18363| I125: found symbol version file /lib/modules/5.2.0-kali2-amd64/build/Module.symvers
91 2019-09-12T10:12:22.840+08:00| host-18363| I125: Reading symbol versions from /lib/modules/5.2.0-kali2-amd64/build/Module.symvers.
92 2019-09-12T10:12:22.854+08:00| host-18363| I125: Read 20774 symbol versions
93 2019-09-12T10:12:22.854+08:00| host-18363| I125: Invoking modinfo on "vmmon".
94 2019-09-12T10:12:22.856+08:00| host-18363| I125: "/sbin/modinfo" exited with status 256.
95 2019-09-12T10:12:23.707+08:00| host-18363| I125: Setting destination path for vmmon to "/lib/modules/5.2.0-kali2-amd64/misc/vmmon.ko".
96 2019-09-12T10:12:23.707+08:00| host-18363| I125: Extracting the vmmon source from "/usr/lib/vmware/modules/source/vmmon.tar".
97 2019-09-12T10:12:23.720+08:00| host-18363| I125: Successfully extracted the vmmon source.
98 2019-09-12T10:12:23.720+08:00| host-18363| I125: Building module with command "/usr/bin/make -j8 -C /tmp/modconfig-1sA2Ln/vmmon-only auto-build HEADER_DIR=/lib/modules/5.2.0-kali2-amd64/build/include CC=/usr/bin/gcc-8 IS_GCC_3=no"
99 2019-09-12T10:12:25.199+08:00| host-18363| W115: Failed to build vmmon. Failed to execute the build command.

  從上面Failed的信息看出,大概問題是vmmon和vmnet這兩個模塊出問題了。剛開始還以為是頭文件出問題了,於是通過apt-get install linux-headers-$(uname -r)進行安裝,但是安裝后依然爆同樣的錯誤!於是乎一頓google發現原來這是Linux Kernel V4以來,vmware一直沒有解決的一個bug!這么大個廠商既然支持linux為何不去更新呢,着實想不通!好在開源社區解決了這個問題,開源社區提供的方法貌似解決了Vmware在所有Linux上比v4更新的所有內核的問題。主要方法是替換vmware-source中相應的vmmon和vmnet文件使其重新構建並正常工作。在這里也希望將該方法分享出來,方便踏進這個坑的伙伴快速爬出來~

  具體方法如下:

  1. 查看自己的vmware版本
    vmware -v
    ⚡ root@F0rGeEk  ~  vmware -v VMware Workstation 15.1.0 build-13591040 ⚡ root@F0rGeEk  ~  uname -a Linux F0rGeEk 5.2.0-kali2-amd64 #1 SMP Debian 5.2.9-2kali1 (2019-08-22) x86_64 GNU/Linux ⚡ root@F0rGeEk  ~  

     

  2. clone社區的補丁文件
    git clone -b workstation-15.1.0 https://github.com/mkubecek/vmware-host-modules.git
    ⚡ root@F0rGeEk  ~  git clone -b workstation-15.1.0 https://github.com/mkubecek/vmware-host-modules.git
    Cloning into 'vmware-host-modules'...
    remote: Enumerating objects: 71, done.
    remote: Counting objects: 100% (71/71), done.
    remote: Compressing objects: 100% (49/49), done.
    remote: Total 1417 (delta 50), reused 33 (delta 22), pack-reused 1346
    Receiving objects: 100% (1417/1417), 839.58 KiB | 8.00 KiB/s, done.
    Resolving deltas: 100% (1128/1128), done.

     

  3. 替換現有的vmmon和vmnet文件
    tar -cf vmmon.tar vmmon-only tar -cf vmnet.tar vmnet-only
    cp -v vmmon.tar vmnet.tar /usr/lib/vmware/modules/source/
    ⚡ root@F0rGeEk  ~/vmware-host-modules   workstation-15.1.0  tar -cf vmmon.tar vmmon-only
    ⚡ root@F0rGeEk  ~/vmware-host-modules   workstation-15.1.0  ls
    INSTALL  LICENSE  Makefile  README  vmmon-only  vmmon.tar  vmnet-only
    ⚡ root@F0rGeEk  ~/vmware-host-modules   workstation-15.1.0  tar -cf vmnet.tar vmnet-only
    ⚡ root@F0rGeEk  ~/vmware-host-modules   workstation-15.1.0  cp -v vmmon.tar vmnet.tar /usr/lib/vmware/modules/source/
    'vmmon.tar' -> '/usr/lib/vmware/modules/source/vmmon.tar'
    'vmnet.tar' -> '/usr/lib/vmware/modules/source/vmnet.tar'

     

  4. 重構
    vmware-modconfig --console --install-all
    ⚡ root@F0rGeEk  ~/vmware-host-modules   workstation-15.1.0  vmware-modconfig --console --install-all
    [AppLoader] GLib does not have GSettings support.
    Stopping VMware services:
       VMware Authentication Daemon                                        done
       VM communication interface socket family                            done
       Virtual machine communication interface                             done
       Virtual machine monitor                                             done
       Blocking file system                                                done
    make: Entering directory '/tmp/modconfig-kADivb/vmmon-only'
    Using kernel build system.
    /usr/bin/make -C /lib/modules/5.2.0-kali2-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= modules
    make[1]: Entering directory '/usr/src/linux-headers-5.2.0-kali2-amd64'
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/linux/driverLog.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/linux/driver.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/linux/hostif.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/memtrack.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/apic.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/vmx86.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/cpuid.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/task.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/phystrack.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/common/comport.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/vmcore/moduleloop.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/bootstrap/monLoaderVmmon.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/bootstrap/monLoader.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/bootstrap/vmmblob.o
      CC [M]  /tmp/modconfig-kADivb/vmmon-only/bootstrap/bootstrap.o
      LD [M]  /tmp/modconfig-kADivb/vmmon-only/vmmon.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /tmp/modconfig-kADivb/vmmon-only/vmmon.mod.o
      LD [M]  /tmp/modconfig-kADivb/vmmon-only/vmmon.ko
    make[1]: Leaving directory '/usr/src/linux-headers-5.2.0-kali2-amd64'
    /usr/bin/make -C $PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= postbuild
    make[1]: Entering directory '/tmp/modconfig-kADivb/vmmon-only'
    make[1]: 'postbuild' is up to date.
    make[1]: Leaving directory '/tmp/modconfig-kADivb/vmmon-only'
    cp -f vmmon.ko ./../vmmon.o
    make: Leaving directory '/tmp/modconfig-kADivb/vmmon-only'
    make: Entering directory '/tmp/modconfig-kADivb/vmnet-only'
    Using kernel build system.
    /usr/bin/make -C /lib/modules/5.2.0-kali2-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= modules
    make[1]: Entering directory '/usr/src/linux-headers-5.2.0-kali2-amd64'
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/driver.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/hub.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/userif.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/netif.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/bridge.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/procfs.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/smac_compat.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/smac.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/vnetEvent.o
      CC [M]  /tmp/modconfig-kADivb/vmnet-only/vnetUserListener.o
      LD [M]  /tmp/modconfig-kADivb/vmnet-only/vmnet.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /tmp/modconfig-kADivb/vmnet-only/vmnet.mod.o
      LD [M]  /tmp/modconfig-kADivb/vmnet-only/vmnet.ko
    make[1]: Leaving directory '/usr/src/linux-headers-5.2.0-kali2-amd64'
    /usr/bin/make -C $PWD SRCROOT=$PWD/. \
      MODULEBUILDDIR= postbuild
    make[1]: Entering directory '/tmp/modconfig-kADivb/vmnet-only'
    make[1]: 'postbuild' is up to date.
    make[1]: Leaving directory '/tmp/modconfig-kADivb/vmnet-only'
    cp -f vmnet.ko ./../vmnet.o
    make: Leaving directory '/tmp/modconfig-kADivb/vmnet-only'
    Starting VMware services:
       Virtual machine monitor                                             done
       Virtual machine communication interface                             done
       VM communication interface socket family                            done
       Blocking file system                                                done
       Virtual ethernet                                                    done
       VMware Authentication Daemon                                        done
       Shared Memory Available                                             done

    ok,到這里就大功告成了!單擊你的vmware圖標見證奇跡吧!

  5.                                                                                                                                                                                                                   2019-09-12 14:09:13        By:F0rGeEk 

    最近又升級了kali,發現vmware又打不開了!!!原因和本文類似,為了方便,寫了個腳本應對以后內核的更新后vmware無法打開。過程及結果可以移步這篇文章:永久解決Linux更新后Vmware無法打開提示“kernel module updater” 】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM