说明
本脚本仅作为学习使用,请勿用于任何商业用途。
本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。
今天更新操作系统,更新完又出现了VMware-workstation无法启动的情况!启动后和上次一样提示kernel module updater,然后点击install提示在安装vmnet和vmmon 然而一会就有个失败的日志提示,打开看和上次的差不多。内容和具体原因可参见上一篇博文:https://www.cnblogs.com/4geek/p/11511592.html
这次不想再像上次那样一步一步的去重新编译再替换,所以在想有没有什么办法可以在每次更新系统后出现同样问题时一键就能顺利打开VMware workstation呢?于是乎又是一顿google操作最终找见了方法。在这里记录下来,依然是为了方便踩入坑的你!
[Toc]
A【参考文献】
翻了很多“文献”,很多社区都有被墙,这里就拿vmware官方的为列吧:https://communities.vmware.com/thread/609330
B【创建脚本】
1 ⚡ root@F0rGeEk ~ touch vmware-update.sh 2 ⚡ root@F0rGeEk ~ vi vmware-update.sh 3 #!/bin/bash 4 VMWARE_VERSION=workstation-15.5.1 5 TMP_FOLDER=/tmp/patch-vmware 6 rm -fdr $TMP_FOLDER 7 mkdir -p $TMP_FOLDER 8 cd $TMP_FOLDER 9 git clone https://github.com/mkubecek/vmware-host-modules.git10 cd $TMP_FOLDER/vmware-host-modules11 git checkout $VMWARE_VERSION12 git fetch13 make14 sudo make install15 sudo rm /usr/lib/vmware/lib/libz.so.1/libz.so.116 sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.117 sudo /etc/init.d/vmware restart18 :wq
脚本可以直接前往Gitee下载:为极客而生(https://gitee.com/forgeek/VMware_update.git)
其中“VMWARE_VERSION=workstation-15.5.1”,这里的版本号可以通过vmware-installer -l来查看。如果您的版本和我的不一样,是必须要修改以下脚本中的版本号。
1 ⚡ root@F0rGeEk ~ vmware-installer -l2 Product Name Product Version 3 ==================== ====================4 vmware-workstation 15.5.1.15018445 5 ⚡ root@F0rGeEk ~
C【执行脚本】
1 ⚡ root@F0rGeEk ~ bash vmware-update.sh 2 Cloning into 'vmware-host-modules'... 3 remote: Enumerating objects: 23, done. 4 remote: Counting objects: 100% (23/23), done. 5 remote: Compressing objects: 100% (23/23), done. 6 remote: Total 1701 (delta 19), reused 1 (delta 0), pack-reused 1678 7 Receiving objects: 100% (1701/1701), 887.90 KiB | 17.00 KiB/s, done. 8 Resolving deltas: 100% (1401/1401), done. 9 Branch 'workstation-15.5.1' set up to track remote branch 'workstation-15.5.1' from 'origin'.10 Switched to a new branch 'workstation-15.5.1'11 fatal: unable to access 'https://github.com/mkubecek/vmware-host-modules.git/': GnuTLS recv error (-54): Error in the pull function.12 make -C vmmon-only 13 make[1]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'14 Using kernel build system.15 make -C /lib/modules/5.4.0-kali2-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \16 MODULEBUILDDIR= modules17 make[2]: Entering directory '/usr/src/linux-headers-5.4.0-kali2-amd64'18 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driverLog.o19 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driver.o20 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/hostif.o21 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/memtrack.o22 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/apic.o23 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/statVarsVmmon.o24 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/vmx86.o25 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/sharedAreaVmmon.o26 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/cpuid.o27 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/task.o28 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/comport.o29 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/phystrack.o30 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmcore/moduleloop.o31 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/monLoaderVmmon.o32 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/monLoader.o33 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/vmmblob.o34 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/bootstrap.o35 LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.o36 Building modules, stage 2.37 MODPOST 1 modules38 CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.mod.o39 LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.ko40 make[2]: Leaving directory '/usr/src/linux-headers-5.4.0-kali2-amd64'41 make -C $PWD SRCROOT=$PWD/. \42 MODULEBUILDDIR= postbuild43 make[2]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'44 make[2]: 'postbuild' is up to date.45 make[2]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'46 cp -f vmmon.ko ./../vmmon.o47 make[1]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'48 make -C vmnet-only 49 make[1]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'50 Using kernel build system.51 make -C /lib/modules/5.4.0-kali2-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \52 MODULEBUILDDIR= modules53 make[2]: Entering directory '/usr/src/linux-headers-5.4.0-kali2-amd64'54 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/driver.o55 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/hub.o56 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/userif.o57 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/netif.o58 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/bridge.o59 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/procfs.o60 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac_compat.o61 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac.o62 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetEvent.o63 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetUserListener.o64 LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.o65 Building modules, stage 2.66 MODPOST 1 modules67 CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.mod.o68 LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.ko69 make[2]: Leaving directory '/usr/src/linux-headers-5.4.0-kali2-amd64'70 make -C $PWD SRCROOT=$PWD/. \71 MODULEBUILDDIR= postbuild72 make[2]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'73 make[2]: 'postbuild' is up to date.74 make[2]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'75 cp -f vmnet.ko ./../vmnet.o76 make[1]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'77 install -D -t /lib/modules/5.4.0-kali2-amd64/misc vmmon-only/vmmon.ko vmnet-only/vmnet.ko78 strip --strip-debug /lib/modules/5.4.0-kali2-amd64/misc/vmmon.ko /lib/modules/5.4.0-kali2-amd64/misc/vmnet.ko79 if test -z ""; then /sbin/depmod -a 5.4.0-kali2-amd64; fi80 rm: cannot remove '/usr/lib/vmware/lib/libz.so.1/libz.so.1': No such file or directory81 vmware-update.sh: line 15: /usr/lib/vmware/lib/libz.so.1/libz.so.1: No such file or directory82 Stopping VMware services:83 VMware Authentication Daemon done84 VM communication interface socket family done85 Virtual machine communication interface done86 Virtual machine monitor done87 Blocking file system done88 Starting VMware services:89 Virtual machine monitor done90 Virtual machine communication interface done91 VM communication interface socket family done92 Blocking file system done93 Virtual ethernet done94 VMware Authentication Daemon done95 Shared Memory Available done
D【验证】
最后就是见证奇迹了!以后只要更新系统出现类似问题,只需要重新运行一下这个脚本就可以很方便的解决这个问题了!
还没有人抢沙发呢~