說明:
本文相關內容僅作為學習使用,請勿用於任何商業用途,更不能用於任何違法行為!
本文為原創,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接和本聲明。
原文鏈接:https://www.cnblogs.com/4geek/p/13704833.html
問題描述
上周比較閑升級了Kali內核從5.7.0升級到5.8.0,更新完又出現了VMware-workstation無法啟動的情況!點擊VMware圖標后無任何響應無任何報錯,本以為是之前更新造作系統導致vmmon-only無法啟動造成。故直接運行之前寫好的腳本,腳本內容和具體執行方法可參見上一篇博文:永久解決Linux更新后Vmware無法打開提示“kernel module updater”
排查過程
首先運行了升級腳本,結果發現腳本中有報錯信息:
⚡ ~ ./vmware-update.sh
Cloning into 'vmware-host-modules'...
remote: Enumerating objects: 349, done.
remote: Counting objects: 100% (349/349), done.
remote: Compressing objects: 100% (239/239), done.
remote: Total 2333 (delta 217), reused 208 (delta 110), pack-reused 1984
Receiving objects: 100% (2333/2333), 1.21 MiB | 804.00 KiB/s, done.
Resolving deltas: 100% (1877/1877), done.
Branch 'workstation-15.5.1' set up to track remote branch 'workstation-15.5.1' from 'origin'.
Switched to a new branch 'workstation-15.5.1'
*-----------------------------------------------------------------------------
* Branch workstation-15.5.1 has been retired on 2020-08-20 and has not been
* receiving any updates since. Please switch to latest 15.5.x version
* available.
*
* Latest kernel version this branch is intended to work with is 5.7.
*-----------------------------------------------------------------------------
從上面的信息可以看出,是因為我安裝的VMware Workstion版本為15.5.1,並且在2020-8-20日就停止維護了。最下面一行也說明了15.5.x最后一次更新僅僅支持5.7的內核。得到這些信息就分析出了無法啟動的原因,接下來就是如何最小變動的情況下升級VMware Workstion。
升級VMware Workstion
首先前往VMware官網下載最新版本,官方下載地址。
下載下來的是bundle后綴安裝文件,需要通過chmod +x賦予執行權限。然后直接在終端中執行即可,執行過程如下:
⚡ Soft-linux ./VMware-Workstation-Full-16.0.0-16894299.x86_64.bundle
Extracting VMware Installer...done.
[######################################################################] 100%
The system is up to date.
這種升級方式需要注意:舊版本的VMware無需卸載,直接安裝新版本即可。這樣可以保持VMware原有版本相關的配置不變,包括vmnet的配置也都會保留。更新完成之后如果直接打開會提示vmmon相關服務沒有升級的提醒,這里忘了截圖遇到這個問題只需要修改我們之前的腳本並運行即可。腳本只需要將其中的“VMWARE_VERSION=workstation-15.5.1”修改為”VMWARE_VERSION=workstation-16.0.0“。執行過程如下:
⚡ ~ vmware-installer -l
Product Name Product Version
==================== ====================
vmware-workstation 16.0.0.16894299
⚡ ~ ./vmware-update.sh
Cloning into 'vmware-host-modules'...
remote: Enumerating objects: 349, done.
remote: Counting objects: 100% (349/349), done.
remote: Compressing objects: 100% (239/239), done.
remote: Total 2333 (delta 217), reused 208 (delta 110), pack-reused 1984
Receiving objects: 100% (2333/2333), 1.21 MiB | 751.00 KiB/s, done.
Resolving deltas: 100% (1877/1877), done.
Branch 'workstation-16.0.0' set up to track remote branch 'workstation-16.0.0' from 'origin'.
Switched to a new branch 'workstation-16.0.0'
make -C vmmon-only
make[1]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'
Using kernel build system.
make -C /lib/modules/5.8.0-kali1-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[2]: Entering directory '/usr/src/linux-headers-5.8.0-kali1-amd64'
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driver.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/driverLog.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/linux/hostif.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/apic.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/comport.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/cpuid.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/crosspage.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/memtrack.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/phystrack.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/sharedAreaVmmon.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/statVarsVmmon.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/task.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/common/vmx86.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmcore/moduleloop.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/bootstrap.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/monLoader.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/monLoaderVmmon.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/bootstrap/vmmblob.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.o
MODPOST /tmp/patch-vmware/vmware-host-modules/vmmon-only/Module.symvers
CC [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.mod.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmmon-only/vmmon.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.8.0-kali1-amd64'
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[2]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'
make[2]: 'postbuild' is up to date.
make[2]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make[1]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmmon-only'
make -C vmnet-only
make[1]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'
Using kernel build system.
make -C /lib/modules/5.8.0-kali1-amd64/build/include/.. M=$PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= modules
make[2]: Entering directory '/usr/src/linux-headers-5.8.0-kali1-amd64'
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/driver.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/hub.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/userif.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/netif.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/bridge.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/procfs.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac_compat.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/smac.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetEvent.o
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vnetUserListener.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.o
MODPOST /tmp/patch-vmware/vmware-host-modules/vmnet-only/Module.symvers
CC [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.mod.o
LD [M] /tmp/patch-vmware/vmware-host-modules/vmnet-only/vmnet.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.8.0-kali1-amd64'
make -C $PWD SRCROOT=$PWD/. \
MODULEBUILDDIR= postbuild
make[2]: Entering directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'
make[2]: 'postbuild' is up to date.
make[2]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'
cp -f vmnet.ko ./../vmnet.o
make[1]: Leaving directory '/tmp/patch-vmware/vmware-host-modules/vmnet-only'
install -D -t /lib/modules/5.8.0-kali1-amd64/misc vmmon-only/vmmon.ko vmnet-only/vmnet.ko
strip --strip-debug /lib/modules/5.8.0-kali1-amd64/misc/vmmon.ko /lib/modules/5.8.0-kali1-amd64/misc/vmnet.ko
if test -z ""; then /sbin/depmod -a 5.8.0-kali1-amd64; fi
rm: cannot remove '/usr/lib/vmware/lib/libz.so.1/libz.so.1': No such file or directory
./vmware-update.sh: line 15: /usr/lib/vmware/lib/libz.so.1/libz.so.1: No such file or directory
Stopping VMware services:
VMware Authentication Daemon done
Virtual machine monitor done
Starting VMware services:
Virtual machine monitor done
Virtual machine communication interface done
VM communication interface socket family done
Virtual ethernet done
VMware Authentication Daemon done
激活VMware
上述過程都結束后,新版本的VMware便安裝好了。這時點擊VMware圖標,根據提示選擇同意相關license要求,最后輸入許可證密鑰即可完成新版本VMware激活。